Revision: 200941
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 12 Oct 2009 10:17:04 +0300
changeset 15 da2ae96f639b
parent 10 afc583cfa176
child 16 5ed53bb58874
child 19 cd501b96611d
Revision: 200941 Kit: 200941
authorisation/userpromptservice/database/test/dumpupsdb/group/dumpupsdb.mmp
authorisation/userpromptservice/database/test/tupsdb/group/tupsdb.mmp
authorisation/userpromptservice/examples/integration/tmsgapp/tmsgapp.mmp
authorisation/userpromptservice/examples/integration/tmsgclient/tmsgclient.mmp
authorisation/userpromptservice/examples/integration/tmsgserver/tmsgserver.mmp
authorisation/userpromptservice/policies/test/dumppolicy/group/dumppolicy.mmp
authorisation/userpromptservice/policies/test/testpolicyevaluator/group/testpolicyevaluator.mmp
authorisation/userpromptservice/policies/test/tupspolicies/group/tupspolicies.mmp
authorisation/userpromptservice/server/source/upsclient/upsclient.mmp
authorisation/userpromptservice/server/source/upsclient/upsmanagement.mmp
authorisation/userpromptservice/server/source/upsserver/upsserver.mmp
authorisation/userpromptservice/server/test/upstest/upstest.cpp
authorisation/userpromptservice/server/test/upstest/upstest.mmp
authorisation/userpromptservice/server/test/upstest/upstestobsif.cpp
authorisation/userpromptservice/server/test/upstest/upstestobsif.mmp
authorisation/userpromptservice/server/test/upstest/upstestobsifoom.cpp
authorisation/userpromptservice/server/test/upstest/upstestobsifoom.mmp
authorisation/userpromptservice/server/test/upstest/upstestoom.cpp
authorisation/userpromptservice/server/test/upstest/upstestoom.mmp
authorisation/userpromptservice/test/group/tups_backuprestore.mmp
authorisation/userpromptservice/test/group/tups_clientapi_sysserver.mmp
authorisation/userpromptservice/test/group/tups_dialogcreator01.mmp
authorisation/userpromptservice/test/group/tups_dialogcreator02.mmp
authorisation/userpromptservice/test/group/tups_dialogcreator03.mmp
authorisation/userpromptservice/test/group/tups_dialogcreator07.mmp
authorisation/userpromptservice/test/group/tups_dialogcreator_always.mmp
authorisation/userpromptservice/test/group/tups_dialogcreator_never.mmp
authorisation/userpromptservice/test/group/tups_dialogcreator_session.mmp
authorisation/userpromptservice/test/group/tups_install.mmp
authorisation/userpromptservice/test/group/tups_nopolicies_server.mmp
authorisation/userpromptservice/test/group/tups_notifier.mmp
authorisation/userpromptservice/test/group/tups_policyevaluator01.mmp
authorisation/userpromptservice/test/group/tups_policyevaluator02.mmp
authorisation/userpromptservice/test/group/tups_policyevaluator03.mmp
authorisation/userpromptservice/test/group/tups_policyevaluator05.mmp
authorisation/userpromptservice/test/group/tups_policyevaluator_noprops.mmp
authorisation/userpromptservice/test/group/tups_system_server01.mmp
authorisation/userpromptservice/test/group/tups_system_server02.mmp
authorisation/userpromptservice/test/group/tups_system_server03.mmp
authorisation/userpromptservice/test/group/tupsinteg.mmp
authorisation/userpromptservice/test/group/tupsinteg_post1.mmp
authorisation/userpromptservice/test/group/tupsinteg_unprotected.mmp
authorisation/userpromptservice/test/include/tups_sys_server.h
authorisation/userpromptservice/test/include/tupstesteractive.h
authorisation/userpromptservice/test/tups/src/tupsclientstep.h
authorisation/userpromptservice/test/tups/src/tupsdbmanagementstep.cpp
authorisation/userpromptservice/test/tups/src/tupsdbmanagementstep.h
authorisation/userpromptservice/test/tups_backuprestore/tbackuprestore.h
authorisation/userpromptservice/test/tups_backuprestore/tbackuprestorestep.h
authorisation/userpromptservice/test/tups_notifier/source/e1111f10.rss
authorisation/userpromptservice/test/tups_system_server/source/tups_sys_server.cpp
contentmgmt/contentaccessfwfordrm/BWINS/caf_v3u.def
contentmgmt/contentaccessfwfordrm/BWINS/cafutils_v2u.def
contentmgmt/contentaccessfwfordrm/EABI/caf_v3u.def
contentmgmt/contentaccessfwfordrm/EABI/cafutils_v2U.DEF
contentmgmt/contentaccessfwfordrm/group/CafUtils.mmp
contentmgmt/contentaccessfwfordrm/group/ContentIterator.mmp
contentmgmt/contentaccessfwfordrm/group/bld.inf
contentmgmt/contentaccessfwfordrm/group/caf.mmp
contentmgmt/contentaccessfwfordrm/group/f32agent.mmp
contentmgmt/contentaccessfwfordrm/group/tcaf.mmp
contentmgmt/contentaccessfwfordrm/group/testagent.mmp
contentmgmt/contentaccessfwfordrm/group/tsmoke.mmp
contentmgmt/contentaccessfwfordrm/inc/agentfactory.h
contentmgmt/contentaccessfwfordrm/inc/agentinterface.h
contentmgmt/contentaccessfwfordrm/inc/attribute.h
contentmgmt/contentaccessfwfordrm/inc/caferr.h
contentmgmt/contentaccessfwfordrm/inc/cafhelper.h
contentmgmt/contentaccessfwfordrm/inc/cafhelperinterface.h
contentmgmt/contentaccessfwfordrm/inc/caftest.iby
contentmgmt/contentaccessfwfordrm/inc/content.h
contentmgmt/contentaccessfwfordrm/inc/data.h
contentmgmt/contentaccessfwfordrm/inc/manager.h
contentmgmt/contentaccessfwfordrm/source/caf/Agentfactory.cpp
contentmgmt/contentaccessfwfordrm/source/caf/attribute.cpp
contentmgmt/contentaccessfwfordrm/source/caf/content.cpp
contentmgmt/contentaccessfwfordrm/source/caf/data.cpp
contentmgmt/contentaccessfwfordrm/source/caf/manager.cpp
contentmgmt/contentaccessfwfordrm/source/caf/resolver.cpp
contentmgmt/contentaccessfwfordrm/source/caf/resolver.h
contentmgmt/contentaccessfwfordrm/source/caf/supplieroutputfile.cpp
contentmgmt/contentaccessfwfordrm/source/cafutils/cafhelper.cpp
contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentcontent.cpp
contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentcontent.h
contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentdata.cpp
contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentdata.h
contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentfactory.cpp
contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentfactory.h
contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentmanager.cpp
contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentmanager.h
contentmgmt/contentaccessfwfordrm/source/f32agent/f32defaultattributes.cpp
contentmgmt/contentaccessfwfordrm/source/f32agent/f32defaultattributes.h
contentmgmt/referencedrmagent/RefTestAgent/BWINS/rtaclient_v3u.def
contentmgmt/referencedrmagent/RefTestAgent/BWINS/rtaparser_v3u.def
contentmgmt/referencedrmagent/RefTestAgent/EABI/rtaParser_v3u.DEF
contentmgmt/referencedrmagent/RefTestAgent/EABI/rtaclient_v3u.DEF
contentmgmt/referencedrmagent/RefTestAgent/RTAParser/wmdrmcontentparser.cpp
contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Client/rtacontent.cpp
contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Client/rtadata.cpp
contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Client/rtamanager.cpp
contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Common/clientserver.h
contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Server/rtacontenthandler.cpp
contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Server/rtacontenthandler.h
contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Server/rtadatahandler.cpp
contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Server/rtadatahandler.h
contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Server/rtamanagerhandler.cpp
contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Server/rtamanagerhandler.h
contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentcontent.cpp
contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentcontent.h
contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentdata.cpp
contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentdata.h
contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentfactory.cpp
contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentfactory.h
contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentmanager.cpp
contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentmanager.h
contentmgmt/referencedrmagent/RefTestAgent/group/RTAclient.mmp
contentmgmt/referencedrmagent/RefTestAgent/group/RTAparser.mmp
contentmgmt/referencedrmagent/RefTestAgent/group/dummytestagent.mmp
contentmgmt/referencedrmagent/RefTestAgent/group/rtautils.mmp
contentmgmt/referencedrmagent/RefTestAgent/group/srautils.mmp
contentmgmt/referencedrmagent/RefTestAgent/inc/reftestagentconstants.h
contentmgmt/referencedrmagent/RefTestAgent/inc/rtaclient.h
contentmgmt/referencedrmagent/RefTestAgent/inc/rtacontent.h
contentmgmt/referencedrmagent/RefTestAgent/inc/rtadata.h
contentmgmt/referencedrmagent/RefTestAgent/inc/rtamanager.h
contentmgmt/referencedrmagent/RefTestAgent/inc/wmdrmcontentparser.h
contentmgmt/referencedrmagent/TestAgent/101FE8F1.rss
contentmgmt/referencedrmagent/TestAgent/TestAgentDrmContent.cpp
contentmgmt/referencedrmagent/TestAgent/TestAgentDrmContent.h
contentmgmt/referencedrmagent/TestAgent/TestAgentFile.cpp
contentmgmt/referencedrmagent/TestAgent/TestAgentFile.h
contentmgmt/referencedrmagent/TestAgent/TestAgentFileInterface.h
contentmgmt/referencedrmagent/TestAgent/readme.txt
contentmgmt/referencedrmagent/TestAgent/testagent.cpp
contentmgmt/referencedrmagent/TestAgent/testagentattributes.cpp
contentmgmt/referencedrmagent/TestAgent/testagentattributes.h
contentmgmt/referencedrmagent/TestAgent/testagentcontent.cpp
contentmgmt/referencedrmagent/TestAgent/testagentcontent.h
contentmgmt/referencedrmagent/TestAgent/testagentdata.cpp
contentmgmt/referencedrmagent/TestAgent/testagentdata.h
contentmgmt/referencedrmagent/TestAgent/testagentfactory.cpp
contentmgmt/referencedrmagent/TestAgent/testagentfactory.h
contentmgmt/referencedrmagent/TestAgent/testagentimportfile.cpp
contentmgmt/referencedrmagent/TestAgent/testagentimportfile.h
contentmgmt/referencedrmagent/TestAgent/testagentmanager.cpp
contentmgmt/referencedrmagent/TestAgent/testagentmanager.h
contentmgmt/referencedrmagent/TestAgent/testagentrightsmanager.cpp
contentmgmt/referencedrmagent/TestAgent/testagentrightsmanager.h
contentmgmt/referencedrmagent/contentiterator/ContentIteratorInterface.h
contentmgmt/referencedrmagent/contentiterator/EmbeddedcontentIterator.h
contentmgmt/referencedrmagent/contentiterator/EmbeddedcontentIteratorBase.h
contentmgmt/referencedrmagent/contentiterator/FileContentIterator.cpp
contentmgmt/referencedrmagent/contentiterator/FileContentIterator.h
contentmgmt/referencedrmagent/contentiterator/FileContentIteratorBase.h
contentmgmt/referencedrmagent/contentiterator/FileContentIteratorbase.cpp
contentmgmt/referencedrmagent/contentiterator/contentIterator.h
contentmgmt/referencedrmagent/contentiterator/contentiterator.cpp
contentmgmt/referencedrmagent/contentiterator/contentiteratordata.cpp
contentmgmt/referencedrmagent/contentiterator/contentiteratordata.h
contentmgmt/referencedrmagent/contentiterator/embeddedcontentiterator.cpp
contentmgmt/referencedrmagent/contentiterator/embeddedcontentiteratorbase.cpp
contentmgmt/referencedrmagent/refcafhelper/bwins/cafhelperu.def
contentmgmt/referencedrmagent/refcafhelper/eabi/cafhelperu.def
contentmgmt/referencedrmagent/refcafhelper/group/bld.inf
contentmgmt/referencedrmagent/refcafhelper/group/refcafhelper.mmp
contentmgmt/referencedrmagent/refcafhelper/inc/refcafhelper.h
contentmgmt/referencedrmagent/refcafhelper/inc/refcafhelper.iby
contentmgmt/referencedrmagent/refcafhelper/source/refcafhelper.cpp
contentmgmt/referencedrmagent/run_tests.bat
contentmgmt/referencedrmagent/tcaf/scripts/Consumerstep.script
contentmgmt/referencedrmagent/tcaf/scripts/ContentStep.script
contentmgmt/referencedrmagent/tcaf/scripts/attributes.ini
contentmgmt/referencedrmagent/tcaf/scripts/cafutils.ini
contentmgmt/referencedrmagent/tcaf/scripts/cafutils.script
contentmgmt/referencedrmagent/tcaf/scripts/consumerstep.ini
contentmgmt/referencedrmagent/tcaf/scripts/consumerstep_64bit.script
contentmgmt/referencedrmagent/tcaf/scripts/contentiteratorstep.ini
contentmgmt/referencedrmagent/tcaf/scripts/contentiteratorstep.script
contentmgmt/referencedrmagent/tcaf/scripts/contentstep.ini
contentmgmt/referencedrmagent/tcaf/scripts/drmfileperformance_armv5.script
contentmgmt/referencedrmagent/tcaf/scripts/managerstep.ini
contentmgmt/referencedrmagent/tcaf/scripts/managerstep.script
contentmgmt/referencedrmagent/tcaf/scripts/nodrmcapsteps.ini
contentmgmt/referencedrmagent/tcaf/scripts/nodrmcapsteps.script
contentmgmt/referencedrmagent/tcaf/scripts/oom.ini
contentmgmt/referencedrmagent/tcaf/scripts/oom.script
contentmgmt/referencedrmagent/tcaf/scripts/performance.ini
contentmgmt/referencedrmagent/tcaf/scripts/performance.script
contentmgmt/referencedrmagent/tcaf/scripts/recognize.ini
contentmgmt/referencedrmagent/tcaf/scripts/recognize.script
contentmgmt/referencedrmagent/tcaf/scripts/rightsmanagerstep.ini
contentmgmt/referencedrmagent/tcaf/scripts/rightsmanagerstep.script
contentmgmt/referencedrmagent/tcaf/scripts/stringattributes.ini
contentmgmt/referencedrmagent/tcaf/scripts/stringattributes.script
contentmgmt/referencedrmagent/tcaf/scripts/supply.ini
contentmgmt/referencedrmagent/tcaf/scripts/supply.script
contentmgmt/referencedrmagent/tcaf/scripts/supply_without_http.script
contentmgmt/referencedrmagent/tcaf/scripts/tcaf.script
contentmgmt/referencedrmagent/tcaf/scripts/tcafhelper.ini
contentmgmt/referencedrmagent/tcaf/scripts/tcafhelper.script
contentmgmt/referencedrmagent/tcaf/scripts/tcafnodrmcap.script
contentmgmt/referencedrmagent/tcaf/scripts/tcafwmdrmsupport.ini
contentmgmt/referencedrmagent/tcaf/scripts/tcafwmdrmsupport.script
contentmgmt/referencedrmagent/tcaf/scripts/testcleanupstep.script
contentmgmt/referencedrmagent/tcaf/source/CafUtilsStep.h
contentmgmt/referencedrmagent/tcaf/source/CafutilsStep.cpp
contentmgmt/referencedrmagent/tcaf/source/CleanupStep.cpp
contentmgmt/referencedrmagent/tcaf/source/CleanupStep.h
contentmgmt/referencedrmagent/tcaf/source/Consumerstep.cpp
contentmgmt/referencedrmagent/tcaf/source/Consumerstep.h
contentmgmt/referencedrmagent/tcaf/source/Contentstep.cpp
contentmgmt/referencedrmagent/tcaf/source/ManagerStep.cpp
contentmgmt/referencedrmagent/tcaf/source/ManagerStep.h
contentmgmt/referencedrmagent/tcaf/source/OomStep.cpp
contentmgmt/referencedrmagent/tcaf/source/RecognizerStep.cpp
contentmgmt/referencedrmagent/tcaf/source/RecognizerStep.h
contentmgmt/referencedrmagent/tcaf/source/RightsManagerStep.cpp
contentmgmt/referencedrmagent/tcaf/source/RightsManagerStep.h
contentmgmt/referencedrmagent/tcaf/source/SupplierStep.cpp
contentmgmt/referencedrmagent/tcaf/source/SupplierStep.h
contentmgmt/referencedrmagent/tcaf/source/bitsetstep.cpp
contentmgmt/referencedrmagent/tcaf/source/bitsetstep.h
contentmgmt/referencedrmagent/tcaf/source/cafserver.cpp
contentmgmt/referencedrmagent/tcaf/source/cafserver.h
contentmgmt/referencedrmagent/tcaf/source/cafstep.cpp
contentmgmt/referencedrmagent/tcaf/source/cafstep.h
contentmgmt/referencedrmagent/tcaf/source/contentstep.h
contentmgmt/referencedrmagent/tcaf/source/namespacestep.cpp
contentmgmt/referencedrmagent/tcaf/source/oomstep.h
contentmgmt/referencedrmagent/tcaf/testdata/Audio.content
contentmgmt/referencedrmagent/tcaf/testdata/Audiomulti.content
contentmgmt/referencedrmagent/tcaf/testdata/InstTest.jad
contentmgmt/referencedrmagent/tcaf/testdata/TestAgentPrivateDir/protected_content.txt
contentmgmt/referencedrmagent/tcaf/testdata/copyfile.txt
contentmgmt/referencedrmagent/tcaf/testdata/dummydata.txt
contentmgmt/referencedrmagent/tcaf/testdata/dummywm.asf
contentmgmt/referencedrmagent/tcaf/testdata/error.gif
contentmgmt/referencedrmagent/tcaf/testdata/good.gif
contentmgmt/referencedrmagent/tcaf/testdata/notes1.txt
contentmgmt/referencedrmagent/tcaf/testdata/performance.ini
contentmgmt/referencedrmagent/tcaf/testdata/picture.jpg
contentmgmt/referencedrmagent/tcaf/testdata/tcaf.ini
contentmgmt/referencedrmagent/tcaf/testdata/test.drm
contentmgmt/referencedrmagent/tcaf/testdata/test.drm.bin
contentmgmt/referencedrmagent/tcaf/testdata/test.txt
contentmgmt/referencedrmagent/tcaf/testdata/uppercasetest.drm
contentmgmt/referencedrmagent/tsmoke/smoke.cpp
contentmgmt/referencedrmagent/tsmoke/smoke.h
crypto/weakcryptospi/examples/mac_api_usage/t_mac_api_usage.mmp
crypto/weakcryptospi/group/dumpcryptoplugin.mmp
crypto/weakcryptospi/group/tasymmetric.mmp
crypto/weakcryptospi/group/tbigint.mmp
crypto/weakcryptospi/group/tcryptospi.mmp
crypto/weakcryptospi/group/thash.mmp
crypto/weakcryptospi/group/tpaddingServer.mmp
crypto/weakcryptospi/group/tpbe.mmp
crypto/weakcryptospi/group/tpkcs5kdf.mmp
crypto/weakcryptospi/group/trandom.mmp
crypto/weakcryptospi/group/tsymmetric.mmp
crypto/weakcryptospi/inc/cryptotests.iby
crypto/weakcryptospi/inc/spi/cryptospidef.h
crypto/weakcryptospi/inc/tcryptospi.iby
crypto/weakcryptospi/test/kms/driver/product/kmskext/kmskext.mmp
crypto/weakcryptospi/test/kms/driver/product/kmsldd/kmsldd.mmp
crypto/weakcryptospi/test/kms/driver/product/kmslddk/kmslddk.mmp
crypto/weakcryptospi/test/kms/driver/test/kmsextrldd/kmsextrldd.mmp
crypto/weakcryptospi/test/kms/driver/test/kmsextrlddk/kmsextrlddk.mmp
crypto/weakcryptospi/test/kms/driver/test/kmslddclient/kmslddclient.mmp
crypto/weakcryptospi/test/kms/driver/test/kmslddtest/kmslddtest.mmp
crypto/weakcryptospi/test/kms/exported_include/kmsclient.h
crypto/weakcryptospi/test/kms/private_include/product/hwkeystore.h
crypto/weakcryptospi/test/kms/private_include/product/kmsldd.h
crypto/weakcryptospi/test/kms/private_include/product/kmslddcommon.h
crypto/weakcryptospi/test/kms/private_include/test/kmsextrldd.h
crypto/weakcryptospi/test/kms/server/product/kmsclient/kmsclient.cpp
crypto/weakcryptospi/test/kms/server/product/kmsclient/kmsclient.mmp
crypto/weakcryptospi/test/kms/server/product/kmsserver/kmsserver.mmp
crypto/weakcryptospi/test/kms/server/product/kmsserver/kmssession.cpp
crypto/weakcryptospi/test/kms/server/test/kmstest/kmstest.cpp
crypto/weakcryptospi/test/kms/server/test/kmstest/kmstest.mmp
crypto/weakcryptospi/test/tasymmetric/tdhvector.cpp
crypto/weakcryptospi/test/tcryptospi/group/bld.inf
crypto/weakcryptospi/test/tcryptospi/group/tecchw-plug-ins.txt
crypto/weakcryptospi/test/tcryptospi/scripts/batchfiles/post_dummyeccplugin.bat
crypto/weakcryptospi/test/tcryptospi/scripts/batchfiles/pre_dummyeccplugin.bat
crypto/weakcryptospi/test/tcryptospi/scripts/te_dummyeccciphertestcases.script
crypto/weakcryptospi/test/tcryptospi/src/dummyecccipherloadstep.cpp
crypto/weakcryptospi/test/tcryptospi/src/dummyecccipherloadstep.h
crypto/weakcryptospi/test/tcryptospi/src/dummyeccsignerloadstep.cpp
crypto/weakcryptospi/test/tcryptospi/src/dummyeccsignerloadstep.h
crypto/weakcryptospi/test/tcryptospi/src/keyexchangeasynchronousgeneralusagestep.h
crypto/weakcryptospi/test/tcryptospi/src/te_cryptospiconversion.cpp
crypto/weakcryptospi/test/tcryptospi/src/te_cryptospiserver.cpp
crypto/weakcryptospi/test/tcryptospi/testdata/dummyeccciphertestcases.ini
crypto/weakcryptospi/test/tpadding/tpaddingNone.h
crypto/weakcryptospi/test/tpadding/tpaddingPKCS1.h
crypto/weakcryptospi/test/tpadding/tpaddingPKCS7.h
crypto/weakcryptospi/test/tpadding/tpaddingSSLv3.h
crypto/weakcryptospi/test/tpadding/tpaddingServer.h
crypto/weakcryptospi/test/tpadding/tpaddingTestSteps.h
crypto/weakcryptospi/test/tplugins/group/tplugin01.mmp
crypto/weakcryptospi/test/tplugins/group/tplugin02.mmp
crypto/weakcryptospi/test/trandom/t_random.mmp
crypto/weakcryptospi/test/tsymmetric/tperformancetest.cpp
cryptomgmtlibs/cryptotokenfw/group/CTFramework.mmp
cryptomgmtlibs/cryptotokenfw/inc_interfaces/MCTKeyStore_v2.h
cryptomgmtlibs/cryptotokenfw/inc_interfaces/mkeystore_v2.h
cryptomgmtlibs/cryptotokenfw/source/ctframework/CTLogger.cpp
cryptomgmtlibs/cryptotokenfw/tframework/TestPlugin.mmp
cryptomgmtlibs/cryptotokenfw/tframework/t_ctframework.mmp
cryptomgmtlibs/cryptotokenfw/tsecdlg/Tsecdlg.h
cryptomgmtlibs/cryptotokenfw/tsecdlg/t_secdlg.mmh
cryptomgmtlibs/securitycommonutils/group/bld.inf
cryptomgmtlibs/securitycommonutils/inc/securityutils.h
cryptomgmtlibs/securitycommonutils/test/group/scstest.mmp
cryptomgmtlibs/securitycommonutils/test/group/scstestclient.mmp
cryptomgmtlibs/securitycommonutils/test/group/scstestserver.mmp
cryptomgmtlibs/securitycommonutils/test/source/scstest/scstest.cpp
cryptomgmtlibs/securitytestfw/group/bld.inf
cryptomgmtlibs/securitytestfw/group/captestframework.mmp
cryptomgmtlibs/securitytestfw/group/captestframeworkhelper.mmp
cryptomgmtlibs/securitytestfw/group/captestframeworkutil.mmp
cryptomgmtlibs/securitytestfw/group/rtestwrapper.mmp
cryptomgmtlibs/securitytestfw/group/sntpclient.mmp
cryptomgmtlibs/securitytestfw/group/t_testhandler2.mmp
cryptomgmtlibs/securitytestfw/group/t_testhandler2extra.mmp
cryptomgmtlibs/securitytestfw/group/testhandler_on_testexecute.mmp
cryptomgmtlibs/securitytestfw/inc/SecurityTests.iby
cryptomgmtlibs/securitytestfw/inc/SecurityTests_sdp_9.5.iby
cryptomgmtlibs/securitytestfw/inc/captestframework.h
cryptomgmtlibs/securitytestfw/inc/captestutility.h
cryptomgmtlibs/securitytestfw/test/autotesting/newdigest.pl
cryptomgmtlibs/securitytestfw/test/autotesting/runcaftests_wmdrm.bat
cryptomgmtlibs/securitytestfw/test/autotesting/runcrypto_wmdrm.bat
cryptomgmtlibs/securitytestfw/test/autotesting/runfiletokens_disableauth_with_wmdrm.bat
cryptomgmtlibs/securitytestfw/test/autotesting/sdp_bld.inf
cryptomgmtlibs/securitytestfw/test/autotesting/test_spec.txt
cryptomgmtlibs/securitytestfw/test/autotesting/test_spec_sdp_9.5.txt
cryptomgmtlibs/securitytestfw/test/autotesting/testsecurity_sdp.bat
cryptomgmtlibs/securitytestfw/test/captestframework/captestframework.h
cryptomgmtlibs/securitytestfw/test/captestframework/captestframeworkhelper.cpp
cryptomgmtlibs/securitytestfw/test/captestframework/captestframeworkserver.h
cryptomgmtlibs/securitytestfw/test/captestframework/captestframeworkstep.cpp
cryptomgmtlibs/securitytestfw/test/captestframework/captestframeworkstep.h
cryptomgmtlibs/securitytestfw/test/captestframework/captestutility.cpp
cryptomgmtlibs/securitytestfw/test/captestframework/captestutility.h
cryptomgmtlibs/securitytestfw/test/rtestwrapper/rtestwrapper.cpp
cryptomgmtlibs/securitytestfw/test/securityframeworktestserver/group/securityframeworktestserver.mmp
cryptomgmtlibs/securitytestfw/test/testhandler2/Thardcodedsetup.h
cryptomgmtlibs/securitytestfw/test/testhandler2/tScriptSetup.h
cryptomgmtlibs/securitytestfw/test/testhandler2/tSyncAction.h
cryptomgmtlibs/securitytestfw/test/testhandler2/tTestSpec.h
cryptomgmtlibs/securitytestfw/test/testhandler2/t_certstoreactionmemfail.h
cryptomgmtlibs/securitytestfw/test/testhandler2/t_message.h
cryptomgmtlibs/securitytestfw/test/testhandler2/t_policy.h
cryptomgmtlibs/securitytestfw/test/testhandler2/t_testaction.h
cryptomgmtlibs/securitytestfw/test/testhandler2/t_testsetup.h
cryptomgmtlibs/securitytestfw/test/testhandler2/tscriptandhardcoded.h
cryptomgmtlibs/securitytestfw/test/testhandler_on_testexecute/step.cpp
cryptomgmtlibs/securitytestfw/test/testutil/group/testutilclient.mmp
cryptomgmtlibs/securitytestfw/test/testutil/group/testutilserver.mmp
cryptomgmtlibs/securityutils/test/trecog/trecog.mmp
cryptoplugins/cryptospiplugins/group/bld.inf
cryptoplugins/cryptospiplugins/inc/cryptospi_testplugins.iby
cryptoplugins/cryptospiplugins/inc/cryptospi_testwmdrmplugins.iby
cryptoplugins/cryptospiplugins/test/dummyecchwplugin/bwins/cryptospihaiu.def
cryptoplugins/cryptospiplugins/test/dummyecchwplugin/bwins/dummyecchwpluginu.def
cryptoplugins/cryptospiplugins/test/dummyecchwplugin/eabi/cryptospihaiu.def
cryptoplugins/cryptospiplugins/test/dummyecchwplugin/eabi/dummyecchwpluginu.def
cryptoplugins/cryptospiplugins/test/dummyecchwplugin/group/bld.inf
cryptoplugins/cryptospiplugins/test/dummyecchwplugin/group/cryptospihai.mmp
cryptoplugins/cryptospiplugins/test/dummyecchwplugin/group/dummyecchwplugin.mmp
cryptoplugins/cryptospiplugins/test/dummyecchwplugin/src/cryptospihai.cpp
cryptoplugins/cryptospiplugins/test/dummyecchwplugin/src/cryptospihai.h
cryptoplugins/cryptospiplugins/test/dummyecchwplugin/src/dummyeccimpl.cpp
cryptoplugins/cryptospiplugins/test/dummyecchwplugin/src/dummyeccimpl.h
cryptoplugins/cryptospiplugins/test/dummyecchwplugin/src/dummyeccsignerimpl.cpp
cryptoplugins/cryptospiplugins/test/dummyecchwplugin/src/dummyeccsignerimpl.h
cryptoplugins/cryptospiplugins/test/dummyecchwplugin/src/pluginconfig.h
cryptoplugins/cryptospiplugins/test/dummyecchwplugin/src/pluginentry.cpp
cryptoplugins/cryptospiplugins/test/dummyecchwplugin/src/pluginentry.h
cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptodriver.cpp
cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptodriver.mmp
cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptoh4.cpp
cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptoh4.mmp
cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptoh4aes.cpp
cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptoh4rng.cpp
cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptojobs.h
cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptoldd.cpp
cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptoldd.mmp
cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/tcrypto.cpp
cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/tcrypto.mmp
cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/crypto_h4_plugin.mmp
cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/h4cipherimpl.cpp
cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/randomimpl.h
cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/rijndaelimpl.h
cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/tasync.cpp
cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/tasync.mmp
cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/temb.cpp
cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/temb.mmp
cryptoservices/asnpkcs/test/tasnpkcs.mmp
cryptoservices/asnpkcs/test/tpkcs8enc/tpkcs8enc.mmp
cryptoservices/certificateandkeymgmt/certstore/certstore.mmp
cryptoservices/certificateandkeymgmt/certstore/unifiedkeystore.cpp
cryptoservices/certificateandkeymgmt/inc/unifiedkeystore_v2.h
cryptoservices/certificateandkeymgmt/pkcs7/pkcs7.mmp
cryptoservices/certificateandkeymgmt/tadditionalstores/tDeviceImmutablestores.mmp
cryptoservices/certificateandkeymgmt/tadditionalstores/tHwSimstores.mmp
cryptoservices/certificateandkeymgmt/tadditionalstores/tHwUiccstores.mmp
cryptoservices/certificateandkeymgmt/tadditionalstores/tHwWimstores.mmp
cryptoservices/certificateandkeymgmt/tadditionalstores/tadditionalstores.mmp
cryptoservices/certificateandkeymgmt/tadditionalstores/tadditionalstoressoftware.mmp
cryptoservices/certificateandkeymgmt/tasn1/tasn1.mmp
cryptoservices/certificateandkeymgmt/tcertcommon/tcertcommon.mmp
cryptoservices/certificateandkeymgmt/tcertcommon/tcertutils.cpp
cryptoservices/certificateandkeymgmt/tcertdump/tcertdump.mmp
cryptoservices/certificateandkeymgmt/tcertstore/tcertstore.mmp
cryptoservices/certificateandkeymgmt/testhwerrstore/testhwerrcertstore.mmp
cryptoservices/certificateandkeymgmt/tpkcs10/tpkcs10v2.mmp
cryptoservices/certificateandkeymgmt/tpkcs12intgrtn/group/tpkcs12libtest.mmp
cryptoservices/certificateandkeymgmt/tpkcs7/tpkcs7.mmp
cryptoservices/certificateandkeymgmt/tpkixcert/taction_build.h
cryptoservices/certificateandkeymgmt/tpkixcert/tactionvalidate.h
cryptoservices/certificateandkeymgmt/tpkixcert/tpkixcert.mmp
cryptoservices/certificateandkeymgmt/tpkixcert/tpkixcertmain.cpp
cryptoservices/certificateandkeymgmt/tpkixcert_tef/group/tpkixcert_tef.mmp
cryptoservices/certificateandkeymgmt/twtlscert/twtlscert.mmp
cryptoservices/certificateandkeymgmt/tx509/tx509.mmp
cryptoservices/filebasedcertificateandkeystores/Inc/CFSTokenTypeClient.h
cryptoservices/filebasedcertificateandkeystores/Inc/filetokenstests.iby
cryptoservices/filebasedcertificateandkeystores/group/bld.inf
cryptoservices/filebasedcertificateandkeystores/group/fstokencli.mmp
cryptoservices/filebasedcertificateandkeystores/source/keystore/Client/CKeyStoreAuthObject.cpp
cryptoservices/filebasedcertificateandkeystores/source/keystore/Client/cfskeystoreclient.cpp
cryptoservices/filebasedcertificateandkeystores/test/bwins/tcryptotokenhaiu.def
cryptoservices/filebasedcertificateandkeystores/test/certtool/certtool.mmp
cryptoservices/filebasedcertificateandkeystores/test/certtool/certtool_commands.h
cryptoservices/filebasedcertificateandkeystores/test/certtool/certtool_list.cpp
cryptoservices/filebasedcertificateandkeystores/test/eabi/tcryptotokenhaiu.def
cryptoservices/filebasedcertificateandkeystores/test/keytool/keytool.mmp
cryptoservices/filebasedcertificateandkeystores/test/tcertapps/tcertapps.mmp
cryptoservices/filebasedcertificateandkeystores/test/tcryptotokenhai/tcryptotokenhai.cpp
cryptoservices/filebasedcertificateandkeystores/test/tcryptotokenhai/tcryptotokenhai.h
cryptoservices/filebasedcertificateandkeystores/test/tcryptotokenhai/tcryptotokenhai.mmp
cryptoservices/filebasedcertificateandkeystores/test/tfiletokens/CServerOOMTestRunner.h
cryptoservices/filebasedcertificateandkeystores/test/tfiletokens/t_filetokens.h
cryptoservices/filebasedcertificateandkeystores/test/tfiletokens/tfiletokens.mmp
cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/client/101faaaa.rss
cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/client/thwkeystore.cpp
cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/client/thwkeystoreclient.cpp
cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/client/thwkeystoreclient.h
cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/client/thwkeystoreclient.mmp
cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/client/thwtokenclient.cpp
cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/client/thwtokenclient.h
cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/client/thwtokentypeclient.cpp
cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/client/thwtokentypeclient.h
cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/common/thwkeystoredefs.h
cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/common/tkeydetails.cpp
cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/common/tkeydetails.h
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/data/hwkeys.dat
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/authenticate_useauth.ini
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/authobjects_v2.ini
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/authobjects_v2.txt
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/authobjects_v2_useauth.txt
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/cancel.ini
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/cancel_useauth.ini
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/createoldkeystore.txt
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/oldserver_newfeature.ini
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/oom.ini
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/oom_useauth.ini
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/reload.ini
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/reload_useauth.ini
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/servoom.ini
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/servoom_useauth.ini
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/testnewkeystore.txt
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/thwkeystore.txt
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore.script
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore2.ini
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore_authentication1.ini
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore_authentication1.script
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore_authentication2.ini
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore_authentication2.script
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore_nouserregistered.ini
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore_useauth.ini
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore_useauth.script
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_addkey.cpp
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_import.cpp
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_keystore_actions.cpp
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_keystore_actions.h
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_keystore_defs.h
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_list.cpp
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_open.cpp
cryptoservices/filebasedcertificateandkeystores/test/tkeystore/tkeystore.mmp
cryptoservices/filebasedcertificateandkeystores/test/ttestplugin/dummykeystore.mmp
cryptoservices/filebasedcertificateandkeystores/test/ttestplugin/dummykeystoreman1.mmp
cryptoservices/filebasedcertificateandkeystores/test/ttestplugin/dummykeystoreman2.mmp
cryptoservices/filebasedcertificateandkeystores/test/ttesttools/ttesttools.mmp
securityanddataprivacytools/securityconfig/conf/securityconfig_2001ea7f.crml
--- a/authorisation/userpromptservice/database/test/dumpupsdb/group/dumpupsdb.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/database/test/dumpupsdb/group/dumpupsdb.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -32,9 +32,8 @@
 USERINCLUDE		../../../../inc
 USERINCLUDE		../../../../inc_private
 
-SYSTEMINCLUDE	/epoc32/include
-SYSTEMINCLUDE	/epoc32/include/test
-SYSTEMINCLUDE	/epoc32/include/libc
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+OS_LAYER_LIBC_SYSTEMINCLUDE
 
 LIBRARY		upsmanagement.lib
 LIBRARY		estlib.lib 
--- a/authorisation/userpromptservice/database/test/tupsdb/group/tupsdb.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/database/test/tupsdb/group/tupsdb.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -35,9 +35,8 @@
 USERINCLUDE		../../../../inc
 USERINCLUDE		../../../../inc_private
 
-SYSTEMINCLUDE	/epoc32/include
-SYSTEMINCLUDE	/epoc32/include/test
-SYSTEMINCLUDE	/epoc32/include/libc
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+OS_LAYER_LIBC_SYSTEMINCLUDE
 
 STATICLIBRARY	tefunit.lib
 
--- a/authorisation/userpromptservice/examples/integration/tmsgapp/tmsgapp.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/examples/integration/tmsgapp/tmsgapp.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -23,7 +23,7 @@
 vendorid	0x70000001
 
 userinclude	    ../inc
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 sourcepath	.
 source		tmsgapp.cpp
--- a/authorisation/userpromptservice/examples/integration/tmsgclient/tmsgclient.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/examples/integration/tmsgclient/tmsgclient.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -23,7 +23,7 @@
 vendorid	0x70000001
 
 userinclude	    ../inc
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 sourcepath	.
 
--- a/authorisation/userpromptservice/examples/integration/tmsgserver/tmsgserver.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/examples/integration/tmsgserver/tmsgserver.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -23,7 +23,7 @@
 vendorid	0x70000001
 
 userinclude	    ../inc
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 sourcepath	.
 source		tmsgserver.cpp
--- a/authorisation/userpromptservice/policies/test/dumppolicy/group/dumppolicy.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/policies/test/dumppolicy/group/dumppolicy.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -24,7 +24,7 @@
 
 userinclude		.
 userinclude		../../../../inc_private
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 sourcepath		../resource
 start resource	examplepolicy.rss
--- a/authorisation/userpromptservice/policies/test/testpolicyevaluator/group/testpolicyevaluator.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/policies/test/testpolicyevaluator/group/testpolicyevaluator.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -29,7 +29,7 @@
 vendorid		0x70000001
 
 userinclude		.
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 sourcepath		../source
 source			testpolicyevaluator.cpp
--- a/authorisation/userpromptservice/policies/test/tupspolicies/group/tupspolicies.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/policies/test/tupspolicies/group/tupspolicies.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -27,10 +27,8 @@
 userinclude		../../../source				// policyreader.h
 userinclude		../../../../inc_private
 
-systeminclude	/epoc32/include
-systeminclude	/epoc32/include/ecom
-systeminclude	/epoc32/include/test
-systeminclude	/epoc32/include/libc
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+OS_LAYER_LIBC_SYSTEMINCLUDE     
 
 sourcepath		../source
 source			activewaiter.cpp tupspolicies.cpp tserviceconfig.cpp 
--- a/authorisation/userpromptservice/server/source/upsclient/upsclient.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/server/source/upsclient/upsclient.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -21,7 +21,7 @@
 
 uid					0x0 0x10283557
 
-systeminclude		/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 userinclude			../../inc_private/product
 userinclude			../../../inc_private
--- a/authorisation/userpromptservice/server/source/upsclient/upsmanagement.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/server/source/upsclient/upsmanagement.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -21,7 +21,7 @@
 
 uid					0x0 0x10283774
 
-systeminclude		/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 userinclude			../../inc_private/product
 userinclude			../../../inc_private
--- a/authorisation/userpromptservice/server/source/upsserver/upsserver.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/server/source/upsserver/upsserver.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -21,7 +21,7 @@
 
 uid					0x0 0x10283558
 
-systeminclude		/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 userinclude			../../inc_private/product
 userinclude			../../../inc_private
--- a/authorisation/userpromptservice/server/test/upstest/upstest.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/server/test/upstest/upstest.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -23,7 +23,7 @@
 */
 
 #include <e32ldr.h>
-#include <scs/rtestwrapper.h>
+#include "rtestwrapper.h"
 
 #include <ups/upsclient.h>
 #include <ups/upserr.h>
--- a/authorisation/userpromptservice/server/test/upstest/upstest.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/server/test/upstest/upstest.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -21,9 +21,10 @@
 
 uid				0x0 0x10283559
 
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 userinclude		../../inc_private/product
+userinclude		../../../../../cryptomgmtlibs/securitytestfw/inc
 
 sourcepath		.
 source			upstest.cpp
--- a/authorisation/userpromptservice/server/test/upstest/upstestobsif.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/server/test/upstest/upstestobsif.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -23,7 +23,7 @@
 */
 
 #include <e32ldr.h>
-#include <scs/rtestwrapper.h>
+#include "rtestwrapper.h"
 
 #include <ups/upsclient.h>
 #include "f32file.h"
--- a/authorisation/userpromptservice/server/test/upstest/upstestobsif.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/server/test/upstest/upstestobsif.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -22,9 +22,10 @@
 
 uid				0x0 0x102836c3 // This UID matches the SID of the swiobserver
 
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 userinclude		../../inc_private/product
+userinclude		../../../../../cryptomgmtlibs/securitytestfw/inc
 
 sourcepath		.
 source			upstestobsif.cpp
--- a/authorisation/userpromptservice/server/test/upstest/upstestobsifoom.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/server/test/upstest/upstestobsifoom.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -23,7 +23,7 @@
 */
 
 #include <e32ldr.h>
-#include <scs/rtestwrapper.h>
+#include "rtestwrapper.h"
 
 #include <ups/upsclient.h>
 #include "f32file.h"
--- a/authorisation/userpromptservice/server/test/upstest/upstestobsifoom.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/server/test/upstest/upstestobsifoom.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -22,9 +22,10 @@
 
 uid				0x0 0x102836c3 // This UID matches the SID of the swiobserver
 
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 userinclude		../../inc_private/product
+userinclude		../../../../../cryptomgmtlibs/securitytestfw/inc
 
 sourcepath		.
 source			upstestobsifoom.cpp
--- a/authorisation/userpromptservice/server/test/upstest/upstestoom.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/server/test/upstest/upstestoom.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -23,7 +23,7 @@
 */
 
 #include <e32ldr.h>
-#include <scs/rtestwrapper.h>
+#include "rtestwrapper.h"
 
 #include <ups/upsclient.h>
 #include "f32file.h"
--- a/authorisation/userpromptservice/server/test/upstest/upstestoom.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/server/test/upstest/upstestoom.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -21,10 +21,10 @@
 
 uid				0x0 0x10283733
 
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 userinclude		../../inc_private/product
-
+userinclude		../../../../../cryptomgmtlibs/securitytestfw/inc
 
 sourcepath		.
 source			upstestoom.cpp
--- a/authorisation/userpromptservice/test/group/tups_backuprestore.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tups_backuprestore.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -34,8 +34,8 @@
 USERINCLUDE		.
 USERINCLUDE		../../inc
 userinclude 		../../../../cryptomgmtlibs/securitycommonutils/inc
-SYSTEMINCLUDE	/epoc32/include
-SYSTEMINCLUDE	/epoc32/include/test
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY			sisregistryclient.lib
 LIBRARY			testexecuteutils.lib
--- a/authorisation/userpromptservice/test/group/tups_clientapi_sysserver.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tups_clientapi_sysserver.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -32,9 +32,7 @@
 USERINCLUDE .
 USERINCLUDE ../include 
 
-SYSTEMINCLUDE   /epoc32/include
-SYSTEMINCLUDE   /epoc32/include/ups
-SYSTEMINCLUDE   /epoc32/include/test
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY         euser.lib
 LIBRARY			upsclient.lib
--- a/authorisation/userpromptservice/test/group/tups_dialogcreator01.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tups_dialogcreator01.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -35,7 +35,8 @@
 
 macro			DIALOG_01
 
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 sourcepath		../tups/src
 source          tupsproperty.cpp
--- a/authorisation/userpromptservice/test/group/tups_dialogcreator02.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tups_dialogcreator02.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -35,7 +35,8 @@
 
 macro			DIALOG_02
 
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 sourcepath		../tups/src
 source          tupsproperty.cpp
--- a/authorisation/userpromptservice/test/group/tups_dialogcreator03.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tups_dialogcreator03.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -35,7 +35,9 @@
 
 macro			DIALOG_03
 
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
+
 
 sourcepath		../tups/src
 source          tupsproperty.cpp
--- a/authorisation/userpromptservice/test/group/tups_dialogcreator07.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tups_dialogcreator07.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -36,7 +36,9 @@
 
 macro			DIALOG_07
 
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
+
 
 sourcepath		../tups/src
 source          tupsproperty.cpp
--- a/authorisation/userpromptservice/test/group/tups_dialogcreator_always.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tups_dialogcreator_always.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -35,7 +35,9 @@
 
 macro			DIALOG_ALWAYS
 
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
+
 
 sourcepath		../tups_dialogcreator/source
 source			tups_dialogcreator_noprops.cpp
--- a/authorisation/userpromptservice/test/group/tups_dialogcreator_never.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tups_dialogcreator_never.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -35,7 +35,9 @@
 
 macro			DIALOG_NEVER
 
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
+
 
 sourcepath		../tups_dialogcreator/source
 source			tups_dialogcreator_noprops.cpp
--- a/authorisation/userpromptservice/test/group/tups_dialogcreator_session.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tups_dialogcreator_session.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -35,7 +35,9 @@
 
 macro			DIALOG_SESSION
 
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
+
 
 sourcepath		../tups_dialogcreator/source
 source			tups_dialogcreator_noprops.cpp
--- a/authorisation/userpromptservice/test/group/tups_install.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tups_install.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -32,8 +32,9 @@
 source          	tuiscriptadaptors.cpp
 userinclude		.  
 
-systeminclude   /epoc32/include
-systeminclude   /epoc32/include/test
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
+
 
 userinclude ../../inc
 userinclude ../../../../cryptomgmtlibs/securityutils/inc
--- a/authorisation/userpromptservice/test/group/tups_nopolicies_server.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tups_nopolicies_server.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -34,9 +34,7 @@
 USERINCLUDE .
 USERINCLUDE ../include 
 
-SYSTEMINCLUDE   /epoc32/include
-SYSTEMINCLUDE   /epoc32/include/ups
-SYSTEMINCLUDE   /epoc32/include/test
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY         euser.lib
 LIBRARY		upsclient.lib
--- a/authorisation/userpromptservice/test/group/tups_notifier.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tups_notifier.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -31,9 +31,9 @@
 userinclude	../inc_private
 userinclude	../tups_notifier/source
 
-systeminclude 	/epoc32/include
-systeminclude 	/epoc32/include/ecom
-systeminclude 	/epoc32/include/techview
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+APP_LAYER_SYSTEMINCLUDE_SYMBIAN
+
 
 sourcepath    	../tups_notifier/source
 source        	tups_notifier.cpp
--- a/authorisation/userpromptservice/test/group/tups_policyevaluator01.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tups_policyevaluator01.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -35,7 +35,7 @@
 
 macro			POLICY_01
 
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 sourcepath		../tups/src
 source          tupsproperty.cpp
--- a/authorisation/userpromptservice/test/group/tups_policyevaluator02.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tups_policyevaluator02.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -34,7 +34,7 @@
 
 macro			POLICY_02
 
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 sourcepath		../tups/src
 source          tupsproperty.cpp
--- a/authorisation/userpromptservice/test/group/tups_policyevaluator03.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tups_policyevaluator03.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -34,7 +34,7 @@
 
 macro			POLICY_03
 
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 sourcepath		../tups/src
 source          tupsproperty.cpp
--- a/authorisation/userpromptservice/test/group/tups_policyevaluator05.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tups_policyevaluator05.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -35,7 +35,7 @@
 
 macro			POLICY_05
 
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 sourcepath		../tups/src
 source          tupsproperty.cpp
--- a/authorisation/userpromptservice/test/group/tups_policyevaluator_noprops.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tups_policyevaluator_noprops.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -34,7 +34,7 @@
 
 macro			POLICY_NOPROPS
 
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 sourcepath		../tups_policyevaluator/source
 source			tups_policyevaluator_noprops.cpp
--- a/authorisation/userpromptservice/test/group/tups_system_server01.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tups_system_server01.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -30,9 +30,7 @@
 userinclude .
 userinclude ../include 
 
-systeminclude   /epoc32/include
-systeminclude   /epoc32/include/ups
-systeminclude   /epoc32/include/test
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 library         euser.lib
 library		upsclient.lib
--- a/authorisation/userpromptservice/test/group/tups_system_server02.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tups_system_server02.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -34,9 +34,7 @@
 USERINCLUDE .
 USERINCLUDE ../include 
 
-SYSTEMINCLUDE   /epoc32/include
-SYSTEMINCLUDE   /epoc32/include/ups
-SYSTEMINCLUDE   /epoc32/include/test
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY         euser.lib
 LIBRARY		upsclient.lib
--- a/authorisation/userpromptservice/test/group/tups_system_server03.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tups_system_server03.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -34,9 +34,7 @@
 USERINCLUDE .
 USERINCLUDE ../include 
 
-SYSTEMINCLUDE   /epoc32/include
-SYSTEMINCLUDE   /epoc32/include/ups
-SYSTEMINCLUDE   /epoc32/include/test
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY         euser.lib
 LIBRARY		upsclient.lib
--- a/authorisation/userpromptservice/test/group/tupsinteg.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tupsinteg.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -43,9 +43,8 @@
 USERINCLUDE  ../tups/src
 USERINCLUDE ../include 
 
-SYSTEMINCLUDE /epoc32/include
-SYSTEMINCLUDE /epoc32/include/ups
-SYSTEMINCLUDE /epoc32/include/test
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 //Please add your system include under here. 
 
--- a/authorisation/userpromptservice/test/group/tupsinteg_post1.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tupsinteg_post1.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -45,9 +45,8 @@
 USERINCLUDE  ../tups/src
 USERINCLUDE ../include 
 
-SYSTEMINCLUDE /epoc32/include
-SYSTEMINCLUDE /epoc32/include/ups
-SYSTEMINCLUDE /epoc32/include/test
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 //Please add your system include under here. 
 
--- a/authorisation/userpromptservice/test/group/tupsinteg_unprotected.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/group/tupsinteg_unprotected.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -38,9 +38,8 @@
 USERINCLUDE  ../tups/src
 USERINCLUDE ../include 
 
-SYSTEMINCLUDE /epoc32/include
-SYSTEMINCLUDE /epoc32/include/ups
-SYSTEMINCLUDE /epoc32/include/test
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 //Please add your system include under here. 
 
--- a/authorisation/userpromptservice/test/include/tups_sys_server.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/include/tups_sys_server.h	Mon Oct 12 10:17:04 2009 +0300
@@ -28,7 +28,7 @@
 #include <test/tefexportconst.h>
 #include <ups/upsclient.h>
 #include "tupstesteractive.h"
-#include <test/tups_clientapi_sysserver.h>
+#include "tups_clientapi_sysserver.h"
 
 
 class CUPSTestServer : public CServer2
--- a/authorisation/userpromptservice/test/include/tupstesteractive.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/include/tupstesteractive.h	Mon Oct 12 10:17:04 2009 +0300
@@ -25,7 +25,7 @@
 #define TUPSINTERACTIVE 
  
 #include <e32base.h>
-#include <test/tups_clientapi_sysserver.h>
+#include "tups_clientapi_sysserver.h"
 
 #include <ups/upstypes.h>
 
--- a/authorisation/userpromptservice/test/tups/src/tupsclientstep.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/tups/src/tupsclientstep.h	Mon Oct 12 10:17:04 2009 +0300
@@ -28,7 +28,7 @@
 #include <bautils.h>
 #include <swi/swispubsubdefs.h>
 #include "tupsintegstepbase.h"
-#include <test/tups_clientapi_sysserver.h>
+#include "tups_clientapi_sysserver.h"
 #include "tupsproperty.h"
 
 class TServiceRequestParameters
--- a/authorisation/userpromptservice/test/tups/src/tupsdbmanagementstep.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/tups/src/tupsdbmanagementstep.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -18,7 +18,7 @@
 
 #include "tupsdbmanagementstep.h"  
 #include "tupsintegdefs.h"
-#include "upstypes.h"
+#include <ups/upstypes.h>
 
 using namespace UserPromptService;
 
--- a/authorisation/userpromptservice/test/tups/src/tupsdbmanagementstep.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/tups/src/tupsdbmanagementstep.h	Mon Oct 12 10:17:04 2009 +0300
@@ -25,7 +25,7 @@
 #define __UPSDB_STEP_H__
 #include <test/testexecutestepbase.h>
 #include "tupsintegstepbase.h"
-#include <test/tups_clientapi_sysserver.h>
+#include "tups_clientapi_sysserver.h"
 #include "tupsproperty.h"
 #include <ups/upsclient.h>
 using namespace UserPromptService;
--- a/authorisation/userpromptservice/test/tups_backuprestore/tbackuprestore.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/tups_backuprestore/tbackuprestore.h	Mon Oct 12 10:17:04 2009 +0300
@@ -18,7 +18,7 @@
 
 #ifndef __T_BACKUP_RESTORE_H__
 #define __T_BACKUP_RESTORE_H__
-#include <testexecuteserverbase.h>
+#include <test/testexecuteserverbase.h>
 
 class CTBackupRestoreServer : public CTestServer
 	{
--- a/authorisation/userpromptservice/test/tups_backuprestore/tbackuprestorestep.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/tups_backuprestore/tbackuprestorestep.h	Mon Oct 12 10:17:04 2009 +0300
@@ -19,7 +19,7 @@
 #ifndef __T_BACKUP_RESTORE_STEP_H__
 #define __T_BACKUP_RESTORE_STEP_H__
 
-#include <testexecutestepbase.h>
+#include <test/testexecutestepbase.h>
 #include "tbackuprestore.h"
 
 _LIT(KTStepInstall,					"INSTALL");
--- a/authorisation/userpromptservice/test/tups_notifier/source/e1111f10.rss	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/tups_notifier/source/e1111f10.rss	Mon Oct 12 10:17:04 2009 +0300
@@ -21,7 +21,7 @@
 */
 
 
-#include "registryinfov2.rh"
+#include <ecom/registryinfov2.rh>
 #include <techview/eikon.rh>
 
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
--- a/authorisation/userpromptservice/test/tups_system_server/source/tups_sys_server.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/authorisation/userpromptservice/test/tups_system_server/source/tups_sys_server.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -22,7 +22,7 @@
 */
  
 #include "tups_sys_server.h"
-#include <test/tups_clientapi_sysserver.h>
+#include "tups_clientapi_sysserver.h"
 #include <bacline.h>
 #include "f32file.h" 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/contentaccessfwfordrm/BWINS/caf_v3u.def	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,193 @@
+EXPORTS
+	?DataSizeL@CData@ContentAccess@@QAEXAAH@Z @ 1 NONAME ; public: void __thiscall ContentAccess::CData::DataSizeL(int &)
+	?EvaluateIntent@CData@ContentAccess@@QAEHW4TIntent@2@@Z @ 2 NONAME ; public: int __thiscall ContentAccess::CData::EvaluateIntent(enum ContentAccess::TIntent)
+	?ExecuteIntent@CData@ContentAccess@@QAEHW4TIntent@2@@Z @ 3 NONAME ; public: int __thiscall ContentAccess::CData::ExecuteIntent(enum ContentAccess::TIntent)
+	?GetL@CAttribute@ContentAccess@@QAEXXZ @ 4 NONAME ; public: void __thiscall ContentAccess::CAttribute::GetL(void)
+	?NewAttributeL@CContent@ContentAccess@@QAEPAVCAttribute@2@H@Z @ 5 NONAME ; public: class ContentAccess::CAttribute * __thiscall ContentAccess::CContent::NewAttributeL(int)
+	?NewL@CContent@ContentAccess@@SAPAV12@ABVTDesC16@@@Z @ 6 NONAME ; public: static class ContentAccess::CContent * __cdecl ContentAccess::CContent::NewL(class TDesC16 const &)
+	?NewLC@CContent@ContentAccess@@SAPAV12@ABVTDesC16@@@Z @ 7 NONAME ; public: static class ContentAccess::CContent * __cdecl ContentAccess::CContent::NewLC(class TDesC16 const &)
+	?OpenContentL@CContent@ContentAccess@@QAEPAVCData@2@W4TIntent@2@@Z @ 8 NONAME ; public: class ContentAccess::CData * __thiscall ContentAccess::CContent::OpenContentL(enum ContentAccess::TIntent)
+	?QuerySet@CAttribute@ContentAccess@@QAEAAVCBitset@2@XZ @ 9 NONAME ; public: class ContentAccess::CBitset & __thiscall ContentAccess::CAttribute::QuerySet(void)
+	?Read@CData@ContentAccess@@QBEHAAVTDes8@@@Z @ 10 NONAME ; public: int __thiscall ContentAccess::CData::Read(class TDes8 &)const 
+	?Read@CData@ContentAccess@@QBEHAAVTDes8@@H@Z @ 11 NONAME ; public: int __thiscall ContentAccess::CData::Read(class TDes8 &,int)const 
+	?Read@CData@ContentAccess@@QBEXAAVTDes8@@AAVTRequestStatus@@@Z @ 12 NONAME ; public: void __thiscall ContentAccess::CData::Read(class TDes8 &,class TRequestStatus &)const 
+	?Read@CData@ContentAccess@@QBEXAAVTDes8@@HAAVTRequestStatus@@@Z @ 13 NONAME ; public: void __thiscall ContentAccess::CData::Read(class TDes8 &,int,class TRequestStatus &)const 
+	?Reset@CAttribute@ContentAccess@@QAEXXZ @ 14 NONAME ; public: void __thiscall ContentAccess::CAttribute::Reset(void)
+	?ResponseSet@CAttribute@ContentAccess@@QBEABVCBitset@2@XZ @ 15 NONAME ; public: class ContentAccess::CBitset const & __thiscall ContentAccess::CAttribute::ResponseSet(void)const 
+	?Seek@CData@ContentAccess@@QBEHW4TSeek@@AAH@Z @ 16 NONAME ; public: int __thiscall ContentAccess::CData::Seek(enum TSeek,int &)const 
+	?SetQosL@CData@ContentAccess@@QAEXW4TQosAttribute@2@H@Z @ 17 NONAME ; public: void __thiscall ContentAccess::CData::SetQosL(enum ContentAccess::TQosAttribute,int)
+	?GetMimeTypeL@CData@ContentAccess@@QBEHAAVTDes8@@@Z @ 18 NONAME ; public: int __thiscall ContentAccess::CData::GetMimeTypeL(class TDes8 &)const 
+	?AttributesL@CSupplierOutputFile@ContentAccess@@QAEAAVCAttribute@2@H@Z @ 19 NONAME ; public: class ContentAccess::CAttribute & __thiscall ContentAccess::CSupplierOutputFile::AttributesL(int)
+	?ConsumerMimeTypes@CAgentResolver@ContentAccess@@QBEABV?$RArray@VTPtrC8@@@@XZ @ 20 NONAME ; public: class RArray<class TPtrC8> const & __thiscall ContentAccess::CAgentResolver::ConsumerMimeTypes(void)const 
+	?DeleteFileL@CManager@ContentAccess@@SAXABVTDesC16@@@Z @ 21 NONAME ; public: static void __cdecl ContentAccess::CManager::DeleteFileL(class TDesC16 const &)
+	?DoRecognizeL@CAgentResolver@ContentAccess@@QAEHABVTDesC16@@ABVTDesC8@@AAVTDes8@@2@Z @ 22 NONAME ; public: int __thiscall ContentAccess::CAgentResolver::DoRecognize(class TDesC16 const &,class TDesC8 const &,class TDes8 &,class TDes8 &)
+	?FileName@CSupplierOutputFile@ContentAccess@@QBE?AVTPtrC16@@XZ @ 23 NONAME ; public: class TPtrC16  __thiscall ContentAccess::CSupplierOutputFile::FileName(void)const 
+	?ImportFileL@CSupplier@ContentAccess@@QAEPAVCImportFile@2@AAVCCafMimeHeader@2@ABVTDesC16@@@Z @ 24 NONAME ; public: class ContentAccess::CImportFile * __thiscall ContentAccess::CSupplier::ImportFileL(class ContentAccess::CCafMimeHeader &,class TDesC16 const &)
+	?IsImportSupported@CSupplier@ContentAccess@@QAEHABVTDesC8@@@Z @ 25 NONAME ; public: int __thiscall ContentAccess::CSupplier::IsImportSupported(class TDesC8 const &)
+	?MimeTypeL@CSupplierOutputFile@ContentAccess@@QAE?AVTPtrC8@@XZ @ 26 NONAME ; public: class TPtrC8  __thiscall ContentAccess::CSupplierOutputFile::MimeTypeL(void)
+	?NewL@CAgentResolver@ContentAccess@@SAPAV12@H@Z @ 27 NONAME ; public: static class ContentAccess::CAgentResolver * __cdecl ContentAccess::CAgentResolver::NewL(int)
+	?NewL@CSupplier@ContentAccess@@SAPAV12@XZ @ 28 NONAME ; public: static class ContentAccess::CSupplier * __cdecl ContentAccess::CSupplier::NewL(void)
+	?NewL@CSupplierOutputFile@ContentAccess@@SAPAV12@ABVTDesC16@@W4TOutputType@2@@Z @ 29 NONAME ; public: static class ContentAccess::CSupplierOutputFile * __cdecl ContentAccess::CSupplierOutputFile::NewL(class TDesC16 const &,enum ContentAccess::TOutputType)
+	?NewLC@CAgentResolver@ContentAccess@@SAPAV12@H@Z @ 30 NONAME ; public: static class ContentAccess::CAgentResolver * __cdecl ContentAccess::CAgentResolver::NewLC(int)
+	?NewLC@CSupplier@ContentAccess@@SAPAV12@XZ @ 31 NONAME ; public: static class ContentAccess::CSupplier * __cdecl ContentAccess::CSupplier::NewLC(void)
+	?OutputFileCountL@CImportFile@ContentAccess@@QBEHXZ @ 32 NONAME ; public: int __thiscall ContentAccess::CImportFile::OutputFileCountL(void)const 
+	?OutputFileL@CImportFile@ContentAccess@@QBEAAVCSupplierOutputFile@2@H@Z @ 33 NONAME ; public: class ContentAccess::CSupplierOutputFile & __thiscall ContentAccess::CImportFile::OutputFileL(int)const 
+	?OutputType@CSupplierOutputFile@ContentAccess@@QBE?AW4TOutputType@2@XZ @ 34 NONAME ; public: enum ContentAccess::TOutputType  __thiscall ContentAccess::CSupplierOutputFile::OutputType(void)const 
+	?PreferredBufferSize@CAgentResolver@ContentAccess@@QAEHXZ @ 35 NONAME ; public: int __thiscall ContentAccess::CAgentResolver::PreferredBufferSize(void)
+	?SetOutputDirectoryL@CSupplier@ContentAccess@@QAEXABVTDesC16@@@Z @ 36 NONAME ; public: void __thiscall ContentAccess::CSupplier::SetOutputDirectoryL(class TDesC16 const &)
+	?SupplierMimeTypes@CAgentResolver@ContentAccess@@QBEABV?$RArray@VTPtrC8@@@@XZ @ 37 NONAME ; public: class RArray<class TPtrC8> const & __thiscall ContentAccess::CAgentResolver::SupplierMimeTypes(void)const 
+	?WriteData@CImportFile@ContentAccess@@QAEHABVTDesC8@@@Z @ 38 NONAME ; public: int __thiscall ContentAccess::CImportFile::WriteData(class TDesC8 const &)
+	?WriteData@CImportFile@ContentAccess@@QAEXABVTDesC8@@AAVTRequestStatus@@@Z @ 39 NONAME ; public: void __thiscall ContentAccess::CImportFile::WriteData(class TDesC8 const &,class TRequestStatus &)
+	?WriteDataComplete@CImportFile@ContentAccess@@QAEHXZ @ 40 NONAME ; public: int __thiscall ContentAccess::CImportFile::WriteDataComplete(void)
+	?WriteDataComplete@CImportFile@ContentAccess@@QAEXAAVTRequestStatus@@@Z @ 41 NONAME ; public: void __thiscall ContentAccess::CImportFile::WriteDataComplete(class TRequestStatus &)
+	?NewAttributeL@CContent@ContentAccess@@QAEPAVCAttribute@2@HW4TContentShareMode@2@@Z @ 42 NONAME ; public: class ContentAccess::CAttribute * __thiscall ContentAccess::CContent::NewAttributeL(int,enum ContentAccess::TContentShareMode)
+	?OpenContentL@CContent@ContentAccess@@QAEPAVCData@2@W4TIntent@2@W4TContentShareMode@2@@Z @ 43 NONAME ; public: class ContentAccess::CData * __thiscall ContentAccess::CContent::OpenContentL(enum ContentAccess::TIntent,enum ContentAccess::TContentShareMode)
+	?NewL@CContent@ContentAccess@@SAPAV12@AAVRFile@@@Z @ 44 NONAME ; class ContentAccess::CContent * ContentAccess::CContent::NewL(class RFile &)
+	?NewLC@CContent@ContentAccess@@SAPAV12@AAVRFile@@@Z @ 45 NONAME ; class ContentAccess::CContent * ContentAccess::CContent::NewLC(class RFile &)
+	??1CAgentFactory@ContentAccess@@UAE@XZ @ 46 NONAME ; ContentAccess::CAgentFactory::~CAgentFactory(void)
+	?Agent@CContent@ContentAccess@@QBEABVTAgent@2@XZ @ 47 NONAME ; class ContentAccess::TAgent const & ContentAccess::CContent::Agent(void) const
+	?AgentSpecificCommand@CContent@ContentAccess@@QAEHHABVTDesC8@@AAVTDes8@@@Z @ 48 NONAME ; int ContentAccess::CContent::AgentSpecificCommand(int, class TDesC8 const &, class TDes8 &)
+	?AgentSpecificCommand@CContent@ContentAccess@@QAEXHABVTDesC8@@AAVTDes8@@AAVTRequestStatus@@@Z @ 49 NONAME ; void ContentAccess::CContent::AgentSpecificCommand(int, class TDesC8 const &, class TDes8 &, class TRequestStatus &)
+	?AgentSpecificCommand@CManager@ContentAccess@@QAEHAAVTAgent@2@HABVTDesC8@@AAVTDes8@@@Z @ 50 NONAME ; int ContentAccess::CManager::AgentSpecificCommand(class ContentAccess::TAgent &, int, class TDesC8 const &, class TDes8 &)
+	?AgentSpecificCommand@CManager@ContentAccess@@QAEXAAVTAgent@2@HABVTDesC8@@AAVTDes8@@AAVTRequestStatus@@@Z @ 51 NONAME ; void ContentAccess::CManager::AgentSpecificCommand(class ContentAccess::TAgent &, int, class TDesC8 const &, class TDes8 &, class TRequestStatus &)
+	?CancelNotifyStatusChange@CContent@ContentAccess@@QAEHAAVTRequestStatus@@@Z @ 52 NONAME ; int ContentAccess::CContent::CancelNotifyStatusChange(class TRequestStatus &)
+	?CancelNotifyStatusChange@CContent@ContentAccess@@QAEHAAVTRequestStatus@@ABVTDesC16@@@Z @ 53 NONAME ; int ContentAccess::CContent::CancelNotifyStatusChange(class TRequestStatus &, class TDesC16 const &)
+	?CancelNotifyStatusChange@CManager@ContentAccess@@QAEHABVTDesC16@@AAVTRequestStatus@@@Z @ 54 NONAME ; int ContentAccess::CManager::CancelNotifyStatusChange(class TDesC16 const &, class TRequestStatus &)
+	?CancelRequestRights@CContent@ContentAccess@@QAEHAAVTRequestStatus@@@Z @ 55 NONAME ; int ContentAccess::CContent::CancelRequestRights(class TRequestStatus &)
+	?CancelRequestRights@CContent@ContentAccess@@QAEHAAVTRequestStatus@@ABVTDesC16@@@Z @ 56 NONAME ; int ContentAccess::CContent::CancelRequestRights(class TRequestStatus &, class TDesC16 const &)
+	?CloseContainer@CContent@ContentAccess@@QAEHXZ @ 57 NONAME ; int ContentAccess::CContent::CloseContainer(void)
+	?ContinueWithNewOutputFile@CImportFile@ContentAccess@@QAEHAAVRFile@@ABVTDesC16@@@Z @ 58 NONAME ; int ContentAccess::CImportFile::ContinueWithNewOutputFile(class RFile &, class TDesC16 const &)
+	?ContinueWithNewOutputFile@CImportFile@ContentAccess@@QAEXAAVRFile@@ABVTDesC16@@AAVTRequestStatus@@@Z @ 59 NONAME ; void ContentAccess::CImportFile::ContinueWithNewOutputFile(class RFile &, class TDesC16 const &, class TRequestStatus &)
+	?CopyFile@CManager@ContentAccess@@QBEHABVTDesC16@@0@Z @ 60 NONAME ; int ContentAccess::CManager::CopyFile(class TDesC16 const &, class TDesC16 const &) const
+	?CreateRightsManagerL@CManager@ContentAccess@@QBEPAVCRightsManager@2@AAVTAgent@2@@Z @ 61 NONAME ; class ContentAccess::CRightsManager * ContentAccess::CManager::CreateRightsManagerL(class ContentAccess::TAgent &) const
+	?DeleteAllRightsObjects@CRightsManager@ContentAccess@@QAEHABVTVirtualPathPtr@2@@Z @ 62 NONAME ; int ContentAccess::CRightsManager::DeleteAllRightsObjects(class ContentAccess::TVirtualPathPtr const &)
+	?DeleteFile@CManager@ContentAccess@@QBEHABVTDesC16@@@Z @ 63 NONAME ; int ContentAccess::CManager::DeleteFile(class TDesC16 const &) const
+	?DeleteRightsObject@CRightsManager@ContentAccess@@QAEHABVCRightsInfo@2@@Z @ 64 NONAME ; int ContentAccess::CRightsManager::DeleteRightsObject(class ContentAccess::CRightsInfo const &)
+	?DisplayInfoL@CContent@ContentAccess@@QBEXW4TDisplayInfo@2@@Z @ 65 NONAME ; void ContentAccess::CContent::DisplayInfoL(enum ContentAccess::TDisplayInfo) const
+	?DisplayInfoL@CContent@ContentAccess@@QBEXW4TDisplayInfo@2@ABVTDesC16@@@Z @ 66 NONAME ; void ContentAccess::CContent::DisplayInfoL(enum ContentAccess::TDisplayInfo, class TDesC16 const &) const
+	?DisplayInfoL@CManager@ContentAccess@@QAEXW4TDisplayInfo@2@ABVTVirtualPathPtr@2@@Z @ 67 NONAME ; void ContentAccess::CManager::DisplayInfoL(enum ContentAccess::TDisplayInfo, class ContentAccess::TVirtualPathPtr const &)
+	?DisplayManagementInfoL@CManager@ContentAccess@@QAEXAAVTAgent@2@@Z @ 68 NONAME ; void ContentAccess::CManager::DisplayManagementInfoL(class ContentAccess::TAgent &)
+	?ExternalizeL@CSupplierOutputFile@ContentAccess@@QBEXAAVRWriteStream@@@Z @ 69 NONAME ; void ContentAccess::CSupplierOutputFile::ExternalizeL(class RWriteStream &) const
+	?GetAttribute@CContent@ContentAccess@@QBEHHAAH@Z @ 70 NONAME ; int ContentAccess::CContent::GetAttribute(int, int &) const
+	?GetAttribute@CContent@ContentAccess@@QBEHHAAHABVTDesC16@@@Z @ 71 NONAME ; int ContentAccess::CContent::GetAttribute(int, int &, class TDesC16 const &) const
+	?GetAttribute@CData@ContentAccess@@QBEHHAAH@Z @ 72 NONAME ; int ContentAccess::CData::GetAttribute(int, int &) const
+	?GetAttribute@CManager@ContentAccess@@QBEHHAAHABVTVirtualPathPtr@2@@Z @ 73 NONAME ; int ContentAccess::CManager::GetAttribute(int, int &, class ContentAccess::TVirtualPathPtr const &) const
+	?GetAttributeSet@CContent@ContentAccess@@QBEHAAVRAttributeSet@2@@Z @ 74 NONAME ; int ContentAccess::CContent::GetAttributeSet(class ContentAccess::RAttributeSet &) const
+	?GetAttributeSet@CContent@ContentAccess@@QBEHAAVRAttributeSet@2@ABVTDesC16@@@Z @ 75 NONAME ; int ContentAccess::CContent::GetAttributeSet(class ContentAccess::RAttributeSet &, class TDesC16 const &) const
+	?GetAttributeSet@CData@ContentAccess@@QBEHAAVRAttributeSet@2@@Z @ 76 NONAME ; int ContentAccess::CData::GetAttributeSet(class ContentAccess::RAttributeSet &) const
+	?GetAttributeSet@CManager@ContentAccess@@QBEHAAVRAttributeSet@2@ABVTVirtualPathPtr@2@@Z @ 77 NONAME ; int ContentAccess::CManager::GetAttributeSet(class ContentAccess::RAttributeSet &, class ContentAccess::TVirtualPathPtr const &) const
+	?GetDir@CManager@ContentAccess@@QBEHABVTDesC16@@ABVTUidType@@IAAPAVCDir@@@Z @ 78 NONAME ; int ContentAccess::CManager::GetDir(class TDesC16 const &, class TUidType const &, unsigned int, class CDir * &) const
+	?GetDir@CManager@ContentAccess@@QBEHABVTDesC16@@IIAAPAVCDir@@1@Z @ 79 NONAME ; int ContentAccess::CManager::GetDir(class TDesC16 const &, unsigned int, unsigned int, class CDir * &, class CDir * &) const
+	?GetDir@CManager@ContentAccess@@QBEHABVTDesC16@@IIAAPAVCDir@@@Z @ 80 NONAME ; int ContentAccess::CManager::GetDir(class TDesC16 const &, unsigned int, unsigned int, class CDir * &) const
+	?GetEmbeddedObjectsL@CContent@ContentAccess@@QBEXAAV?$RStreamablePtrArray@VCEmbeddedObject@ContentAccess@@@2@@Z @ 81 NONAME ; void ContentAccess::CContent::GetEmbeddedObjectsL(class ContentAccess::RStreamablePtrArray<class ContentAccess::CEmbeddedObject> &) const
+	?GetEmbeddedObjectsL@CContent@ContentAccess@@QBEXAAV?$RStreamablePtrArray@VCEmbeddedObject@ContentAccess@@@2@W4TEmbeddedType@2@@Z @ 82 NONAME ; void ContentAccess::CContent::GetEmbeddedObjectsL(class ContentAccess::RStreamablePtrArray<class ContentAccess::CEmbeddedObject> &, enum ContentAccess::TEmbeddedType) const
+	?GetImportStatus@CImportFile@ContentAccess@@QBE?AW4TImportStatus@2@XZ @ 83 NONAME ; enum ContentAccess::TImportStatus ContentAccess::CImportFile::GetImportStatus(void) const
+	?GetRightsDataL@CRightsManager@ContentAccess@@QBEPAVMAgentRightsBase@2@ABVCRightsInfo@2@@Z @ 84 NONAME ; class ContentAccess::MAgentRightsBase * ContentAccess::CRightsManager::GetRightsDataL(class ContentAccess::CRightsInfo const &) const
+	?GetStringAttribute@CContent@ContentAccess@@QBEHHAAVTDes16@@@Z @ 85 NONAME ; int ContentAccess::CContent::GetStringAttribute(int, class TDes16 &) const
+	?GetStringAttribute@CContent@ContentAccess@@QBEHHAAVTDes16@@ABVTDesC16@@@Z @ 86 NONAME ; int ContentAccess::CContent::GetStringAttribute(int, class TDes16 &, class TDesC16 const &) const
+	?GetStringAttribute@CData@ContentAccess@@QBEHHAAVTDes16@@@Z @ 87 NONAME ; int ContentAccess::CData::GetStringAttribute(int, class TDes16 &) const
+	?GetStringAttribute@CManager@ContentAccess@@QBEHHAAVTDes16@@ABVTVirtualPathPtr@2@@Z @ 88 NONAME ; int ContentAccess::CManager::GetStringAttribute(int, class TDes16 &, class ContentAccess::TVirtualPathPtr const &) const
+	?GetStringAttributeSet@CContent@ContentAccess@@QBEHAAVRStringAttributeSet@2@@Z @ 89 NONAME ; int ContentAccess::CContent::GetStringAttributeSet(class ContentAccess::RStringAttributeSet &) const
+	?GetStringAttributeSet@CContent@ContentAccess@@QBEHAAVRStringAttributeSet@2@ABVTDesC16@@@Z @ 90 NONAME ; int ContentAccess::CContent::GetStringAttributeSet(class ContentAccess::RStringAttributeSet &, class TDesC16 const &) const
+	?GetStringAttributeSet@CData@ContentAccess@@QBEHAAVRStringAttributeSet@2@@Z @ 91 NONAME ; int ContentAccess::CData::GetStringAttributeSet(class ContentAccess::RStringAttributeSet &) const
+	?GetStringAttributeSet@CManager@ContentAccess@@QBEHAAVRStringAttributeSet@2@ABVTVirtualPathPtr@2@@Z @ 92 NONAME ; int ContentAccess::CManager::GetStringAttributeSet(class ContentAccess::RStringAttributeSet &, class ContentAccess::TVirtualPathPtr const &) const
+	?GetSuggestedOutputFileExtension@CImportFile@ContentAccess@@QAEHAAVTDes16@@@Z @ 93 NONAME ; int ContentAccess::CImportFile::GetSuggestedOutputFileExtension(class TDes16 &)
+	?GetSuggestedOutputFileName@CImportFile@ContentAccess@@QAEHAAVTDes16@@@Z @ 94 NONAME ; int ContentAccess::CImportFile::GetSuggestedOutputFileName(class TDes16 &)
+	?ImportFileL@CSupplier@ContentAccess@@QAEPAVCImportFile@2@ABVTDesC8@@ABVCMetaDataArray@2@@Z @ 95 NONAME ; class ContentAccess::CImportFile * ContentAccess::CSupplier::ImportFileL(class TDesC8 const &, class ContentAccess::CMetaDataArray const &)
+	?ImportFileL@CSupplier@ContentAccess@@QAEPAVCImportFile@2@ABVTDesC8@@ABVCMetaDataArray@2@ABVTDesC16@@@Z @ 96 NONAME ; class ContentAccess::CImportFile * ContentAccess::CSupplier::ImportFileL(class TDesC8 const &, class ContentAccess::CMetaDataArray const &, class TDesC16 const &)
+	?ListAgentsL@CManager@ContentAccess@@QAEXAAV?$RArray@VTAgent@ContentAccess@@@@@Z @ 97 NONAME ; void ContentAccess::CManager::ListAgentsL(class RArray<class ContentAccess::TAgent> &)
+	?ListAllRightsL@CRightsManager@ContentAccess@@QBEXAAV?$RStreamablePtrArray@VCRightsInfo@ContentAccess@@@2@@Z @ 98 NONAME ; void ContentAccess::CRightsManager::ListAllRightsL(class ContentAccess::RStreamablePtrArray<class ContentAccess::CRightsInfo> &) const
+	?ListContentL@CRightsManager@ContentAccess@@QBEXAAV?$RStreamablePtrArray@VCVirtualPath@ContentAccess@@@2@AAVCRightsInfo@2@@Z @ 99 NONAME ; void ContentAccess::CRightsManager::ListContentL(class ContentAccess::RStreamablePtrArray<class ContentAccess::CVirtualPath> &, class ContentAccess::CRightsInfo &) const
+	?ListRightsL@CRightsManager@ContentAccess@@QBEXAAV?$RStreamablePtrArray@VCRightsInfo@ContentAccess@@@2@AAVTVirtualPathPtr@2@@Z @ 100 NONAME ; void ContentAccess::CRightsManager::ListRightsL(class ContentAccess::RStreamablePtrArray<class ContentAccess::CRightsInfo> &, class ContentAccess::TVirtualPathPtr &) const
+	?ListRightsL@CRightsManager@ContentAccess@@QBEXAAV?$RStreamablePtrArray@VCRightsInfo@ContentAccess@@@2@ABVTDesC16@@@Z @ 101 NONAME ; void ContentAccess::CRightsManager::ListRightsL(class ContentAccess::RStreamablePtrArray<class ContentAccess::CRightsInfo> &, class TDesC16 const &) const
+	?MkDir@CManager@ContentAccess@@QBEHABVTDesC16@@@Z @ 102 NONAME ; int ContentAccess::CManager::MkDir(class TDesC16 const &) const
+	?MkDirAll@CManager@ContentAccess@@QBEHABVTDesC16@@@Z @ 103 NONAME ; int ContentAccess::CManager::MkDirAll(class TDesC16 const &) const
+	?Name@TAgent@ContentAccess@@QBEABVTDesC16@@XZ @ 104 NONAME ; class TDesC16 const & ContentAccess::TAgent::Name(void) const
+	?NewL@CContent@ContentAccess@@SAPAV12@ABVTDesC16@@W4TContentShareMode@2@@Z @ 105 NONAME ; class ContentAccess::CContent * ContentAccess::CContent::NewL(class TDesC16 const &, enum ContentAccess::TContentShareMode)
+	?NewL@CManager@ContentAccess@@SAPAV12@XZ @ 106 NONAME ; class ContentAccess::CManager * ContentAccess::CManager::NewL(void)
+	?NewL@CSupplierOutputFile@ContentAccess@@SAPAV12@AAVRReadStream@@@Z @ 107 NONAME ; class ContentAccess::CSupplierOutputFile * ContentAccess::CSupplierOutputFile::NewL(class RReadStream &)
+	?NewL@CSupplierOutputFile@ContentAccess@@SAPAV12@ABVTDesC16@@W4TOutputType@2@ABVTDesC8@@@Z @ 108 NONAME ; class ContentAccess::CSupplierOutputFile * ContentAccess::CSupplierOutputFile::NewL(class TDesC16 const &, enum ContentAccess::TOutputType, class TDesC8 const &)
+	?NewLC@CContent@ContentAccess@@SAPAV12@ABVTDesC16@@W4TContentShareMode@2@@Z @ 109 NONAME ; class ContentAccess::CContent * ContentAccess::CContent::NewLC(class TDesC16 const &, enum ContentAccess::TContentShareMode)
+	?NewLC@CManager@ContentAccess@@SAPAV12@XZ @ 110 NONAME ; class ContentAccess::CManager * ContentAccess::CManager::NewLC(void)
+	?NotifyStatusChange@CContent@ContentAccess@@QAEXW4TEventMask@2@AAVTRequestStatus@@@Z @ 111 NONAME ; void ContentAccess::CContent::NotifyStatusChange(enum ContentAccess::TEventMask, class TRequestStatus &)
+	?NotifyStatusChange@CContent@ContentAccess@@QAEXW4TEventMask@2@AAVTRequestStatus@@ABVTDesC16@@@Z @ 112 NONAME ; void ContentAccess::CContent::NotifyStatusChange(enum ContentAccess::TEventMask, class TRequestStatus &, class TDesC16 const &)
+	?NotifyStatusChange@CManager@ContentAccess@@QAEXABVTDesC16@@W4TEventMask@2@AAVTRequestStatus@@@Z @ 113 NONAME ; void ContentAccess::CManager::NotifyStatusChange(class TDesC16 const &, enum ContentAccess::TEventMask, class TRequestStatus &)
+	?OpenContainer@CContent@ContentAccess@@QAEHABVTDesC16@@@Z @ 114 NONAME ; int ContentAccess::CContent::OpenContainer(class TDesC16 const &)
+	?OpenContentL@CContent@ContentAccess@@QAEPAVCData@2@W4TIntent@2@ABVTDesC16@@@Z @ 115 NONAME ; class ContentAccess::CData * ContentAccess::CContent::OpenContentL(enum ContentAccess::TIntent, class TDesC16 const &)
+	?RenameFile@CManager@ContentAccess@@QBEHABVTDesC16@@0@Z @ 116 NONAME ; int ContentAccess::CManager::RenameFile(class TDesC16 const &, class TDesC16 const &) const
+	?RequestRights@CContent@ContentAccess@@QAEXAAVTRequestStatus@@@Z @ 117 NONAME ; void ContentAccess::CContent::RequestRights(class TRequestStatus &)
+	?RequestRights@CContent@ContentAccess@@QAEXAAVTRequestStatus@@ABVTDesC16@@@Z @ 118 NONAME ; void ContentAccess::CContent::RequestRights(class TRequestStatus &, class TDesC16 const &)
+	?RmDir@CManager@ContentAccess@@QBEHABVTDesC16@@@Z @ 119 NONAME ; int ContentAccess::CManager::RmDir(class TDesC16 const &) const
+	?Search@CContent@ContentAccess@@QAEHAAV?$RStreamablePtrArray@VCEmbeddedObject@ContentAccess@@@2@ABVTDesC8@@H@Z @ 120 NONAME ; int ContentAccess::CContent::Search(class ContentAccess::RStreamablePtrArray<class ContentAccess::CEmbeddedObject> &, class TDesC8 const &, int)
+	?SetProperty@CContent@ContentAccess@@QAEHW4TAgentProperty@2@H@Z @ 121 NONAME ; int ContentAccess::CContent::SetProperty(enum ContentAccess::TAgentProperty, int)
+	?SetProperty@CData@ContentAccess@@QAEHW4TAgentProperty@2@H@Z @ 122 NONAME ; int ContentAccess::CData::SetProperty(enum ContentAccess::TAgentProperty, int)
+	?SetProperty@CManager@ContentAccess@@QAEHW4TAgentProperty@2@H@Z @ 123 NONAME ; int ContentAccess::CManager::SetProperty(enum ContentAccess::TAgentProperty, int)
+	?SetProperty@CRightsManager@ContentAccess@@QAEHW4TAgentProperty@2@H@Z @ 124 NONAME ; int ContentAccess::CRightsManager::SetProperty(enum ContentAccess::TAgentProperty, int)
+	?PrepareHTTPRequestHeaders@CSupplier@ContentAccess@@QBEXAAVRStringPool@@AAVRHTTPHeaders@@@Z @ 125 NONAME ; void ContentAccess::CSupplier::PrepareHTTPRequestHeaders(class RStringPool &, class RHTTPHeaders &) const
+	?NewL@CData@ContentAccess@@SAPAV12@AAVRFile@@ABVTDesC16@@W4TIntent@2@@Z @ 126 NONAME ; class ContentAccess::CData * ContentAccess::CData::NewL(class RFile &, class TDesC16 const &, enum ContentAccess::TIntent)
+	?NewL@CData@ContentAccess@@SAPAV12@ABVTVirtualPathPtr@2@W4TIntent@2@W4TContentShareMode@2@@Z @ 127 NONAME ; class ContentAccess::CData * ContentAccess::CData::NewL(class ContentAccess::TVirtualPathPtr const &, enum ContentAccess::TIntent, enum ContentAccess::TContentShareMode)
+	?NewLC@CData@ContentAccess@@SAPAV12@AAVRFile@@ABVTDesC16@@W4TIntent@2@@Z @ 128 NONAME ; class ContentAccess::CData * ContentAccess::CData::NewLC(class RFile &, class TDesC16 const &, enum ContentAccess::TIntent)
+	?NewLC@CData@ContentAccess@@SAPAV12@ABVTVirtualPathPtr@2@W4TIntent@2@W4TContentShareMode@2@@Z @ 129 NONAME ; class ContentAccess::CData * ContentAccess::CData::NewLC(class ContentAccess::TVirtualPathPtr const &, enum ContentAccess::TIntent, enum ContentAccess::TContentShareMode)
+	?OpenContentLC@CContent@ContentAccess@@QAEPAVCData@2@W4TIntent@2@@Z @ 130 NONAME ; class ContentAccess::CData * ContentAccess::CContent::OpenContentLC(enum ContentAccess::TIntent)
+	?OpenContentLC@CContent@ContentAccess@@QAEPAVCData@2@W4TIntent@2@ABVTDesC16@@@Z @ 131 NONAME ; class ContentAccess::CData * ContentAccess::CContent::OpenContentLC(enum ContentAccess::TIntent, class TDesC16 const &)
+	?RenameDir@CManager@ContentAccess@@QBEHABVTDesC16@@0@Z @ 132 NONAME ; int ContentAccess::CManager::RenameDir(class TDesC16 const &, class TDesC16 const &) const
+	?RenameDir@CAgentManager@ContentAccess@@UAEHABVTDesC16@@0@Z @ 133 NONAME ; int ContentAccess::CAgentManager::RenameDir(class TDesC16 const &, class TDesC16 const &)
+	?Cancel@CAgentImportFile@ContentAccess@@UAEXXZ @ 134 NONAME ; void ContentAccess::CAgentImportFile::Cancel(void)
+	?Cancel@CImportFile@ContentAccess@@QAEXXZ @ 135 NONAME ; void ContentAccess::CImportFile::Cancel(void)
+	?NewL@CData@ContentAccess@@SAPAV12@AAVRFile@@ABVTDesC16@@@Z @ 136 NONAME ; class ContentAccess::CData * ContentAccess::CData::NewL(class RFile &, class TDesC16 const &)
+	?NewL@CData@ContentAccess@@SAPAV12@ABVTVirtualPathPtr@2@W4TContentShareMode@2@@Z @ 137 NONAME ; class ContentAccess::CData * ContentAccess::CData::NewL(class ContentAccess::TVirtualPathPtr const &, enum ContentAccess::TContentShareMode)
+	?NewLC@CData@ContentAccess@@SAPAV12@AAVRFile@@ABVTDesC16@@@Z @ 138 NONAME ; class ContentAccess::CData * ContentAccess::CData::NewLC(class RFile &, class TDesC16 const &)
+	?NewLC@CData@ContentAccess@@SAPAV12@ABVTVirtualPathPtr@2@W4TContentShareMode@2@@Z @ 139 NONAME ; class ContentAccess::CData * ContentAccess::CData::NewLC(class ContentAccess::TVirtualPathPtr const &, enum ContentAccess::TContentShareMode)
+	?CopyFile@CAgentManager@ContentAccess@@UAEHAAVRFile@@ABVTDesC16@@@Z @ 140 NONAME ; int ContentAccess::CAgentManager::CopyFile(class RFile &, class TDesC16 const &)
+	?CopyFile@CManager@ContentAccess@@QBEHAAVRFile@@ABVTDesC16@@@Z @ 141 NONAME ; int ContentAccess::CManager::CopyFile(class RFile &, class TDesC16 const &) const
+	?Read@CAgentData@ContentAccess@@UAEHHAAVTDes8@@HAAVTRequestStatus@@@Z @ 142 NONAME ; int ContentAccess::CAgentData::Read(int, class TDes8 &, int, class TRequestStatus &)
+	?Read_Unused@CData@ContentAccess@@ABEHHAAVTDes8@@HAAVTRequestStatus@@@Z @ 143 NONAME ; int ContentAccess::CData::Read_Unused(int, class TDes8 &, int, class TRequestStatus &) const
+	?KCafLoadPostProductionAgents@@3EB @ 144 NONAME ; unsigned char const KCafLoadPostProductionAgents
+	?ReadCancel@CData@ContentAccess@@QBEXAAVTRequestStatus@@@Z @ 145 NONAME ; void ContentAccess::CData::ReadCancel(class TRequestStatus &) const   
+	?ReadCancel@CAgentData@ContentAccess@@UAEXAAVTRequestStatus@@@Z @ 146 NONAME ; void ContentAccess::CAgentData::ReadCancel(class TRequestStatus &) const   
+	?DeleteAllRightsObjects@CAgentRightsManager@ContentAccess@@UAEHAAVRFile@@ABVTDesC16@@@Z @ 147 NONAME ; int ContentAccess::CAgentRightsManager::DeleteAllRightsObjects(class RFile &, class TDesC16 const &)
+	?DeleteAllRightsObjects@CRightsManager@ContentAccess@@QAEHAAVRFile@@ABVTDesC16@@@Z @ 148 NONAME ; int ContentAccess::CRightsManager::DeleteAllRightsObjects(class RFile &, class TDesC16 const &)
+	?DisplayInfoL@CAgentManager@ContentAccess@@UAEXW4TDisplayInfo@2@AAVRFile@@ABVTDesC16@@@Z @ 149 NONAME ; void ContentAccess::CAgentManager::DisplayInfoL(enum ContentAccess::TDisplayInfo, class RFile &, class TDesC16 const &)
+	?DisplayInfoL@CManager@ContentAccess@@QAEXW4TDisplayInfo@2@AAVRFile@@ABVTDesC16@@@Z @ 150 NONAME ; void ContentAccess::CManager::DisplayInfoL(enum ContentAccess::TDisplayInfo, class RFile &, class TDesC16 const &)
+	?GetAttribute@CAgentManager@ContentAccess@@UAEHHAAHAAVRFile@@ABVTDesC16@@@Z @ 151 NONAME ; int ContentAccess::CAgentManager::GetAttribute(int, int &, class RFile &, class TDesC16 const &)
+	?GetAttribute@CManager@ContentAccess@@QAEHHAAHAAVRFile@@ABVTDesC16@@@Z @ 152 NONAME ; int ContentAccess::CManager::GetAttribute(int, int &, class RFile &, class TDesC16 const &)
+	?GetAttributeSet@CAgentManager@ContentAccess@@UAEHAAVRAttributeSet@2@AAVRFile@@ABVTDesC16@@@Z @ 153 NONAME ; int ContentAccess::CAgentManager::GetAttributeSet(class ContentAccess::RAttributeSet &, class RFile &, class TDesC16 const &)
+	?GetAttributeSet@CManager@ContentAccess@@QAEHAAVRAttributeSet@2@AAVRFile@@ABVTDesC16@@@Z @ 154 NONAME ; int ContentAccess::CManager::GetAttributeSet(class ContentAccess::RAttributeSet &, class RFile &, class TDesC16 const &)
+	?GetStringAttribute@CAgentManager@ContentAccess@@UAEHHAAVTDes16@@AAVRFile@@ABVTDesC16@@@Z @ 155 NONAME ; int ContentAccess::CAgentManager::GetStringAttribute(int, class TDes16 &, class RFile &, class TDesC16 const &)
+	?GetStringAttribute@CManager@ContentAccess@@QAEHHAAVTDes16@@AAVRFile@@ABVTDesC16@@@Z @ 156 NONAME ; int ContentAccess::CManager::GetStringAttribute(int, class TDes16 &, class RFile &, class TDesC16 const &)
+	?GetStringAttributeSet@CAgentManager@ContentAccess@@UAEHAAVRStringAttributeSet@2@AAVRFile@@ABVTDesC16@@@Z @ 157 NONAME ; int ContentAccess::CAgentManager::GetStringAttributeSet(class ContentAccess::RStringAttributeSet &, class RFile &, class TDesC16 const &)
+	?GetStringAttributeSet@CManager@ContentAccess@@QAEHAAVRStringAttributeSet@2@AAVRFile@@ABVTDesC16@@@Z @ 158 NONAME ; int ContentAccess::CManager::GetStringAttributeSet(class ContentAccess::RStringAttributeSet &, class RFile &, class TDesC16 const &)
+	?ListRightsL@CAgentRightsManager@ContentAccess@@UBEXAAV?$RStreamablePtrArray@VCRightsInfo@ContentAccess@@@2@AAVRFile@@ABVTDesC16@@@Z @ 159 NONAME ; void ContentAccess::CAgentRightsManager::ListRightsL(class ContentAccess::RStreamablePtrArray<class ContentAccess::CRightsInfo> &, class RFile &, class TDesC16 const &) const
+	?ListRightsL@CRightsManager@ContentAccess@@QBEXAAV?$RStreamablePtrArray@VCRightsInfo@ContentAccess@@@2@AAVRFile@@ABVTDesC16@@@Z @ 160 NONAME ; void ContentAccess::CRightsManager::ListRightsL(class ContentAccess::RStreamablePtrArray<class ContentAccess::CRightsInfo> &, class RFile &, class TDesC16 const &) const
+	?ContentMimeTypeL@CAgentImportFile@ContentAccess@@UAEHAAVTDes8@@@Z @ 161 NONAME ; int ContentAccess::CAgentImportFile::ContentMimeTypeL(class TDes8 &)
+	?ContentMimeTypeL@CImportFile@ContentAccess@@QAEHAAVTDes8@@@Z @ 162 NONAME ; int ContentAccess::CImportFile::ContentMimeTypeL(class TDes8 &)
+	?DataSize64L@CAgentData@ContentAccess@@UAEXAA_J@Z @ 163 NONAME ; void ContentAccess::CAgentData::DataSize64L(long long &)
+	?DataSize64L@CData@ContentAccess@@QAEXAA_J@Z @ 164 NONAME ; void ContentAccess::CData::DataSize64L(long long &)
+	?Read64@CAgentData@ContentAccess@@UAEH_JAAVTDes8@@HAAVTRequestStatus@@@Z @ 165 NONAME ; int ContentAccess::CAgentData::Read64(long long, class TDes8 &, int, class TRequestStatus &)
+	?Read@CData@ContentAccess@@QBEH_JAAVTDes8@@HAAVTRequestStatus@@@Z @ 166 NONAME ; int ContentAccess::CData::Read(long long, class TDes8 &, int, class TRequestStatus &) const
+	?Seek64@CAgentData@ContentAccess@@UAEHW4TSeek@@AA_J@Z @ 167 NONAME ; int ContentAccess::CAgentData::Seek64(enum TSeek, long long &)
+	?Seek64@CData@ContentAccess@@QBEHW4TSeek@@AA_J@Z @ 168 NONAME ; int ContentAccess::CData::Seek64(enum TSeek, long long &) const
+	?GetStringAttribute@CManager@ContentAccess@@QBEHABVTDesC8@@HAAVTDes16@@@Z @ 169 NONAME ; int ContentAccess::CManager::GetStringAttribute(class TDesC8 const &, int, class TDes16 &) const
+	?GetStringAttributeSet@CAgentManager@ContentAccess@@UAEHABVTDesC8@@AAVRStringAttributeSet@2@@Z @ 170 NONAME ; int ContentAccess::CAgentManager::GetStringAttributeSet(class TDesC8 const &, class ContentAccess::RStringAttributeSet &)
+	?GetAttribute@CAgentManager@ContentAccess@@UAEHABVTDesC8@@HAAH@Z @ 171 NONAME ; int ContentAccess::CAgentManager::GetAttribute(class TDesC8 const &, int, int &)
+	?NewL@CData@ContentAccess@@SAPAV12@ABVTDesC8@@W4TIntent@2@@Z @ 172 NONAME ; class ContentAccess::CData * ContentAccess::CData::NewL(class TDesC8 const &, enum ContentAccess::TIntent)
+	?CreateContentBrowserL@CAgentFactory@ContentAccess@@UAEPAVCAgentContent@2@ABVTDesC8@@@Z @ 173 NONAME ; class ContentAccess::CAgentContent * ContentAccess::CAgentFactory::CreateContentBrowserL(class TDesC8 const &)
+	?Read@CData@ContentAccess@@QBEXABVTDesC8@@AAVTDes8@@AAVTRequestStatus@@@Z @ 174 NONAME ; void ContentAccess::CData::Read(class TDesC8 const &, class TDes8 &, class TRequestStatus &) const
+	?Read@CAgentData@ContentAccess@@UAEXABVTDesC8@@AAVTDes8@@AAVTRequestStatus@@@Z @ 175 NONAME ; void ContentAccess::CAgentData::Read(class TDesC8 const &, class TDes8 &, class TRequestStatus &)
+	?GetAttributeSet@CManager@ContentAccess@@QBEHABVTDesC8@@AAVRAttributeSet@2@@Z @ 176 NONAME ; int ContentAccess::CManager::GetAttributeSet(class TDesC8 const &, class ContentAccess::RAttributeSet &) const
+	?GetAttributeSet@CAgentManager@ContentAccess@@UAEHABVTDesC8@@AAVRAttributeSet@2@@Z @ 177 NONAME ; int ContentAccess::CAgentManager::GetAttributeSet(class TDesC8 const &, class ContentAccess::RAttributeSet &)
+	?DoRecognizeL@CAgentResolver@ContentAccess@@QAEHABVTDesC8@@AAVTDes8@@1@Z @ 178 NONAME ; int ContentAccess::CAgentResolver::DoRecognizeL(class TDesC8 const &, class TDes8 &, class TDes8 &)
+	?GetAttribute@CManager@ContentAccess@@QBEHABVTDesC8@@HAAH@Z @ 179 NONAME ; int ContentAccess::CManager::GetAttribute(class TDesC8 const &, int, int &) const
+	?NewLC@CContent@ContentAccess@@SAPAV12@ABVTDesC8@@@Z @ 180 NONAME ; class ContentAccess::CContent * ContentAccess::CContent::NewLC(class TDesC8 const &)
+	?GetStringAttributeSet@CManager@ContentAccess@@QBEHABVTDesC8@@AAVRStringAttributeSet@2@@Z @ 181 NONAME ; int ContentAccess::CManager::GetStringAttributeSet(class TDesC8 const &, class ContentAccess::RStringAttributeSet &) const
+	?CreateDataConsumerL@CAgentFactory@ContentAccess@@UAEPAVCAgentData@2@ABVTDesC8@@@Z @ 182 NONAME ; class ContentAccess::CAgentData * ContentAccess::CAgentFactory::CreateDataConsumerL(class TDesC8 const &)
+	?IsRecognizedL@CAgentManager@ContentAccess@@UBEHABVTDesC8@@@Z @ 183 NONAME ; int ContentAccess::CAgentManager::IsRecognizedL(class TDesC8 const &) const
+	?NewL@CData@ContentAccess@@SAPAV12@ABVTDesC8@@@Z @ 184 NONAME ; class ContentAccess::CData * ContentAccess::CData::NewL(class TDesC8 const &)
+	?Read@CAgentData@ContentAccess@@UAEHABVTDesC8@@AAVTDes8@@@Z @ 185 NONAME ; int ContentAccess::CAgentData::Read(class TDesC8 const &, class TDes8 &)
+	?GetStringAttribute@CAgentManager@ContentAccess@@UAEHABVTDesC8@@HAAVTDes16@@@Z @ 186 NONAME ; int ContentAccess::CAgentManager::GetStringAttribute(class TDesC8 const &, int, class TDes16 &)
+	?RecognizeContentL@CAgentManager@ContentAccess@@UBEHABVTDesC8@@AAVTDes8@@1@Z @ 187 NONAME ; int ContentAccess::CAgentManager::RecognizeContentL(class TDesC8 const &, class TDes8 &, class TDes8 &) const
+	?NewLC@CData@ContentAccess@@SAPAV12@ABVTDesC8@@@Z @ 188 NONAME ; class ContentAccess::CData * ContentAccess::CData::NewLC(class TDesC8 const &)
+	?Read@CData@ContentAccess@@QBEHABVTDesC8@@AAVTDes8@@@Z @ 189 NONAME ; int ContentAccess::CData::Read(class TDesC8 const &, class TDes8 &) const
+	?NewLC@CData@ContentAccess@@SAPAV12@ABVTDesC8@@W4TIntent@2@@Z @ 190 NONAME ; class ContentAccess::CData * ContentAccess::CData::NewLC(class TDesC8 const &, enum ContentAccess::TIntent)
+	?NewL@CContent@ContentAccess@@SAPAV12@ABVTDesC8@@@Z @ 191 NONAME ; class ContentAccess::CContent * ContentAccess::CContent::NewL(class TDesC8 const &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/contentaccessfwfordrm/BWINS/cafutils_v2u.def	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,103 @@
+EXPORTS
+	??4CBitset@ContentAccess@@QAEAAV01@ABV01@@Z @ 1 NONAME ; public: class ContentAccess::CBitset & __thiscall ContentAccess::CBitset::operator=(class ContentAccess::CBitset const &)
+	??8CBitset@ContentAccess@@QBEHABV01@@Z @ 2 NONAME ; public: int __thiscall ContentAccess::CBitset::operator==(class ContentAccess::CBitset const &)const 
+	?ExternalizeL@CBitset@ContentAccess@@QBEXAAVRWriteStream@@@Z @ 3 NONAME ; public: void __thiscall ContentAccess::CBitset::ExternalizeL(class RWriteStream &)const 
+	?InternalizeL@CBitset@ContentAccess@@QAEXAAVRReadStream@@@Z @ 4 NONAME ; public: void __thiscall ContentAccess::CBitset::InternalizeL(class RReadStream &)
+	?Invert@CBitset@ContentAccess@@QAEXXZ @ 5 NONAME ; public: void __thiscall ContentAccess::CBitset::Invert(void)
+	?IsSet@CBitset@ContentAccess@@QBEHH@Z @ 6 NONAME ; public: int __thiscall ContentAccess::CBitset::IsSet(int)const 
+	?IsSetList@CBitset@ContentAccess@@QBAHHZZ @ 7 NONAME ; public: int __cdecl ContentAccess::CBitset::IsSetList(int,...)const 
+	?NewL@CBitset@ContentAccess@@SAPAV12@ABV12@@Z @ 8 NONAME ; public: static class ContentAccess::CBitset * __cdecl ContentAccess::CBitset::NewL(class ContentAccess::CBitset const &)
+	?NewL@CBitset@ContentAccess@@SAPAV12@H@Z @ 9 NONAME ; public: static class ContentAccess::CBitset * __cdecl ContentAccess::CBitset::NewL(int)
+	?NewLC@CBitset@ContentAccess@@SAPAV12@ABV12@@Z @ 10 NONAME ; public: static class ContentAccess::CBitset * __cdecl ContentAccess::CBitset::NewLC(class ContentAccess::CBitset const &)
+	?NewLC@CBitset@ContentAccess@@SAPAV12@H@Z @ 11 NONAME ; public: static class ContentAccess::CBitset * __cdecl ContentAccess::CBitset::NewLC(int)
+	?Reset@CBitset@ContentAccess@@QAEXXZ @ 12 NONAME ; public: void __thiscall ContentAccess::CBitset::Reset(void)
+	?Set@CBitset@ContentAccess@@QAEXH@Z @ 13 NONAME ; public: void __thiscall ContentAccess::CBitset::Set(int)
+	?SetAll@CBitset@ContentAccess@@QAEXXZ @ 14 NONAME ; public: void __thiscall ContentAccess::CBitset::SetAll(void)
+	?SetListL@CBitset@ContentAccess@@QAAXHZZ @ 15 NONAME ; public: void __cdecl ContentAccess::CBitset::SetListL(int,...)
+	?Unset@CBitset@ContentAccess@@QAEXH@Z @ 16 NONAME ; public: void __thiscall ContentAccess::CBitset::Unset(int)
+	?MaxBits@CBitset@ContentAccess@@QBEHXZ @ 17 NONAME ; public: int __thiscall ContentAccess::CBitset::MaxBits(void)const 
+	??1CCafMimeHeader@ContentAccess@@UAE@XZ @ 18 NONAME ; public: virtual __thiscall ContentAccess::CCafMimeHeader::~CCafMimeHeader(void)
+	?AddNonStandardMimeL@CCafMimeHeader@ContentAccess@@QAEXABVTDesC8@@0@Z @ 19 NONAME ; public: void __thiscall ContentAccess::CCafMimeHeader::AddNonStandardMimeL(class TDesC8 const &,class TDesC8 const &)
+	?ExternalizeL@CCafMimeHeader@ContentAccess@@QBEXAAVRWriteStream@@@Z @ 20 NONAME ; public: void __thiscall ContentAccess::CCafMimeHeader::ExternalizeL(class RWriteStream &)const 
+	?InternalizeL@CCafMimeHeader@ContentAccess@@QAEXAAVRReadStream@@@Z @ 21 NONAME ; public: void __thiscall ContentAccess::CCafMimeHeader::InternalizeL(class RReadStream &)
+	?NewL@CCafMimeHeader@ContentAccess@@SAPAV12@ABVTDesC8@@@Z @ 22 NONAME ; public: static class ContentAccess::CCafMimeHeader * __cdecl ContentAccess::CCafMimeHeader::NewL(class TDesC8 const &)
+	?NonStandardMimeCount@CCafMimeHeader@ContentAccess@@QBEHXZ @ 23 NONAME ; public: int __thiscall ContentAccess::CCafMimeHeader::NonStandardMimeCount(void)const 
+	?NonStandardMimeData@CCafMimeHeader@ContentAccess@@QBE?AVTPtrC8@@H@Z @ 24 NONAME ; public: class TPtrC8  __thiscall ContentAccess::CCafMimeHeader::NonStandardMimeData(int)const 
+	?NonStandardMimeField@CCafMimeHeader@ContentAccess@@QBE?AVTPtrC8@@H@Z @ 25 NONAME ; public: class TPtrC8  __thiscall ContentAccess::CCafMimeHeader::NonStandardMimeField(int)const 
+	?SetStandardMimeDataL@CCafMimeHeader@ContentAccess@@QAEXABW4TMimeFields@2@ABVTDesC8@@@Z @ 26 NONAME ; public: void __thiscall ContentAccess::CCafMimeHeader::SetStandardMimeDataL(enum ContentAccess::TMimeFields const &,class TDesC8 const &)
+	?StandardMimeData@CCafMimeHeader@ContentAccess@@QBE?AVTPtrC8@@ABW4TMimeFields@2@@Z @ 27 NONAME ; public: class TPtrC8  __thiscall ContentAccess::CCafMimeHeader::StandardMimeData(enum ContentAccess::TMimeFields const &)const 
+	??0RAttributeSet@ContentAccess@@QAE@XZ @ 28 NONAME ; ContentAccess::RAttributeSet::RAttributeSet(void)
+	??0RStringAttributeSet@ContentAccess@@QAE@XZ @ 29 NONAME ; ContentAccess::RStringAttributeSet::RStringAttributeSet(void)
+	??0TVirtualPathPtr@ContentAccess@@QAE@ABV01@@Z @ 30 NONAME ; ContentAccess::TVirtualPathPtr::TVirtualPathPtr(class ContentAccess::TVirtualPathPtr const &)
+	??0TVirtualPathPtr@ContentAccess@@QAE@ABVTDesC16@@0@Z @ 31 NONAME ; ContentAccess::TVirtualPathPtr::TVirtualPathPtr(class TDesC16 const &, class TDesC16 const &)
+	??0TVirtualPathPtr@ContentAccess@@QAE@ABVTDesC16@@@Z @ 32 NONAME ; ContentAccess::TVirtualPathPtr::TVirtualPathPtr(class TDesC16 const &)
+	??4TVirtualPathPtr@ContentAccess@@QAEAAV01@ABV01@@Z @ 33 NONAME ; class ContentAccess::TVirtualPathPtr & ContentAccess::TVirtualPathPtr::operator=(class ContentAccess::TVirtualPathPtr const &)
+	??4TVirtualPathPtr@ContentAccess@@QAEAAV01@ABVTDesC16@@@Z @ 34 NONAME ; class ContentAccess::TVirtualPathPtr & ContentAccess::TVirtualPathPtr::operator=(class TDesC16 const &)
+	??ACDirStreamable@ContentAccess@@QBEABVTEntry@@H@Z @ 35 NONAME ; class TEntry const & ContentAccess::CDirStreamable::operator[](int) const
+	??ACMetaDataArray@ContentAccess@@QBEABVCMetaData@1@H@Z @ 36 NONAME ; class ContentAccess::CMetaData const & ContentAccess::CMetaDataArray::operator[](int) const
+	??ARAttributeSet@ContentAccess@@QBEHH@Z @ 37 NONAME ; int ContentAccess::RAttributeSet::operator[](int) const
+	??ARStringAttributeSet@ContentAccess@@QBEHH@Z @ 38 NONAME ; int ContentAccess::RStringAttributeSet::operator[](int) const
+	?AddL@CDirStreamable@ContentAccess@@QAEXABVTEntry@@@Z @ 39 NONAME ; void ContentAccess::CDirStreamable::AddL(class TEntry const &)
+	?AddL@CMetaDataArray@ContentAccess@@QAEXABVTDesC16@@0@Z @ 40 NONAME ; void ContentAccess::CMetaDataArray::AddL(class TDesC16 const &, class TDesC16 const &)
+	?AddL@CMetaDataArray@ContentAccess@@QAEXABVTDesC8@@0@Z @ 41 NONAME ; void ContentAccess::CMetaDataArray::AddL(class TDesC8 const &, class TDesC8 const &)
+	?AddL@RAttributeSet@ContentAccess@@QAEXH@Z @ 42 NONAME ; void ContentAccess::RAttributeSet::AddL(int)
+	?AddL@RStringAttributeSet@ContentAccess@@QAEXH@Z @ 43 NONAME ; void ContentAccess::RStringAttributeSet::AddL(int)
+	?Close@RAttributeSet@ContentAccess@@QAEXXZ @ 44 NONAME ; void ContentAccess::RAttributeSet::Close(void)
+	?Close@RStringAttributeSet@ContentAccess@@QAEXXZ @ 45 NONAME ; void ContentAccess::RStringAttributeSet::Close(void)
+	?Count@CDirStreamable@ContentAccess@@QBEHXZ @ 46 NONAME ; int ContentAccess::CDirStreamable::Count(void) const
+	?Count@CMetaDataArray@ContentAccess@@QBEHXZ @ 47 NONAME ; int ContentAccess::CMetaDataArray::Count(void) const
+	?Count@RAttributeSet@ContentAccess@@QBEHXZ @ 48 NONAME ; int ContentAccess::RAttributeSet::Count(void) const
+	?Count@RStringAttributeSet@ContentAccess@@QBEHXZ @ 49 NONAME ; int ContentAccess::RStringAttributeSet::Count(void) const
+	?Data8@CMetaData@ContentAccess@@QBEABVTDesC8@@XZ @ 50 NONAME ; class TDesC8 const & ContentAccess::CMetaData::Data8(void) const
+	?Data@CMetaData@ContentAccess@@QBEABVTDesC16@@XZ @ 51 NONAME ; class TDesC16 const & ContentAccess::CMetaData::Data(void) const
+	?Description@CRightsInfo@ContentAccess@@QBEABVTDesC16@@XZ @ 52 NONAME ; class TDesC16 const & ContentAccess::CRightsInfo::Description(void) const
+	?ExternalizeL@CDirStreamable@ContentAccess@@QBEXAAVRWriteStream@@@Z @ 53 NONAME ; void ContentAccess::CDirStreamable::ExternalizeL(class RWriteStream &) const
+	?ExternalizeL@CEmbeddedObject@ContentAccess@@QBEXAAVRWriteStream@@@Z @ 54 NONAME ; void ContentAccess::CEmbeddedObject::ExternalizeL(class RWriteStream &) const
+	?ExternalizeL@CMetaDataArray@ContentAccess@@QBEXAAVRWriteStream@@@Z @ 55 NONAME ; void ContentAccess::CMetaDataArray::ExternalizeL(class RWriteStream &) const
+	?ExternalizeL@CRightsInfo@ContentAccess@@QBEXAAVRWriteStream@@@Z @ 56 NONAME ; void ContentAccess::CRightsInfo::ExternalizeL(class RWriteStream &) const
+	?ExternalizeL@CVirtualPath@ContentAccess@@QBEXAAVRWriteStream@@@Z @ 57 NONAME ; void ContentAccess::CVirtualPath::ExternalizeL(class RWriteStream &) const
+	?ExternalizeL@RAttributeSet@ContentAccess@@QBEXAAVRWriteStream@@@Z @ 58 NONAME ; void ContentAccess::RAttributeSet::ExternalizeL(class RWriteStream &) const
+	?ExternalizeL@RStringAttributeSet@ContentAccess@@QBEXAAVRWriteStream@@@Z @ 59 NONAME ; void ContentAccess::RStringAttributeSet::ExternalizeL(class RWriteStream &) const
+	?Field8@CMetaData@ContentAccess@@QBEABVTDesC8@@XZ @ 60 NONAME ; class TDesC8 const & ContentAccess::CMetaData::Field8(void) const
+	?Field@CMetaData@ContentAccess@@QBEABVTDesC16@@XZ @ 61 NONAME ; class TDesC16 const & ContentAccess::CMetaData::Field(void) const
+	?GetCombinedUriUniqueId@CVirtualPath@ContentAccess@@QAEABVTDesC16@@XZ @ 62 NONAME ; class TDesC16 const & ContentAccess::CVirtualPath::GetCombinedUriUniqueId(void)
+	?GetValue@RAttributeSet@ContentAccess@@QBEHHAAH@Z @ 63 NONAME ; int ContentAccess::RAttributeSet::GetValue(int, int &) const
+	?GetValue@RStringAttributeSet@ContentAccess@@QBEHHAAVTDes16@@@Z @ 64 NONAME ; int ContentAccess::RStringAttributeSet::GetValue(int, class TDes16 &) const
+	?GetValueLength@RStringAttributeSet@ContentAccess@@QBEHH@Z @ 65 NONAME ; int ContentAccess::RStringAttributeSet::GetValueLength(int) const
+	?InternalizeL@RAttributeSet@ContentAccess@@QAEXAAVRReadStream@@@Z @ 66 NONAME ; void ContentAccess::RAttributeSet::InternalizeL(class RReadStream &)
+	?InternalizeL@RStringAttributeSet@ContentAccess@@QAEXAAVRReadStream@@@Z @ 67 NONAME ; void ContentAccess::RStringAttributeSet::InternalizeL(class RReadStream &)
+	?MimeType@CEmbeddedObject@ContentAccess@@QBEABVTDesC8@@XZ @ 68 NONAME ; class TDesC8 const & ContentAccess::CEmbeddedObject::MimeType(void) const
+	?Name@CEmbeddedObject@ContentAccess@@QBEABVTDesC16@@XZ @ 69 NONAME ; class TDesC16 const & ContentAccess::CEmbeddedObject::Name(void) const
+	?NewL@CDirStreamable@ContentAccess@@SAPAV12@AAVCDir@@@Z @ 70 NONAME ; class ContentAccess::CDirStreamable * ContentAccess::CDirStreamable::NewL(class CDir &)
+	?NewL@CDirStreamable@ContentAccess@@SAPAV12@VRReadStream@@@Z @ 71 NONAME ; class ContentAccess::CDirStreamable * ContentAccess::CDirStreamable::NewL(class RReadStream)
+	?NewL@CDirStreamable@ContentAccess@@SAPAV12@XZ @ 72 NONAME ; class ContentAccess::CDirStreamable * ContentAccess::CDirStreamable::NewL(void)
+	?NewL@CEmbeddedObject@ContentAccess@@SAPAV12@AAVRReadStream@@@Z @ 73 NONAME ; class ContentAccess::CEmbeddedObject * ContentAccess::CEmbeddedObject::NewL(class RReadStream &)
+	?NewL@CEmbeddedObject@ContentAccess@@SAPAV12@ABVTDesC16@@0ABVTDesC8@@W4TEmbeddedType@2@@Z @ 74 NONAME ; class ContentAccess::CEmbeddedObject * ContentAccess::CEmbeddedObject::NewL(class TDesC16 const &, class TDesC16 const &, class TDesC8 const &, enum ContentAccess::TEmbeddedType)
+	?NewL@CEmbeddedObject@ContentAccess@@SAPAV12@ABVTDesC16@@ABVTDesC8@@W4TEmbeddedType@2@@Z @ 75 NONAME ; class ContentAccess::CEmbeddedObject * ContentAccess::CEmbeddedObject::NewL(class TDesC16 const &, class TDesC8 const &, enum ContentAccess::TEmbeddedType)
+	?NewL@CMetaDataArray@ContentAccess@@SAPAV12@AAVRReadStream@@@Z @ 76 NONAME ; class ContentAccess::CMetaDataArray * ContentAccess::CMetaDataArray::NewL(class RReadStream &)
+	?NewL@CMetaDataArray@ContentAccess@@SAPAV12@XZ @ 77 NONAME ; class ContentAccess::CMetaDataArray * ContentAccess::CMetaDataArray::NewL(void)
+	?NewL@CRightsInfo@ContentAccess@@SAPAV12@AAVRReadStream@@@Z @ 78 NONAME ; class ContentAccess::CRightsInfo * ContentAccess::CRightsInfo::NewL(class RReadStream &)
+	?NewL@CRightsInfo@ContentAccess@@SAPAV12@ABVTDesC16@@0HW4TRightsStatus@2@@Z @ 79 NONAME ; class ContentAccess::CRightsInfo * ContentAccess::CRightsInfo::NewL(class TDesC16 const &, class TDesC16 const &, int, enum ContentAccess::TRightsStatus)
+	?NewL@CVirtualPath@ContentAccess@@SAPAV12@AAVRReadStream@@@Z @ 80 NONAME ; class ContentAccess::CVirtualPath * ContentAccess::CVirtualPath::NewL(class RReadStream &)
+	?NewL@CVirtualPath@ContentAccess@@SAPAV12@ABVTDesC16@@0@Z @ 81 NONAME ; class ContentAccess::CVirtualPath * ContentAccess::CVirtualPath::NewL(class TDesC16 const &, class TDesC16 const &)
+	?NewL@CVirtualPath@ContentAccess@@SAPAV12@ABVTDesC16@@@Z @ 82 NONAME ; class ContentAccess::CVirtualPath * ContentAccess::CVirtualPath::NewL(class TDesC16 const &)
+	?NewL@CVirtualPath@ContentAccess@@SAPAV12@ABVTVirtualPathPtr@2@@Z @ 83 NONAME ; class ContentAccess::CVirtualPath * ContentAccess::CVirtualPath::NewL(class ContentAccess::TVirtualPathPtr const &)
+	?NewLC@CMetaDataArray@ContentAccess@@SAPAV12@XZ @ 84 NONAME ; class ContentAccess::CMetaDataArray * ContentAccess::CMetaDataArray::NewLC(void)
+	?RightsStatus@CRightsInfo@ContentAccess@@QBE?AW4TRightsStatus@2@XZ @ 85 NONAME ; enum ContentAccess::TRightsStatus ContentAccess::CRightsInfo::RightsStatus(void) const
+	?RightsType@CRightsInfo@ContentAccess@@QBEHXZ @ 86 NONAME ; int ContentAccess::CRightsInfo::RightsType(void) const
+	?SearchL@CMetaDataArray@ContentAccess@@QBEABVTDesC16@@ABV3@H@Z @ 87 NONAME ; class TDesC16 const & ContentAccess::CMetaDataArray::SearchL(class TDesC16 const &, int) const
+	?SearchL@CMetaDataArray@ContentAccess@@QBEABVTDesC8@@ABV3@H@Z @ 88 NONAME ; class TDesC8 const & ContentAccess::CMetaDataArray::SearchL(class TDesC8 const &, int) const
+	?SetValue@RAttributeSet@ContentAccess@@QAEHHHH@Z @ 89 NONAME ; int ContentAccess::RAttributeSet::SetValue(int, int, int)
+	?SetValue@RStringAttributeSet@ContentAccess@@QAEHHABVTDesC16@@H@Z @ 90 NONAME ; int ContentAccess::RStringAttributeSet::SetValue(int, class TDesC16 const &, int)
+	?Sort@CDirStreamable@ContentAccess@@QAEHI@Z @ 91 NONAME ; int ContentAccess::CDirStreamable::Sort(unsigned int)
+	?Type@CEmbeddedObject@ContentAccess@@QBE?AW4TEmbeddedType@2@XZ @ 92 NONAME ; enum ContentAccess::TEmbeddedType ContentAccess::CEmbeddedObject::Type(void) const
+	?URI@CVirtualPath@ContentAccess@@QBEABVTDesC16@@XZ @ 93 NONAME ; class TDesC16 const & ContentAccess::CVirtualPath::URI(void) const
+	?URI@TVirtualPathPtr@ContentAccess@@QBEABVTDesC16@@XZ @ 94 NONAME ; class TDesC16 const & ContentAccess::TVirtualPathPtr::URI(void) const
+	?UniqueId@CEmbeddedObject@ContentAccess@@QBEABVTDesC16@@XZ @ 95 NONAME ; class TDesC16 const & ContentAccess::CEmbeddedObject::UniqueId(void) const
+	?UniqueId@CRightsInfo@ContentAccess@@QBEABVTDesC16@@XZ @ 96 NONAME ; class TDesC16 const & ContentAccess::CRightsInfo::UniqueId(void) const
+	?UniqueId@CVirtualPath@ContentAccess@@QBEABVTDesC16@@XZ @ 97 NONAME ; class TDesC16 const & ContentAccess::CVirtualPath::UniqueId(void) const
+	?UniqueId@TVirtualPathPtr@ContentAccess@@QBEABVTDesC16@@XZ @ 98 NONAME ; class TDesC16 const & ContentAccess::TVirtualPathPtr::UniqueId(void) const
+	?NewL@CCAFHelper@ContentAccess@@SAPAV12@XZ @ 99 NONAME ; class ContentAccess::CCAFHelper * ContentAccess::CCAFHelper::NewL(void)
+	?NewLC@CCAFHelper@ContentAccess@@SAPAV12@XZ @ 100 NONAME ; class ContentAccess::CCAFHelper * ContentAccess::CCAFHelper::NewLC(void)
+	??RCCAFHelper@ContentAccess@@QBEAAVMCAFHelperInterface@1@XZ @ 101 NONAME ; class ContentAccess::MCAFHelperInterface & ContentAccess::CCAFHelper::operator()(void) const
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/contentaccessfwfordrm/EABI/caf_v3u.def	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,225 @@
+EXPORTS
+	_ZN13ContentAccess10CAttribute4GetLEv @ 1 NONAME
+	_ZN13ContentAccess10CAttribute5ResetEv @ 2 NONAME
+	_ZN13ContentAccess10CAttribute8QuerySetEv @ 3 NONAME
+	_ZN13ContentAccess5CData13ExecuteIntentENS_7TIntentE @ 4 NONAME
+	_ZN13ContentAccess5CData14EvaluateIntentENS_7TIntentE @ 5 NONAME
+	_ZN13ContentAccess5CData7SetQosLENS_13TQosAttributeEi @ 6 NONAME
+	_ZN13ContentAccess5CData9DataSizeLERi @ 7 NONAME
+	_ZN13ContentAccess8CContent12OpenContentLENS_7TIntentE @ 8 NONAME
+	_ZN13ContentAccess8CContent13NewAttributeLEi @ 9 NONAME
+	_ZN13ContentAccess8CContent4NewLERK7TDesC16 @ 10 NONAME
+	_ZN13ContentAccess8CContent5NewLCERK7TDesC16 @ 11 NONAME
+	_ZNK13ContentAccess10CAttribute11ResponseSetEv @ 12 NONAME
+	_ZNK13ContentAccess5CData4ReadER5TDes8 @ 13 NONAME
+	_ZNK13ContentAccess5CData4ReadER5TDes8R14TRequestStatus @ 14 NONAME
+	_ZNK13ContentAccess5CData4ReadER5TDes8i @ 15 NONAME
+	_ZNK13ContentAccess5CData4ReadER5TDes8iR14TRequestStatus @ 16 NONAME
+	_ZNK13ContentAccess5CData4SeekE5TSeekRi @ 17 NONAME
+	_ZN13ContentAccess11CImportFile17WriteDataCompleteER14TRequestStatus @ 18 NONAME
+	_ZN13ContentAccess11CImportFile17WriteDataCompleteEv @ 19 NONAME
+	_ZN13ContentAccess11CImportFile9WriteDataERK6TDesC8 @ 20 NONAME
+	_ZN13ContentAccess11CImportFile9WriteDataERK6TDesC8R14TRequestStatus @ 21 NONAME
+	_ZN13ContentAccess14CAgentResolver12DoRecognizeLERK7TDesC16RK6TDesC8R5TDes8S8_ @ 22 NONAME
+	_ZN13ContentAccess14CAgentResolver19PreferredBufferSizeEv @ 23 NONAME
+	_ZN13ContentAccess14CAgentResolver4NewLEi @ 24 NONAME
+	_ZN13ContentAccess14CAgentResolver5NewLCEi @ 25 NONAME
+	_ZN13ContentAccess19CSupplierOutputFile11AttributesLEi @ 26 NONAME
+	_ZN13ContentAccess19CSupplierOutputFile4NewLERK7TDesC16NS_11TOutputTypeE @ 27 NONAME
+	_ZN13ContentAccess19CSupplierOutputFile9MimeTypeLEv @ 28 NONAME
+	_ZN13ContentAccess8CManager11DeleteFileLERK7TDesC16 @ 29 NONAME
+	_ZN13ContentAccess9CSupplier11ImportFileLERNS_14CCafMimeHeaderERK7TDesC16 @ 30 NONAME
+	_ZN13ContentAccess9CSupplier17IsImportSupportedERK6TDesC8 @ 31 NONAME
+	_ZN13ContentAccess9CSupplier19SetOutputDirectoryLERK7TDesC16 @ 32 NONAME
+	_ZN13ContentAccess9CSupplier4NewLEv @ 33 NONAME
+	_ZN13ContentAccess9CSupplier5NewLCEv @ 34 NONAME
+	_ZNK13ContentAccess11CImportFile11OutputFileLEi @ 35 NONAME
+	_ZNK13ContentAccess11CImportFile16OutputFileCountLEv @ 36 NONAME
+	_ZNK13ContentAccess14CAgentResolver17ConsumerMimeTypesEv @ 37 NONAME
+	_ZNK13ContentAccess14CAgentResolver17SupplierMimeTypesEv @ 38 NONAME
+	_ZNK13ContentAccess19CSupplierOutputFile10OutputTypeEv @ 39 NONAME
+	_ZNK13ContentAccess19CSupplierOutputFile8FileNameEv @ 40 NONAME
+	_ZNK13ContentAccess5CData12GetMimeTypeLER5TDes8 @ 41 NONAME
+	_ZN13ContentAccess8CContent12OpenContentLENS_7TIntentENS_17TContentShareModeE @ 42 NONAME
+	_ZN13ContentAccess8CContent13NewAttributeLEiNS_17TContentShareModeE @ 43 NONAME
+	_ZTIN13ContentAccess10CAgentInfoE @ 44 NONAME ; #<TI>#
+	_ZTIN13ContentAccess10CAttributeE @ 45 NONAME ; #<TI>#
+	_ZTIN13ContentAccess11CImportFileE @ 46 NONAME ; #<TI>#
+	_ZTIN13ContentAccess14CAgentResolverE @ 47 NONAME ; #<TI>#
+	_ZTIN13ContentAccess19CSupplierOutputFileE @ 48 NONAME ; #<TI>#
+	_ZTIN13ContentAccess5CDataE @ 49 NONAME ; #<TI>#
+	_ZTIN13ContentAccess8CContentE @ 50 NONAME ; #<TI>#
+	_ZTIN13ContentAccess9CSupplierE @ 51 NONAME ; #<TI>#
+	_ZTVN13ContentAccess10CAgentInfoE @ 52 NONAME ; #<VT>#
+	_ZTVN13ContentAccess10CAttributeE @ 53 NONAME ; #<VT>#
+	_ZTVN13ContentAccess11CImportFileE @ 54 NONAME ; #<VT>#
+	_ZTVN13ContentAccess14CAgentResolverE @ 55 NONAME ; #<VT>#
+	_ZTVN13ContentAccess19CSupplierOutputFileE @ 56 NONAME ; #<VT>#
+	_ZTVN13ContentAccess5CDataE @ 57 NONAME ; #<VT>#
+	_ZTVN13ContentAccess8CContentE @ 58 NONAME ; #<VT>#
+	_ZTVN13ContentAccess9CSupplierE @ 59 NONAME ; #<VT>#
+	_ZN13ContentAccess8CContent4NewLER5RFile @ 60 NONAME
+	_ZN13ContentAccess8CContent5NewLCER5RFile @ 61 NONAME
+	_ZN13ContentAccess11CImportFile25ContinueWithNewOutputFileER5RFileRK7TDesC16 @ 62 NONAME
+	_ZN13ContentAccess11CImportFile25ContinueWithNewOutputFileER5RFileRK7TDesC16R14TRequestStatus @ 63 NONAME
+	_ZN13ContentAccess11CImportFile26GetSuggestedOutputFileNameER6TDes16 @ 64 NONAME
+	_ZN13ContentAccess11CImportFile31GetSuggestedOutputFileExtensionER6TDes16 @ 65 NONAME
+	_ZN13ContentAccess13CAgentFactoryD0Ev @ 66 NONAME
+	_ZN13ContentAccess13CAgentFactoryD1Ev @ 67 NONAME
+	_ZN13ContentAccess13CAgentFactoryD2Ev @ 68 NONAME
+	_ZN13ContentAccess14CRightsManager11SetPropertyENS_14TAgentPropertyEi @ 69 NONAME
+	_ZN13ContentAccess14CRightsManager18DeleteRightsObjectERKNS_11CRightsInfoE @ 70 NONAME
+	_ZN13ContentAccess14CRightsManager22DeleteAllRightsObjectsERKNS_15TVirtualPathPtrE @ 71 NONAME
+	_ZN13ContentAccess19CSupplierOutputFile4NewLER11RReadStream @ 72 NONAME
+	_ZN13ContentAccess19CSupplierOutputFile4NewLERK7TDesC16NS_11TOutputTypeERK6TDesC8 @ 73 NONAME
+	_ZN13ContentAccess5CData11SetPropertyENS_14TAgentPropertyEi @ 74 NONAME
+	_ZN13ContentAccess8CContent11SetPropertyENS_14TAgentPropertyEi @ 75 NONAME
+	_ZN13ContentAccess8CContent12OpenContentLENS_7TIntentERK7TDesC16 @ 76 NONAME
+	_ZN13ContentAccess8CContent13OpenContainerERK7TDesC16 @ 77 NONAME
+	_ZN13ContentAccess8CContent13RequestRightsER14TRequestStatus @ 78 NONAME
+	_ZN13ContentAccess8CContent13RequestRightsER14TRequestStatusRK7TDesC16 @ 79 NONAME
+	_ZN13ContentAccess8CContent14CloseContainerEv @ 80 NONAME
+	_ZN13ContentAccess8CContent18NotifyStatusChangeENS_10TEventMaskER14TRequestStatus @ 81 NONAME
+	_ZN13ContentAccess8CContent18NotifyStatusChangeENS_10TEventMaskER14TRequestStatusRK7TDesC16 @ 82 NONAME
+	_ZN13ContentAccess8CContent19CancelRequestRightsER14TRequestStatus @ 83 NONAME
+	_ZN13ContentAccess8CContent19CancelRequestRightsER14TRequestStatusRK7TDesC16 @ 84 NONAME
+	_ZN13ContentAccess8CContent20AgentSpecificCommandEiRK6TDesC8R5TDes8 @ 85 NONAME
+	_ZN13ContentAccess8CContent20AgentSpecificCommandEiRK6TDesC8R5TDes8R14TRequestStatus @ 86 NONAME
+	_ZN13ContentAccess8CContent24CancelNotifyStatusChangeER14TRequestStatus @ 87 NONAME
+	_ZN13ContentAccess8CContent24CancelNotifyStatusChangeER14TRequestStatusRK7TDesC16 @ 88 NONAME
+	_ZN13ContentAccess8CContent4NewLERK7TDesC16NS_17TContentShareModeE @ 89 NONAME
+	_ZN13ContentAccess8CContent5NewLCERK7TDesC16NS_17TContentShareModeE @ 90 NONAME
+	_ZN13ContentAccess8CContent6SearchERNS_19RStreamablePtrArrayINS_15CEmbeddedObjectEEERK6TDesC8i @ 91 NONAME
+	_ZN13ContentAccess8CManager11ListAgentsLER6RArrayINS_6TAgentEE @ 92 NONAME
+	_ZN13ContentAccess8CManager11SetPropertyENS_14TAgentPropertyEi @ 93 NONAME
+	_ZN13ContentAccess8CManager12DisplayInfoLENS_12TDisplayInfoERKNS_15TVirtualPathPtrE @ 94 NONAME
+	_ZN13ContentAccess8CManager18NotifyStatusChangeERK7TDesC16NS_10TEventMaskER14TRequestStatus @ 95 NONAME
+	_ZN13ContentAccess8CManager20AgentSpecificCommandERNS_6TAgentEiRK6TDesC8R5TDes8 @ 96 NONAME
+	_ZN13ContentAccess8CManager20AgentSpecificCommandERNS_6TAgentEiRK6TDesC8R5TDes8R14TRequestStatus @ 97 NONAME
+	_ZN13ContentAccess8CManager22DisplayManagementInfoLERNS_6TAgentE @ 98 NONAME
+	_ZN13ContentAccess8CManager24CancelNotifyStatusChangeERK7TDesC16R14TRequestStatus @ 99 NONAME
+	_ZN13ContentAccess8CManager4NewLEv @ 100 NONAME
+	_ZN13ContentAccess8CManager5NewLCEv @ 101 NONAME
+	_ZN13ContentAccess9CSupplier11ImportFileLERK6TDesC8RKNS_14CMetaDataArrayE @ 102 NONAME
+	_ZN13ContentAccess9CSupplier11ImportFileLERK6TDesC8RKNS_14CMetaDataArrayERK7TDesC16 @ 103 NONAME
+	_ZNK13ContentAccess11CImportFile15GetImportStatusEv @ 104 NONAME
+	_ZNK13ContentAccess14CRightsManager11ListRightsLERNS_19RStreamablePtrArrayINS_11CRightsInfoEEERK7TDesC16 @ 105 NONAME
+	_ZNK13ContentAccess14CRightsManager11ListRightsLERNS_19RStreamablePtrArrayINS_11CRightsInfoEEERNS_15TVirtualPathPtrE @ 106 NONAME
+	_ZNK13ContentAccess14CRightsManager12ListContentLERNS_19RStreamablePtrArrayINS_12CVirtualPathEEERNS_11CRightsInfoE @ 107 NONAME
+	_ZNK13ContentAccess14CRightsManager14GetRightsDataLERKNS_11CRightsInfoE @ 108 NONAME
+	_ZNK13ContentAccess14CRightsManager14ListAllRightsLERNS_19RStreamablePtrArrayINS_11CRightsInfoEEE @ 109 NONAME
+	_ZNK13ContentAccess19CSupplierOutputFile12ExternalizeLER12RWriteStream @ 110 NONAME
+	_ZNK13ContentAccess5CData12GetAttributeEiRi @ 111 NONAME
+	_ZNK13ContentAccess5CData15GetAttributeSetERNS_13RAttributeSetE @ 112 NONAME
+	_ZNK13ContentAccess5CData18GetStringAttributeEiR6TDes16 @ 113 NONAME
+	_ZNK13ContentAccess5CData21GetStringAttributeSetERNS_19RStringAttributeSetE @ 114 NONAME
+	_ZNK13ContentAccess6TAgent4NameEv @ 115 NONAME
+	_ZNK13ContentAccess8CContent12DisplayInfoLENS_12TDisplayInfoE @ 116 NONAME
+	_ZNK13ContentAccess8CContent12DisplayInfoLENS_12TDisplayInfoERK7TDesC16 @ 117 NONAME
+	_ZNK13ContentAccess8CContent12GetAttributeEiRi @ 118 NONAME
+	_ZNK13ContentAccess8CContent12GetAttributeEiRiRK7TDesC16 @ 119 NONAME
+	_ZNK13ContentAccess8CContent15GetAttributeSetERNS_13RAttributeSetE @ 120 NONAME
+	_ZNK13ContentAccess8CContent15GetAttributeSetERNS_13RAttributeSetERK7TDesC16 @ 121 NONAME
+	_ZNK13ContentAccess8CContent18GetStringAttributeEiR6TDes16 @ 122 NONAME
+	_ZNK13ContentAccess8CContent18GetStringAttributeEiR6TDes16RK7TDesC16 @ 123 NONAME
+	_ZNK13ContentAccess8CContent19GetEmbeddedObjectsLERNS_19RStreamablePtrArrayINS_15CEmbeddedObjectEEE @ 124 NONAME
+	_ZNK13ContentAccess8CContent19GetEmbeddedObjectsLERNS_19RStreamablePtrArrayINS_15CEmbeddedObjectEEENS_13TEmbeddedTypeE @ 125 NONAME
+	_ZNK13ContentAccess8CContent21GetStringAttributeSetERNS_19RStringAttributeSetE @ 126 NONAME
+	_ZNK13ContentAccess8CContent21GetStringAttributeSetERNS_19RStringAttributeSetERK7TDesC16 @ 127 NONAME
+	_ZNK13ContentAccess8CContent5AgentEv @ 128 NONAME
+	_ZNK13ContentAccess8CManager10DeleteFileERK7TDesC16 @ 129 NONAME
+	_ZNK13ContentAccess8CManager10RenameFileERK7TDesC16S3_ @ 130 NONAME
+	_ZNK13ContentAccess8CManager12GetAttributeEiRiRKNS_15TVirtualPathPtrE @ 131 NONAME
+	_ZNK13ContentAccess8CManager15GetAttributeSetERNS_13RAttributeSetERKNS_15TVirtualPathPtrE @ 132 NONAME
+	_ZNK13ContentAccess8CManager18GetStringAttributeEiR6TDes16RKNS_15TVirtualPathPtrE @ 133 NONAME
+	_ZNK13ContentAccess8CManager20CreateRightsManagerLERNS_6TAgentE @ 134 NONAME
+	_ZNK13ContentAccess8CManager21GetStringAttributeSetERNS_19RStringAttributeSetERKNS_15TVirtualPathPtrE @ 135 NONAME
+	_ZNK13ContentAccess8CManager5MkDirERK7TDesC16 @ 136 NONAME
+	_ZNK13ContentAccess8CManager5RmDirERK7TDesC16 @ 137 NONAME
+	_ZNK13ContentAccess8CManager6GetDirERK7TDesC16RK8TUidTypejRP4CDir @ 138 NONAME
+	_ZNK13ContentAccess8CManager6GetDirERK7TDesC16jjRP4CDir @ 139 NONAME
+	_ZNK13ContentAccess8CManager6GetDirERK7TDesC16jjRP4CDirS6_ @ 140 NONAME
+	_ZNK13ContentAccess8CManager8CopyFileERK7TDesC16S3_ @ 141 NONAME
+	_ZNK13ContentAccess8CManager8MkDirAllERK7TDesC16 @ 142 NONAME
+	_ZTIN13ContentAccess13CAgentFactoryE @ 143 NONAME ; #<TI>#
+	_ZTIN13ContentAccess14CRightsManagerE @ 144 NONAME ; #<TI>#
+	_ZTIN13ContentAccess8CManagerE @ 145 NONAME ; #<TI>#
+	_ZTVN13ContentAccess13CAgentFactoryE @ 146 NONAME ; #<VT>#
+	_ZTVN13ContentAccess14CRightsManagerE @ 147 NONAME ; #<VT>#
+	_ZTVN13ContentAccess8CManagerE @ 148 NONAME ; #<VT>#
+	_ZNK13ContentAccess9CSupplier25PrepareHTTPRequestHeadersER11RStringPoolR12RHTTPHeaders @ 149 NONAME
+	_ZN13ContentAccess5CData4NewLER5RFileRK7TDesC16NS_7TIntentE @ 150 NONAME
+	_ZN13ContentAccess5CData4NewLERKNS_15TVirtualPathPtrENS_7TIntentENS_17TContentShareModeE @ 151 NONAME
+	_ZN13ContentAccess5CData5NewLCER5RFileRK7TDesC16NS_7TIntentE @ 152 NONAME
+	_ZN13ContentAccess5CData5NewLCERKNS_15TVirtualPathPtrENS_7TIntentENS_17TContentShareModeE @ 153 NONAME
+	_ZN13ContentAccess8CContent13OpenContentLCENS_7TIntentE @ 154 NONAME
+	_ZN13ContentAccess8CContent13OpenContentLCENS_7TIntentERK7TDesC16 @ 155 NONAME
+	_ZNK13ContentAccess8CManager9RenameDirERK7TDesC16S3_ @ 156 NONAME
+	_ZTIN13ContentAccess13CAgentManagerE @ 157 NONAME ; #<TI>#
+	_ZTVN13ContentAccess13CAgentManagerE @ 158 NONAME ; #<VT>#
+	_ZN13ContentAccess13CAgentManager9RenameDirERK7TDesC16S3_ @ 159 NONAME
+	_ZN13ContentAccess11CImportFile6CancelEv @ 160 NONAME
+	_ZN13ContentAccess16CAgentImportFile6CancelEv @ 161 NONAME
+	_ZTIN13ContentAccess16CAgentImportFileE @ 162 NONAME ; #<TI>#
+	_ZTVN13ContentAccess16CAgentImportFileE @ 163 NONAME ; #<VT>#
+	_ZN13ContentAccess5CData4NewLER5RFileRK7TDesC16 @ 164 NONAME
+	_ZN13ContentAccess5CData4NewLERKNS_15TVirtualPathPtrENS_17TContentShareModeE @ 165 NONAME
+	_ZN13ContentAccess5CData5NewLCER5RFileRK7TDesC16 @ 166 NONAME
+	_ZN13ContentAccess5CData5NewLCERKNS_15TVirtualPathPtrENS_17TContentShareModeE @ 167 NONAME
+	_ZN13ContentAccess13CAgentManager8CopyFileER5RFileRK7TDesC16 @ 168 NONAME
+	_ZNK13ContentAccess8CManager8CopyFileER5RFileRK7TDesC16 @ 169 NONAME
+	_ZN13ContentAccess10CAgentData4ReadEiR5TDes8iR14TRequestStatus @ 170 NONAME
+	_ZNK13ContentAccess5CData11Read_UnusedEiR5TDes8iR14TRequestStatus @ 171 NONAME
+	_ZTIN13ContentAccess10CAgentDataE @ 172 NONAME ; #<TI>#
+	_ZTVN13ContentAccess10CAgentDataE @ 173 NONAME ; #<VT>#
+	KCafLoadPostProductionAgents @ 174 NONAME DATA 1
+	_ZNK13ContentAccess5CData10ReadCancelER14TRequestStatus @ 175 NONAME
+	_ZN13ContentAccess10CAgentData10ReadCancelER14TRequestStatus @ 176 NONAME
+	_ZN13ContentAccess13CAgentManager12DisplayInfoLENS_12TDisplayInfoER5RFileRK7TDesC16 @ 177 NONAME
+	_ZN13ContentAccess13CAgentManager12GetAttributeEiRiR5RFileRK7TDesC16 @ 178 NONAME
+	_ZN13ContentAccess13CAgentManager15GetAttributeSetERNS_13RAttributeSetER5RFileRK7TDesC16 @ 179 NONAME
+	_ZN13ContentAccess13CAgentManager18GetStringAttributeEiR6TDes16R5RFileRK7TDesC16 @ 180 NONAME
+	_ZN13ContentAccess13CAgentManager21GetStringAttributeSetERNS_19RStringAttributeSetER5RFileRK7TDesC16 @ 181 NONAME
+	_ZN13ContentAccess14CRightsManager22DeleteAllRightsObjectsER5RFileRK7TDesC16 @ 182 NONAME
+	_ZN13ContentAccess19CAgentRightsManager22DeleteAllRightsObjectsER5RFileRK7TDesC16 @ 183 NONAME
+	_ZN13ContentAccess8CManager12DisplayInfoLENS_12TDisplayInfoER5RFileRK7TDesC16 @ 184 NONAME
+	_ZN13ContentAccess8CManager12GetAttributeEiRiR5RFileRK7TDesC16 @ 185 NONAME
+	_ZN13ContentAccess8CManager15GetAttributeSetERNS_13RAttributeSetER5RFileRK7TDesC16 @ 186 NONAME
+	_ZN13ContentAccess8CManager18GetStringAttributeEiR6TDes16R5RFileRK7TDesC16 @ 187 NONAME
+	_ZN13ContentAccess8CManager21GetStringAttributeSetERNS_19RStringAttributeSetER5RFileRK7TDesC16 @ 188 NONAME
+	_ZNK13ContentAccess14CRightsManager11ListRightsLERNS_19RStreamablePtrArrayINS_11CRightsInfoEEER5RFileRK7TDesC16 @ 189 NONAME
+	_ZNK13ContentAccess19CAgentRightsManager11ListRightsLERNS_19RStreamablePtrArrayINS_11CRightsInfoEEER5RFileRK7TDesC16 @ 190 NONAME
+	_ZTIN13ContentAccess19CAgentRightsManagerE @ 191 NONAME
+	_ZTVN13ContentAccess19CAgentRightsManagerE @ 192 NONAME
+	_ZN13ContentAccess11CImportFile16ContentMimeTypeLER5TDes8 @ 193 NONAME
+	_ZN13ContentAccess16CAgentImportFile16ContentMimeTypeLER5TDes8 @ 194 NONAME
+	_ZN13ContentAccess10CAgentData11DataSize64LERx @ 195 NONAME
+	_ZN13ContentAccess10CAgentData6Read64ExR5TDes8iR14TRequestStatus @ 196 NONAME
+	_ZN13ContentAccess10CAgentData6Seek64E5TSeekRx @ 197 NONAME
+	_ZN13ContentAccess5CData11DataSize64LERx @ 198 NONAME
+	_ZNK13ContentAccess5CData4ReadExR5TDes8iR14TRequestStatus @ 199 NONAME
+	_ZNK13ContentAccess5CData6Seek64E5TSeekRx @ 200 NONAME
+	_ZN13ContentAccess10CAgentData4ReadERK6TDesC8R5TDes8 @ 201 NONAME
+	_ZN13ContentAccess10CAgentData4ReadERK6TDesC8R5TDes8R14TRequestStatus @ 202 NONAME
+	_ZN13ContentAccess13CAgentFactory19CreateDataConsumerLERK6TDesC8 @ 203 NONAME
+	_ZN13ContentAccess13CAgentFactory21CreateContentBrowserLERK6TDesC8 @ 204 NONAME
+	_ZN13ContentAccess13CAgentManager12GetAttributeERK6TDesC8iRi @ 205 NONAME
+	_ZN13ContentAccess13CAgentManager15GetAttributeSetERK6TDesC8RNS_13RAttributeSetE @ 206 NONAME
+	_ZN13ContentAccess13CAgentManager18GetStringAttributeERK6TDesC8iR6TDes16 @ 207 NONAME
+	_ZN13ContentAccess13CAgentManager21GetStringAttributeSetERK6TDesC8RNS_19RStringAttributeSetE @ 208 NONAME
+	_ZN13ContentAccess14CAgentResolver12DoRecognizeLERK6TDesC8R5TDes8S5_ @ 209 NONAME
+	_ZN13ContentAccess5CData4NewLERK6TDesC8 @ 210 NONAME
+	_ZN13ContentAccess5CData4NewLERK6TDesC8NS_7TIntentE @ 211 NONAME
+	_ZN13ContentAccess5CData5NewLCERK6TDesC8 @ 212 NONAME
+	_ZN13ContentAccess5CData5NewLCERK6TDesC8NS_7TIntentE @ 213 NONAME
+	_ZN13ContentAccess8CContent4NewLERK6TDesC8 @ 214 NONAME
+	_ZN13ContentAccess8CContent5NewLCERK6TDesC8 @ 215 NONAME
+	_ZNK13ContentAccess13CAgentManager13IsRecognizedLERK6TDesC8 @ 216 NONAME
+	_ZNK13ContentAccess13CAgentManager17RecognizeContentLERK6TDesC8R5TDes8S5_ @ 217 NONAME
+	_ZNK13ContentAccess5CData4ReadERK6TDesC8R5TDes8 @ 218 NONAME
+	_ZNK13ContentAccess5CData4ReadERK6TDesC8R5TDes8R14TRequestStatus @ 219 NONAME
+	_ZNK13ContentAccess8CManager12GetAttributeERK6TDesC8iRi @ 220 NONAME
+	_ZNK13ContentAccess8CManager15GetAttributeSetERK6TDesC8RNS_13RAttributeSetE @ 221 NONAME
+	_ZNK13ContentAccess8CManager18GetStringAttributeERK6TDesC8iR6TDes16 @ 222 NONAME
+	_ZNK13ContentAccess8CManager21GetStringAttributeSetERK6TDesC8RNS_19RStringAttributeSetE @ 223 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/contentaccessfwfordrm/EABI/cafutils_v2U.DEF	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,128 @@
+EXPORTS
+	_ZN13ContentAccess7CBitset12InternalizeLER11RReadStream @ 1 NONAME
+	_ZN13ContentAccess7CBitset3SetEi @ 2 NONAME
+	_ZN13ContentAccess7CBitset4NewLERKS0_ @ 3 NONAME
+	_ZN13ContentAccess7CBitset4NewLEi @ 4 NONAME
+	_ZN13ContentAccess7CBitset5NewLCERKS0_ @ 5 NONAME
+	_ZN13ContentAccess7CBitset5NewLCEi @ 6 NONAME
+	_ZN13ContentAccess7CBitset5ResetEv @ 7 NONAME
+	_ZN13ContentAccess7CBitset5UnsetEi @ 8 NONAME
+	_ZN13ContentAccess7CBitset6InvertEv @ 9 NONAME
+	_ZN13ContentAccess7CBitset6SetAllEv @ 10 NONAME
+	_ZN13ContentAccess7CBitset8SetListLEiz @ 11 NONAME
+	_ZN13ContentAccess7CBitsetaSERKS0_ @ 12 NONAME
+	_ZNK13ContentAccess7CBitset12ExternalizeLER12RWriteStream @ 13 NONAME
+	_ZNK13ContentAccess7CBitset5IsSetEi @ 14 NONAME
+	_ZNK13ContentAccess7CBitset7MaxBitsEv @ 15 NONAME
+	_ZNK13ContentAccess7CBitset9IsSetListEiz @ 16 NONAME
+	_ZNK13ContentAccess7CBitseteqERKS0_ @ 17 NONAME
+	_ZN13ContentAccess14CCafMimeHeader12InternalizeLER11RReadStream @ 18 NONAME
+	_ZN13ContentAccess14CCafMimeHeader19AddNonStandardMimeLERK6TDesC8S3_ @ 19 NONAME
+	_ZN13ContentAccess14CCafMimeHeader20SetStandardMimeDataLERKNS_11TMimeFieldsERK6TDesC8 @ 20 NONAME
+	_ZN13ContentAccess14CCafMimeHeader4NewLERK6TDesC8 @ 21 NONAME
+	_ZN13ContentAccess14CCafMimeHeaderD0Ev @ 22 NONAME
+	_ZN13ContentAccess14CCafMimeHeaderD1Ev @ 23 NONAME
+	_ZN13ContentAccess14CCafMimeHeaderD2Ev @ 24 NONAME
+	_ZNK13ContentAccess14CCafMimeHeader12ExternalizeLER12RWriteStream @ 25 NONAME
+	_ZNK13ContentAccess14CCafMimeHeader16StandardMimeDataERKNS_11TMimeFieldsE @ 26 NONAME
+	_ZNK13ContentAccess14CCafMimeHeader19NonStandardMimeDataEi @ 27 NONAME
+	_ZNK13ContentAccess14CCafMimeHeader20NonStandardMimeCountEv @ 28 NONAME
+	_ZNK13ContentAccess14CCafMimeHeader20NonStandardMimeFieldEi @ 29 NONAME
+	_ZTIN13ContentAccess14CCafMimeHeaderE @ 30 NONAME ; #<TI>#
+	_ZTVN13ContentAccess14CCafMimeHeaderE @ 31 NONAME ; #<VT>#
+	_ZTIN13ContentAccess7CBitsetE @ 32 NONAME ; #<TI>#
+	_ZTVN13ContentAccess7CBitsetE @ 33 NONAME ; #<VT>#
+	_ZN13ContentAccess11CRightsInfo4NewLER11RReadStream @ 34 NONAME
+	_ZN13ContentAccess11CRightsInfo4NewLERK7TDesC16S3_iNS_13TRightsStatusE @ 35 NONAME
+	_ZN13ContentAccess12CVirtualPath22GetCombinedUriUniqueIdEv @ 36 NONAME
+	_ZN13ContentAccess12CVirtualPath4NewLER11RReadStream @ 37 NONAME
+	_ZN13ContentAccess12CVirtualPath4NewLERK7TDesC16 @ 38 NONAME
+	_ZN13ContentAccess12CVirtualPath4NewLERK7TDesC16S3_ @ 39 NONAME
+	_ZN13ContentAccess12CVirtualPath4NewLERKNS_15TVirtualPathPtrE @ 40 NONAME
+	_ZN13ContentAccess13RAttributeSet12InternalizeLER11RReadStream @ 41 NONAME
+	_ZN13ContentAccess13RAttributeSet4AddLEi @ 42 NONAME
+	_ZN13ContentAccess13RAttributeSet5CloseEv @ 43 NONAME
+	_ZN13ContentAccess13RAttributeSet8SetValueEiii @ 44 NONAME
+	_ZN13ContentAccess13RAttributeSetC1Ev @ 45 NONAME
+	_ZN13ContentAccess13RAttributeSetC2Ev @ 46 NONAME
+	_ZN13ContentAccess14CDirStreamable4AddLERK6TEntry @ 47 NONAME
+	_ZN13ContentAccess14CDirStreamable4NewLE11RReadStream @ 48 NONAME
+	_ZN13ContentAccess14CDirStreamable4NewLER4CDir @ 49 NONAME
+	_ZN13ContentAccess14CDirStreamable4NewLEv @ 50 NONAME
+	_ZN13ContentAccess14CDirStreamable4SortEj @ 51 NONAME
+	_ZN13ContentAccess14CMetaDataArray4AddLERK6TDesC8S3_ @ 52 NONAME
+	_ZN13ContentAccess14CMetaDataArray4AddLERK7TDesC16S3_ @ 53 NONAME
+	_ZN13ContentAccess14CMetaDataArray4NewLER11RReadStream @ 54 NONAME
+	_ZN13ContentAccess14CMetaDataArray4NewLEv @ 55 NONAME
+	_ZN13ContentAccess14CMetaDataArray5NewLCEv @ 56 NONAME
+	_ZN13ContentAccess15CEmbeddedObject4NewLER11RReadStream @ 57 NONAME
+	_ZN13ContentAccess15CEmbeddedObject4NewLERK7TDesC16RK6TDesC8NS_13TEmbeddedTypeE @ 58 NONAME
+	_ZN13ContentAccess15CEmbeddedObject4NewLERK7TDesC16S3_RK6TDesC8NS_13TEmbeddedTypeE @ 59 NONAME
+	_ZN13ContentAccess15TVirtualPathPtrC1ERK7TDesC16 @ 60 NONAME
+	_ZN13ContentAccess15TVirtualPathPtrC1ERK7TDesC16S3_ @ 61 NONAME
+	_ZN13ContentAccess15TVirtualPathPtrC1ERKS0_ @ 62 NONAME
+	_ZN13ContentAccess15TVirtualPathPtrC2ERK7TDesC16 @ 63 NONAME
+	_ZN13ContentAccess15TVirtualPathPtrC2ERK7TDesC16S3_ @ 64 NONAME
+	_ZN13ContentAccess15TVirtualPathPtrC2ERKS0_ @ 65 NONAME
+	_ZN13ContentAccess15TVirtualPathPtraSERK7TDesC16 @ 66 NONAME
+	_ZN13ContentAccess15TVirtualPathPtraSERKS0_ @ 67 NONAME
+	_ZN13ContentAccess19RStringAttributeSet12InternalizeLER11RReadStream @ 68 NONAME
+	_ZN13ContentAccess19RStringAttributeSet4AddLEi @ 69 NONAME
+	_ZN13ContentAccess19RStringAttributeSet5CloseEv @ 70 NONAME
+	_ZN13ContentAccess19RStringAttributeSet8SetValueEiRK7TDesC16i @ 71 NONAME
+	_ZN13ContentAccess19RStringAttributeSetC1Ev @ 72 NONAME
+	_ZN13ContentAccess19RStringAttributeSetC2Ev @ 73 NONAME
+	_ZNK13ContentAccess11CRightsInfo10RightsTypeEv @ 74 NONAME
+	_ZNK13ContentAccess11CRightsInfo11DescriptionEv @ 75 NONAME
+	_ZNK13ContentAccess11CRightsInfo12ExternalizeLER12RWriteStream @ 76 NONAME
+	_ZNK13ContentAccess11CRightsInfo12RightsStatusEv @ 77 NONAME
+	_ZNK13ContentAccess11CRightsInfo8UniqueIdEv @ 78 NONAME
+	_ZNK13ContentAccess12CVirtualPath12ExternalizeLER12RWriteStream @ 79 NONAME
+	_ZNK13ContentAccess12CVirtualPath3URIEv @ 80 NONAME
+	_ZNK13ContentAccess12CVirtualPath8UniqueIdEv @ 81 NONAME
+	_ZNK13ContentAccess13RAttributeSet12ExternalizeLER12RWriteStream @ 82 NONAME
+	_ZNK13ContentAccess13RAttributeSet5CountEv @ 83 NONAME
+	_ZNK13ContentAccess13RAttributeSet8GetValueEiRi @ 84 NONAME
+	_ZNK13ContentAccess13RAttributeSetixEi @ 85 NONAME
+	_ZNK13ContentAccess14CDirStreamable12ExternalizeLER12RWriteStream @ 86 NONAME
+	_ZNK13ContentAccess14CDirStreamable5CountEv @ 87 NONAME
+	_ZNK13ContentAccess14CDirStreamableixEi @ 88 NONAME
+	_ZNK13ContentAccess14CMetaDataArray12ExternalizeLER12RWriteStream @ 89 NONAME
+	_ZNK13ContentAccess14CMetaDataArray5CountEv @ 90 NONAME
+	_ZNK13ContentAccess14CMetaDataArray7SearchLERK6TDesC8i @ 91 NONAME
+	_ZNK13ContentAccess14CMetaDataArray7SearchLERK7TDesC16i @ 92 NONAME
+	_ZNK13ContentAccess14CMetaDataArrayixEi @ 93 NONAME
+	_ZNK13ContentAccess15CEmbeddedObject12ExternalizeLER12RWriteStream @ 94 NONAME
+	_ZNK13ContentAccess15CEmbeddedObject4NameEv @ 95 NONAME
+	_ZNK13ContentAccess15CEmbeddedObject4TypeEv @ 96 NONAME
+	_ZNK13ContentAccess15CEmbeddedObject8MimeTypeEv @ 97 NONAME
+	_ZNK13ContentAccess15CEmbeddedObject8UniqueIdEv @ 98 NONAME
+	_ZNK13ContentAccess15TVirtualPathPtr3URIEv @ 99 NONAME
+	_ZNK13ContentAccess15TVirtualPathPtr8UniqueIdEv @ 100 NONAME
+	_ZNK13ContentAccess19RStringAttributeSet12ExternalizeLER12RWriteStream @ 101 NONAME
+	_ZNK13ContentAccess19RStringAttributeSet14GetValueLengthEi @ 102 NONAME
+	_ZNK13ContentAccess19RStringAttributeSet5CountEv @ 103 NONAME
+	_ZNK13ContentAccess19RStringAttributeSet8GetValueEiR6TDes16 @ 104 NONAME
+	_ZNK13ContentAccess19RStringAttributeSetixEi @ 105 NONAME
+	_ZNK13ContentAccess9CMetaData4DataEv @ 106 NONAME
+	_ZNK13ContentAccess9CMetaData5Data8Ev @ 107 NONAME
+	_ZNK13ContentAccess9CMetaData5FieldEv @ 108 NONAME
+	_ZNK13ContentAccess9CMetaData6Field8Ev @ 109 NONAME
+	_ZTIN13ContentAccess11CRightsInfoE @ 110 NONAME ; #<TI>#
+	_ZTIN13ContentAccess12CVirtualPathE @ 111 NONAME ; #<TI>#
+	_ZTIN13ContentAccess14CDirStreamableE @ 112 NONAME ; #<TI>#
+	_ZTIN13ContentAccess14CMetaDataArrayE @ 113 NONAME ; #<TI>#
+	_ZTIN13ContentAccess15CEmbeddedObjectE @ 114 NONAME ; #<TI>#
+	_ZTIN13ContentAccess16CStringAttributeE @ 115 NONAME ; #<TI>#
+	_ZTIN13ContentAccess9CMetaDataE @ 116 NONAME ; #<TI>#
+	_ZTVN13ContentAccess11CRightsInfoE @ 117 NONAME ; #<VT>#
+	_ZTVN13ContentAccess12CVirtualPathE @ 118 NONAME ; #<VT>#
+	_ZTVN13ContentAccess14CDirStreamableE @ 119 NONAME ; #<VT>#
+	_ZTVN13ContentAccess14CMetaDataArrayE @ 120 NONAME ; #<VT>#
+	_ZTVN13ContentAccess15CEmbeddedObjectE @ 121 NONAME ; #<VT>#
+	_ZTVN13ContentAccess16CStringAttributeE @ 122 NONAME ; #<VT>#
+	_ZTVN13ContentAccess9CMetaDataE @ 123 NONAME ; #<VT>#
+	_ZN13ContentAccess10CCAFHelper4NewLEv @ 124 NONAME
+	_ZN13ContentAccess10CCAFHelper5NewLCEv @ 125 NONAME
+	_ZNK13ContentAccess10CCAFHelperclEv @ 126 NONAME
+
--- a/contentmgmt/contentaccessfwfordrm/group/CafUtils.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/group/CafUtils.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -28,6 +28,11 @@
 UID			0x101FD9B8
 VENDORID	0x70000001
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+deffile		cafutils_v2.def
+#else
+deffile		cafutils.def
+#endif
 UNPAGED
 
 SOURCEPATH	../source/cafutils
@@ -43,6 +48,10 @@
 SOURCE		Virtualpathptr.cpp
 SOURCE		dirstreamable.cpp
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+SOURCE		cafhelper.cpp
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 #ifndef REMOVE_CAF1
 // deprecated stuff from CAF 1.0
 SOURCE		bitset.cpp
--- a/contentmgmt/contentaccessfwfordrm/group/ContentIterator.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/group/ContentIterator.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -37,9 +37,10 @@
 SOURCE		embeddedcontentiteratorbase.cpp
 
 USERINCLUDE		../../referencedrmagent/contentiterator
+USERINCLUDE		../../referencedrmagent/RefTestAgent/inc
+USERINCLUDE		../inc
 
-SYSTEMINCLUDE	/epoc32/include
-SYSTEMINCLUDE	/epoc32/include/caf
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY		euser.lib
 LIBRARY		ecom.lib
--- a/contentmgmt/contentaccessfwfordrm/group/bld.inf	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/group/bld.inf	Mon Oct 12 10:17:04 2009 +0300
@@ -69,6 +69,11 @@
 ../inc/StreamablePtrArray.inl		SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(caf/streamableptrarray.inl)
 ../inc/dirstreamable.h			SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(caf/dirstreamable.h)
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+../inc/cafhelper.h			SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(caf/cafhelper.h)
+../inc/cafhelperinterface.h		SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(caf/cafhelperinterface.h)
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 // ROMKIT includes
 ../inc/caf.iby /epoc32/rom/include/caf.iby
 
@@ -81,9 +86,9 @@
 f32agentui.mmp
 f32agent.mmp
 reccaf.mmp
-
 #endif // TOOLS2
 #endif // TOOLS
+
 PRJ_TESTMMPFILES
 
 #ifndef TOOLS
@@ -92,9 +97,9 @@
 testagent.mmp		support
 tcaf.mmp		manual
 tsmoke.mmp		manual
-
 #endif // TOOLS2
 #endif // TOOLS
+
 PRJ_TESTEXPORTS
 ../../referencedrmagent/tcaf/scripts/nodrmcapsteps.script 			z:/tcaf/nodrmcapsteps.script
 ../../referencedrmagent/tcaf/scripts/nodrmcapsteps.ini				z:/tcaf/nodrmcapsteps.ini
@@ -146,7 +151,13 @@
 ../../referencedrmagent/tcaf/testdata/Audio.content				z:/tcaf/testdata/audio.content
 ../../referencedrmagent/tcaf/testdata/Audiomulti.content			z:/tcaf/testdata/audiomulti.content
 ../../referencedrmagent/tcaf/testdata/notes1.txt				z:/tcaf/testdata/notes1.txt
-
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+../../referencedrmagent/tcaf/scripts/tcafhelper.script 				z:/tcaf/tcafhelper.script
+../../referencedrmagent/tcaf/scripts/tcafhelper.ini 				z:/tcaf/tcafhelper.ini
+../../referencedrmagent/tcaf/scripts/tcafwmdrmsupport.script 			z:/tcaf/tcafwmdrmsupport.script
+../../referencedrmagent/tcaf/scripts/tcafwmdrmsupport.ini 			z:/tcaf/tcafwmdrmsupport.ini
+../../referencedrmagent/tcaf/testdata/dummywm.asf				z:/tcaf/testdata/dummywm.asf
+#endif  //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 // ROM test iby
 ../inc/caftest.iby 						/epoc32/rom/include/caftest.iby
 
--- a/contentmgmt/contentaccessfwfordrm/group/caf.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/group/caf.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -31,7 +31,11 @@
 UNPAGED
 
 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+deffile		caf_v3.def
+#else
 deffile		caf_v2.def
+#endif
 #else
 deffile		caf.def
 #endif
@@ -57,7 +61,7 @@
 USERINCLUDE		../source/caf
 
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
-
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY		euser.lib
 LIBRARY		ecom.lib
--- a/contentmgmt/contentaccessfwfordrm/group/f32agent.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/group/f32agent.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -41,6 +41,7 @@
 USERINCLUDE		../source/f32agent
 
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 start resource	101FC2CD.rss
 target			f32agent.rsc
--- a/contentmgmt/contentaccessfwfordrm/group/tcaf.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/group/tcaf.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -39,16 +39,16 @@
 SOURCE		CleanupStep.cpp
 SOURCE		namespacestep.cpp
 
+USERINCLUDE		../../referencedrmagent/RefTestAgent/inc
 USERINCLUDE		../../referencedrmagent
 USERINCLUDE		../../referencedrmagent/contentiterator 
 USERINCLUDE		../source/reccaf 
 USERINCLUDE		../source/caf
+USERINCLUDE		../inc
 
-SYSTEMINCLUDE	/epoc32/include
-SYSTEMINCLUDE	/epoc32/include/caf
-SYSTEMINCLUDE	/epoc32/include/test
-SYSTEMINCLUDE	/epoc32/include/ecom
-SYSTEMINCLUDE	/epoc32/include/libc
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
+OS_LAYER_LIBC_SYSTEMINCLUDE
 
 LIBRARY		euser.lib
 LIBRARY		testexecuteutils.lib
--- a/contentmgmt/contentaccessfwfordrm/group/testagent.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/group/testagent.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -35,9 +35,10 @@
 SOURCE			TestAgentFile.cpp
 SOURCE			TestAgentDrmContent.cpp
 
-SYSTEMINCLUDE	/epoc32/include
-SYSTEMINCLUDE	/epoc32/include/ecom
-SYSTEMINCLUDE	/epoc32/include/caf
+USERINCLUDE		../inc
+
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 start resource 101FE8F1.rss
 target testagent.rsc
--- a/contentmgmt/contentaccessfwfordrm/group/tsmoke.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/group/tsmoke.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -26,9 +26,7 @@
 
 USERINCLUDE		../source/f32agent
 
-SYSTEMINCLUDE	/epoc32/include
-SYSTEMINCLUDE	/epoc32/include/caf
-SYSTEMINCLUDE	/epoc32/include/ecom
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY			euser.lib efsrv.lib ecom.lib caf.lib
 
--- a/contentmgmt/contentaccessfwfordrm/inc/agentfactory.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/inc/agentfactory.h	Mon Oct 12 10:17:04 2009 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2003 - 2007 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2003 - 2007,2009 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -173,6 +173,26 @@
 		*/
 		virtual CAgentRightsManager* CreateRightsManagerL() = 0;
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT		
+		/**
+		Factory function creates a CAgentData object from header data of WMDRM file or stream content
+		for reading/decrypting WMDRM data packets.
+		 
+		@param aHeaderData	Header data of WMDRM file or stream content.
+		@return				A pointer to CAgentData object.
+		*/
+		virtual CAgentData* CreateDataConsumerL(const TDesC8& aHeaderData);
+		
+		/**
+		Factory function creates a CAgentContent object from header data of WMDRM file or stream content
+		for browsing WMDRM content.
+		 
+		@param aHeaderData	Header data of WMDRM file or stream content.
+		@return 			A pointer to CAgentContent object.
+		*/
+		virtual CAgentContent* CreateContentBrowserL(const TDesC8& aHeaderData);
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 	private:
 		// ECOM session key. This is set by 
 		// REComSession::CreateImplementationL() during construction
--- a/contentmgmt/contentaccessfwfordrm/inc/agentinterface.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/inc/agentinterface.h	Mon Oct 12 10:17:04 2009 +0300
@@ -78,7 +78,7 @@
 		 
 		 @see DataSizeL(TInt &aSize)
 		*/
-		virtual void DataSize64L(TInt64 &aSize);
+		IMPORT_C virtual void DataSize64L(TInt64 &aSize);
 #endif //SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
 		
 		/**
@@ -220,7 +220,7 @@
 		 					this function will not have any effect.
 		 @capability DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted 
 		*/
-		virtual void ReadCancel(TRequestStatus& aStatus);
+		IMPORT_C virtual void ReadCancel(TRequestStatus& aStatus);
 
 		/**
 		 Changes or retrieves the location of the file pointer within 
@@ -265,7 +265,7 @@
 		  
 		  @see Seek(TSeek aMode, TInt& aPos)
 		*/
-		virtual TInt Seek64(TSeek aMode, TInt64& aPos);
+		IMPORT_C virtual TInt Seek64(TSeek aMode, TInt64& aPos);
 #endif //SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
 		
 		/** 
@@ -363,7 +363,7 @@
 		 @return KErrCANotSupported if the agent does not support this operation.
 		 @capability DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted 
 		*/
-		virtual TInt Read(TInt aPos, TDes8& aDes, TInt aLength, TRequestStatus& aStatus);
+		IMPORT_C virtual TInt Read(TInt aPos, TDes8& aDes, TInt aLength, TRequestStatus& aStatus);
 		
 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
 		/**  
@@ -374,8 +374,40 @@
 		 
 		 @see Read(TInt aPos, TDes8& aDes, TInt aLength, TRequestStatus& aStatus)
 		*/
-		virtual TInt Read64(TInt64 aPos, TDes8& aDes, TInt aLength, TRequestStatus& aStatus);
+		IMPORT_C virtual TInt Read64(TInt64 aPos, TDes8& aDes, TInt aLength, TRequestStatus& aStatus);
 #endif //SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		/**
+		Decrypts the encrypted input data packet.Default implementation of this method returns KErrCANotSupported.
+		
+		@param aEncryptedInputDataPacket	Buffer descriptor containing the encrypted data packet supplied by client application. 
+		@param aDecryptedOutputDataPacket	Buffer descriptor supplied by the client application into which the decrypted data is written.
+											The length of this descriptor must be equal to or greater than the input packet.
+		@return								KErrNone if successful or KErrInsuffcientDataPacketLength, if a part of input data packet
+											is provided for decryption.Otherwise one of the CAF error codes defined in \c caferr.h  or 
+		 									one of the other system-wide error.
+		@capability 						DRM Access to DRM protected content is not permitted for processes without DRM capability.
+											Access to unprotected content is unrestricted.
+		*/
+		IMPORT_C virtual TInt Read(const TDesC8& aEncryptedInputDataPacket, TDes8& aDecryptedOutputDataPacket);
+		
+		
+		/**
+		Decrypts the encrypted input data packet asynchronously.Default implementation of this method returns KErrCANotSupported.
+	
+		@param aEncryptedInputDataPacket	Buffer descriptor containing the encrypted data packet supplied by client application. 
+		@param aDecryptedOutputDataPacket	Buffer descriptor supplied by the client application into which the decrypted data is written.
+											The length of this descriptor must be equal to or greater than the input packet.
+		@param aStatus						Asynchronous request status. On completion this will contain one of the following error codes:
+											KErrNone if the data packet was successfully decrypted or KErrInsuffcientDataPacketLength, if a part of input data packet
+											is provided for decryption.Otherwise one of the CAF error codes defined in \c caferr.h  or 
+		 									one of the other system-wide error codes.
+		@capability 						DRM Access to DRM protected content is not permitted for processes without DRM capability.
+										    Access to unprotected content is unrestricted. 
+		*/
+		IMPORT_C virtual void Read(const TDesC8& aEncryptedInputDataPacket, TDes8& aDecryptedOutputDataPacket, TRequestStatus& aStatus);
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 		};
 
 	/**	Defines the agent interface allowing clients to browse the objects 
@@ -1423,6 +1455,95 @@
 		*/
 		IMPORT_C virtual TInt CopyFile(RFile& aSource, const TDesC& aDestination);
 		
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		/** 
+		Identifies whether or not the WMDRM content is handled by this agent using the header
+		data of WMDRM file or stream content.
+		
+		The agent should leave only if a temporary or permanent condition prevents it from knowing
+		whether it can detect the content's type.
+
+		@param aHeaderData	Header data of WMDRM file or stream content.
+	    @return ETrue 		If this agent recognises the given content. 
+		*/
+		IMPORT_C virtual TBool IsRecognizedL(const TDesC8& aHeaderData) const;
+		
+		/** 
+		 Determines whether or not the WMDRM content is recognized by this agent. 
+		 If it is recognized, the agent will populate the file and content mime 
+		 type. 
+		 
+		 The agent should leave only if a temporary or permanent condition prevents it from 
+		 detecting content's type.
+
+		 @param aHeaderData			Header data of WMDRM content.
+		 @param aFileMimeType 		Used to return the mime type of the content to the caller.
+		 @param aContentMimeType	Used to return the mime type of the content embedded within the file to the caller. This field should be zero length if there is no embedded content.
+	     @return					Whether or not the content was recognized.
+ 		 @return ETrue 				If the content is handled by this agent. The aFileMimeType and aContentMimeType were updated.
+		 @return EFalse 			If the content was not recognized by this agent.
+		 */
+		IMPORT_C virtual TBool RecognizeContentL(const TDesC8& aHeaderData, TDes8& aFileMimeType, TDes8& aContentMimeType) const;
+		
+		/**  Get an attribute from WMDRM content.
+	
+		@param aHeaderData	Header data of WMDRM content.
+		@param aAttribute	The attribute to retrieve from ContentAccess::TAttribute.
+		@param aValue		Used to return the value of the attribute.
+		
+		@return				KErrNone if the attribute value was updated.
+		@return				KErrCANotSupported if the requested attribute is not supported for this content.
+		@return				Otherwise one of the other CAF error codes defined in \c caferr.h  or one of the 
+							other system-wide error codes for any other errors.
+		@capability DRM 	Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted. 
+		*/
+		IMPORT_C virtual TInt GetAttribute(const TDesC8& aHeaderData, TInt aAttribute, TInt& aValue);
+		
+		/** Get a set of attributes from WMDRM content.
+
+		@param aHeaderData		Header data of WMDRM content.
+		@param aAttributeSet	The set of attributes to query and update.
+		
+		@return 				KErrNone if the attribute set was updated successfully.
+		@return 				Otherwise one of the other CAF error codes defined in \c caferr.h  or one of the 
+								other system-wide error codes for any other errors.
+		@capability DRM 		Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted. 
+		*/
+		IMPORT_C virtual TInt GetAttributeSet(const TDesC8& aHeaderData, RAttributeSet& aAttributeSet);
+		
+		
+		/**  Get text string attributes or meta-data from WMDRM content.
+
+		@param aHeaderData	Header data of WMDRM content.
+		@param aAttribute	The attribute to retrieve from ContentAccess::TStringAttribute.
+		@param aValue		Used to return the value of the attribute.
+		
+		@return				KErrNone if the attribute was retrieved successfully.
+		@return				KErrNotFound if the content object does not exist.
+		@return				KErrCANotSupported if the requested attribute does not apply to this content object.
+		@return				KErrOverflow if the buffer was not large enough to return the result.
+		@return				Otherwise one of the other CAF error codes defined in \c caferr.h  or one of the 
+							other system-wide error codes for any other errors.
+		@capability DRM 	Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted. 
+		*/
+		IMPORT_C virtual TInt GetStringAttribute(const TDesC8& aHeaderData, TInt aAttribute, TDes& aValue);
+		
+		/** Used to obtain a set of string attributes from WMDRM content.
+
+		@param aStringAttributeSet	The set of attributes to query and update.
+		@param aHeaderData			Header data of WMDRM content.
+	
+		@return 					KErrNone if the attribute set was updated successfully.
+		@return 					KErrNotFound if the object with the given virtual path was not found.
+		@return 					Otherwise one of the other CAF error codes defined in \c caferr.h  or one of the 
+									other system-wide error codes for any other errors.
+		@capability DRM 			Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted. 
+		*/
+		IMPORT_C virtual TInt GetStringAttributeSet(const TDesC8& aHeaderData, RStringAttributeSet& aStringAttributeSet);
+
+
+#endif //#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		
 		};
 
 		
--- a/contentmgmt/contentaccessfwfordrm/inc/attribute.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/inc/attribute.h	Mon Oct 12 10:17:04 2009 +0300
@@ -87,6 +87,19 @@
 		 */
 		static CAttribute* NewLC(TUid aAgentUid, const TDesC& aURI, TContentShareMode aShareMode=EContentShareReadOnly);
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT		
+		/**
+		 Constructs a new attribute given an agent and WMDRM header data.
+		 
+		 @param aAgentUid	The agent Uid
+		 @param aHeaderData	Header data of WMDRM content
+		 @return			The new CAttribute.
+		 
+		 @internalComponent
+		 @released		 
+		 */
+		static CAttribute* NewLC(TUid aAgentUid, const TDesC8& aHeaderData);
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 		
 		virtual ~CAttribute();
 
@@ -133,6 +146,11 @@
 	private:
 		void ConstructL(TUid aAgentUid, RFile& aFile);
 		void ConstructL(TUid aAgentUid, const TDesC& aURI, TContentShareMode aShareMode=EContentShareReadOnly);
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		void ConstructL(TUid aAgentUid, const TDesC8& aHeaderData);
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+	
 		CAttribute();
 				
 	private:
--- a/contentmgmt/contentaccessfwfordrm/inc/caferr.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/inc/caferr.h	Mon Oct 12 10:17:04 2009 +0300
@@ -137,5 +137,18 @@
 */ 
 const TInt KErrCACorruptContent = -17459;
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+/**
 
+This error is returned when only a part of encrypted input packet provided for decryption.
+*/
+const TInt KErrInsufficientDataPacketLength = -17460;
+
+/**
+
+This error is returned when only a part of encrypted input packet provided for decryption.
+*/
+const TInt KErrMissingWmdrmHeaderData = -17461;
+
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 #endif // __CAFERR_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/contentaccessfwfordrm/inc/cafhelper.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,96 @@
+/*
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+/** 
+@file 
+
+@publishedPartner
+@prototype
+*/
+
+#ifndef __CAFHELPER_H__
+#define __CAFHELPER_H__
+
+#include <e32base.h>
+#include <f32file.h>
+
+namespace ContentAccess
+	{
+	//forward declaration
+	class MCAFHelperInterface;
+	
+	/**
+	 CAF client application can use this class to load cafhelper.dll and get access to entry function pointer
+	 of the dll,using which the appropriate error handling APIs can be called.
+
+	 @publishedPartner
+	 @prototype
+	 */
+	 	
+	NONSHARABLE_CLASS(CCAFHelper) : public CBase
+		{
+	public:
+		
+		/** 
+		 Constructs a new CCAFHelper object.
+		 
+		 @return 		A pointer to an instance of CCAFHelper class.
+		 @capability	All -TCB. 
+		 */
+		 
+		IMPORT_C static CCAFHelper* NewL();
+		
+		/** 
+		 Constructs a new CCAFHelper object and puts a pointer to the new object 
+	 	 onto the cleanup stack..
+		 
+		 @return		A pointer to an instance of CCAFHelper class.
+		 @capability	All -TCB. 
+		 */
+		 
+		IMPORT_C static CCAFHelper* NewLC();
+		
+		/**
+		Accessor method which returns an entry point function pointer of cafhelper.dll,
+		using which the error handling APIs can be accessed.
+		
+		@return		Reference to an instance of MCafHelperInterface class.
+		@capability	All -TCB. 
+		*/
+		
+		IMPORT_C MCAFHelperInterface& operator()() const;
+		
+		// virtual destructor.		
+		virtual ~CCAFHelper(); 
+		
+			
+		private:
+		
+		CCAFHelper();
+		void ConstructL();
+		
+		private:
+		
+		RLibrary iLibrary;
+		MCAFHelperInterface* iHelper;
+		};
+
+	} // namespace ContentAccess
+	
+#endif // __CAFHELPER_H__
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/contentaccessfwfordrm/inc/cafhelperinterface.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,91 @@
+/*
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+/** 
+@file 
+
+@publishedPartner
+@prototype
+*/
+
+#ifndef __CAFHELPERINTERFACE_H__
+#define __CAFHELPERINTERFACE_H__
+
+#include <e32base.h>
+#include <f32file.h>
+
+namespace ContentAccess
+	{
+	
+	// UID for CAF Helper Dll.
+	const TUid KCAFHelperInterfaceUID = {0x20024480};
+	
+	_LIT(KCAFHelperLibraryName, "cafhelper.dll");
+	
+	/**
+	 This interface defined by UID KCAFHelperInterfaceUID provides APIs to handle 
+	 CAF error messages when CAF client application is not interested /unable to handle 
+	 CAF errors.UI/device manufacturer will provide error handling functionality by 
+	 implementing this interface class as a dll which is enforced to be named as cafhelper.dll.
+
+	 @publishedPartner
+	 @prototype
+	 */
+	 	
+	class MCAFHelperInterface
+		{
+	public:
+		
+		/**  
+		 This method handles the CAF error received for a given file.
+		 @param aError		One of the CAF errors. 
+		 @param aFileName 	File name or file URI for which the error is received
+		 @return 			KErrNone if the error is handled successfully.Otherwise one of the other system-wide
+							errors.
+		 @capability DRM 	Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted 
+		*/
+		virtual TInt HandleCAFErrorL(TInt aError, const TDesC& aFileName) = 0;
+		
+		/**  
+		 This method handles the CAF error received for a given file .
+		 @param aError		One of the CAF errors. 
+		 @param aFileHandle File handle for which the error is received
+		 @return 			KErrNone if the error is handled successfully.Otherwise one of the other system-wide
+							errors.
+		 @capability DRM 	Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted 
+		*/	
+		virtual TInt HandleCAFErrorL(TInt aError, RFile& aFileHandle) = 0;
+		
+		/**  
+		 This method handles the CAF error received for WMDRM content .
+		 @param aError		One of the CAF errors. 
+		 @param aHeaderData The header data of the content for which the error is received
+		 @return 			KErrNone if the error is handled successfully.Otherwise one of the other system-wide
+							errors.
+		 @capability DRM 	Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted 
+		*/
+		virtual TInt HandleCAFErrorL(TInt aError, const TDesC8& aHeaderData) = 0;
+		
+		virtual void Release() = 0;
+		
+		};
+		
+	} // namespace ContentAccess
+	
+#endif // __CAFHELPERINTERFACE_H__
+
--- a/contentmgmt/contentaccessfwfordrm/inc/caftest.iby	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/inc/caftest.iby	Mon Oct 12 10:17:04 2009 +0300
@@ -72,4 +72,11 @@
 data = DATAZ_\tcaf\testdata\audiomulti.content	tcaf\testdata\audiomulti.content
 data = DATAZ_\tcaf\testdata\notes1.txt			tcaf\testdata\notes1.txt
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+data = DATAZ_\tcaf\testdata\dummywm.asf			tcaf\testdata\dummywm.asf
+data = DATAZ_\tcaf\tcafwmdrmsupport.script		tcaf\tcafwmdrmsupport.script
+data = DATAZ_\tcaf\tcafwmdrmsupport.ini			tcaf\tcafwmdrmsupport.ini
+data = DATAZ_\tcaf\tcafhelper.script			tcaf\tcafhelper.script
+data = DATAZ_\tcaf\tcafhelper.ini			tcaf\tcafhelper.ini
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 #endif
--- a/contentmgmt/contentaccessfwfordrm/inc/content.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/inc/content.h	Mon Oct 12 10:17:04 2009 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2003-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -168,6 +168,31 @@
 		*/
 		IMPORT_C static CContent* NewL(RFile& aFile);
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT		
+		/** 
+		 Constructs a new CContent object.
+
+  		 @param aHeaderData	Header data of WMDRM file/stream content. 
+		 @return 			CContent object.
+		 @leave 			KErrMissingHeaderData if the header data is NULL or one of the CAF error codes defined in caferr.h  
+		 					or one of the system-wide error codes for any other errors.
+		 @capability DRM 	Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted 
+	 	 */
+		IMPORT_C static CContent* NewL(const TDesC8& aHeaderData);
+		
+		/** 
+		 Constructs a new CContent object.
+  		 
+  		 @param aHeaderData	Header data of WMDRM file/stream content.  
+		 @return 			CContent object.
+		 @leave 			KErrMissingHeaderData if the header data is NULL or one of the CAF error codes defined in caferr.h  or one of the 
+							system-wide error codes for any other errors.
+		 @capability DRM 	Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted 
+		 */
+		IMPORT_C static CContent* NewLC(const TDesC8& aHeaderData);
+		
+#endif //#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 		/** destructor */
 		virtual ~CContent();
 
@@ -965,6 +990,34 @@
 		void ConstructL(RFile& aFile); 
 		void ConstructL(const TDesC& aURI, TContentShareMode aShareMode); 
 		
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		void ConstructL(const TDesC8& aHeaderData);
+
+		/**
+		Create a CData object for reading WMDRM content.
+		
+		@param	aIntent		The intended use of the content.
+		@param	aHeaderData	Header data of WMDRM file/stream content.
+		@return				CData object.
+		@leave 				One of the CAF error codes defined in caferr.h  or one of the system-wide error codes for any errors.
+		@capability DRM 	Access to DRM agents is not permitted for processes without DRM capability.
+		*/
+		
+		CData* OpenContentL(TIntent aIntent, const TDesC8& aHeaderData);
+		
+		/**
+		Create a CData object for reading WMDRM content.
+		
+		@param	aIntent		The intended use of the content.
+		@param	aHeaderData	Header data of WMDRM file/stream content.
+		@return				CData object.
+		@leave 				One of the CAF error codes defined in caferr.h  or one of the system-wide error codes for any errors.
+		@capability DRM 	Access to DRM agents is not permitted for processes without DRM capability.
+		*/
+		CData* OpenContentLC(TIntent aIntent, const TDesC8& aHeaderData);
+		
+#endif //#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 	private:	
 	
 		/** CAgentFactory object is effectively the	ECOM session handle */
@@ -996,6 +1049,11 @@
 #else
 		RFile iFile;
 #endif //SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		HBufC8* iHeaderData;
+#endif //#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 		};
 
 	} // namespace ContentAccess
--- a/contentmgmt/contentaccessfwfordrm/inc/data.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/inc/data.h	Mon Oct 12 10:17:04 2009 +0300
@@ -279,7 +279,77 @@
 		@released
 		 */
 		static CData* NewLC(TUid aAgentUid, RFile& aFile, const TDesC& aUniqueId, TIntent aIntent);
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 		
+		/** 
+		 Creates a new CData object. 
+		 @param aHeaderData				Header data of WMDRM file/stream content. 
+		 @return 						CData object.
+		 @leave							One of the CAF error codes defined in caferr.h or one of the 
+										system-wide error for any other errors.
+		 @capability 					DRM Access to DRM protected content is not permitted for processes without DRM capability.
+										Access to unprotected content is unrestricted.
+		*/
+			
+		IMPORT_C static CData* NewL(const TDesC8& aHeaderData);
+		
+		/** 
+		 Creates a new CData object. 
+		 @param aHeaderData				Header data of WMDRM file/stream content.
+		 @param aIntent					The intended use of the content.
+		 @return 						CData object.
+		 @leave							One of the CAF error codes defined in caferr.h or one of the 
+										system-wide error for any other errors.
+		 @capability 					DRM Access to DRM protected content is not permitted for processes without DRM capability.
+										Access to unprotected content is unrestricted.
+		*/		
+		
+		IMPORT_C static CData* NewL(const TDesC8& aHeaderData, TIntent aIntent);
+		
+		/** 
+		 Creates a new CData object. 
+		 @param aHeaderData				Header data of WMDRM file/stream content. 
+		 @return 						CData object.
+		 @leave							One of the CAF error codes defined in caferr.h or one of the 
+										system-wide error for any other errors.
+		 @capability 					DRM Access to DRM protected content is not permitted for processes without DRM capability.
+										Access to unprotected content is unrestricted.
+		*/
+		
+		IMPORT_C static CData* NewLC(const TDesC8& aHeaderData);
+		
+		/** 
+		 Creates a new CData object. 
+		 @param aHeaderData				Header data of WMDRM file/stream content.
+		 @param aIntent					The intended use of the content. 
+		 @return 						CData object.
+		 @leave							One of the CAF error codes defined in caferr.h or one of the 
+										system-wide error for any other errors.
+		 @capability 					DRM Access to DRM protected content is not permitted for processes without DRM capability.
+										Access to unprotected content is unrestricted.
+		*/
+		
+		IMPORT_C static CData* NewLC(const TDesC8& aHeaderData, TIntent aIntent);
+		
+		/** 
+		 Creates a new CData object.
+		 @param	aAgentUid				UID of an agent which supports this content. 
+		 @param aHeaderData				Header data of WMDRM file/stream content.
+		 @param aIntent					The intended use of the content.
+		 @return 						CData object.
+		 @leave							One of the CAF error codes defined in caferr.h or one of the 
+										system-wide error for any other errors.
+		 @capability 					DRM Access to DRM protected content is not permitted for processes without DRM capability.
+										Access to unprotected content is unrestricted.
+		 @internalComponent
+		 @released
+		*/
+		
+		static CData* NewLC(TUid aAgentUid, const TDesC8& aHeaderData, TIntent aIntent);
+		
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 		/** destructor */
 		virtual ~CData();
 		
@@ -747,6 +817,37 @@
 		IMPORT_C TBool GetMimeTypeL(TDes8& aMimeType) const;
 #endif	// REMOVE_CAF1
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		/**
+		Decrypts the encrypted input data packet.
+		
+		@param aEncryptedInputDataPacket	Buffer descriptor containing the encrypted data packet supplied by client application. 
+		@param aDecryptedOutputDataPacket	Buffer descriptor supplied by the client application into which the decrypted data is written.
+											The length of this descriptor must be equal to or greater than the input packet.
+		@return								KErrNone if successful.KErrInsufficientDataPacketLength if a part of input packet is provided,
+											otherwise one of the CAF error codes defined in \c caferr.h  or 
+		 									one of the other system-wide error codes.
+		@capability 						DRM Access to DRM protected content is not permitted for processes without DRM capability.
+											Access to unprotected content is unrestricted.
+		*/
+
+		IMPORT_C TInt Read(const TDesC8& aEncryptedInputDataPacket, TDes8& aDecryptedOutputDataPacket) const;
+		
+		/**
+		Decrypts the encrypted input data packet asynchronously.
+		@param aEncryptedInputDataPacket	Buffer descriptor containing the encrypted data packet supplied by client application. 
+		@param aDecryptedOutputDataPacket	Buffer descriptor supplied by the client application into which the decrypted data is written.
+											The length of this descriptor must be equal to or greater than the input packet.
+		@param aStatus						Asynchronous request status. On completion this will contain one of the following error codes:
+											KErrNone if the data packet was successfully decrypted.KErrInsufficientDataPacketLength if a 
+											part of input packet is provided, otherwise one of the CAF error codes defined in \c caferr.h or 
+		 									one of the other system-wide error codes.
+		@capability 						DRM Access to DRM protected content is not permitted for processes without DRM capability.
+										    Access to unprotected content is unrestricted. 
+		*/
+		IMPORT_C void Read(const TDesC8& aEncryptedInputDataPacket, TDes8& aDecryptedOutputDataPacket, TRequestStatus& aStatus) const;
+
+#endif //#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 	
 	private:
 		CData();
@@ -760,6 +861,15 @@
 		void ConstructL(TUid aAgentUid, RFile& aFile, const TDesC& aUniqueId);
 		void ConstructL(TUid aAgentUid, const TVirtualPathPtr& aVirtualPath, TContentShareMode aShareMode); 
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		
+		void ConstructL(TUid aAgentUid, const TDesC8& aHeaderData, TIntent aIntent);
+		void ConstructL(const TDesC8& aHeaderData);
+		void ConstructL(const TDesC8& aHeaderData, TIntent aIntent);
+		void ConstructL(TUid aAgentUid, const TDesC8& aHeaderData);
+		
+#endif //#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
 		/*
 		 * This is the obselete 32bit Read and replaced by its 64bit counterpart
--- a/contentmgmt/contentaccessfwfordrm/inc/manager.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/inc/manager.h	Mon Oct 12 10:17:04 2009 +0300
@@ -690,6 +690,66 @@
 		IMPORT_C static void DeleteFileL (const TDesC &aFileName);
 #endif // REMOVE_CAF1
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
+		/**  Get an attribute from WMDRM content.
+	
+		@param aAttribute	The attribute to retrieve, from ContentAccess::TAttribute.
+		@param aValue		Used to return the value of the attribute.
+		@param aHeaderData	Header data of WMDRM content.
+		@return				Whether the attribute value was updated.
+		@return				KErrNone if the attribute value was updated.
+		@return				KErrCANotSupported if the requested attribute is not supported for this content.
+		@return				Otherwise one of the other CAF error codes defined in \c caferr.h  or one of the 
+							other system-wide error codes for any other errors.
+		@capability DRM 	Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted. 
+		*/
+		IMPORT_C TInt GetAttribute(const TDesC8& aHeaderData, TInt aAttribute, TInt& aValue) const;
+		
+		/** Get a set of attributes from WMDRM content.
+
+		@param aAttributeSet	The set of attributes to query and update.
+		@param aHeaderData		Header data of WMDRM content.
+		@return 				Whether the attribute set was updated.
+		@return 				KErrNone if the attribute set was updated successfully.
+		@return 				Otherwise one of the other CAF error codes defined in \c caferr.h  or one of the 
+								other system-wide error codes for any other errors.
+		@capability DRM 		Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted. 
+		*/
+		IMPORT_C TInt GetAttributeSet(const TDesC8& aHeaderData, RAttributeSet& aAttributeSet) const;
+		
+		
+		/**  Get text string attributes or meta-data from WMDRM content.
+
+		@param aAttribute	The attribute to retrieve, from ContentAccess::TStringAttribute.
+		@param aValue		Used to return the value of the attribute.
+		@param aHeaderData	Header data of WMDRM content.
+		@return				Whether the value was updated.
+		@return				KErrNone if the attribute was retrieved successfully.
+		@return				KErrNotFound if the content object does not exist.
+		@return				KErrCANotSupported if the requested attribute does not apply to this content object.
+		@return				KErrOverflow if the buffer was not large enough to return the result.
+		@return				Otherwise one of the other CAF error codes defined in \c caferr.h  or one of the 
+							other system-wide error codes for any other errors.
+		@capability DRM 	Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted. 
+		*/
+		IMPORT_C TInt GetStringAttribute(const TDesC8& aHeaderData, TInt aAttribute, TDes& aValue) const;
+		
+		/** Used to obtain a set of string attributes from WMDRM content.
+
+		@param aStringAttributeSet	The set of attributes to query and update.
+		@param aHeaderData			Header data of WMDRM content.
+		@return 					Whether the string attribute set was updated.
+		@return 					KErrNone if the attribute set was updated successfully.
+		@return 					KErrNotFound if the object with the given virtual path was not found.
+		@return 					Otherwise one of the other CAF error codes defined in \c caferr.h  or one of the 
+									other system-wide error codes for any other errors.
+		@capability DRM 			Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted. 
+		*/
+		IMPORT_C TInt GetStringAttributeSet(const TDesC8& aHeaderData, RStringAttributeSet& aStringAttributeSet) const;
+
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 	private:
 		CManager();
 		void ConstructL();
@@ -721,7 +781,15 @@
 		void DoGetStringAttributeSetL(RStringAttributeSet& aStringAttributeSet, RFile& aFile, const TDesC& aUniqueId) const;
 		void DoNotifyStatusChangeL(const TDesC& aURI, TEventMask aMask, TRequestStatus& aStatus);		
 		void DoCancelNotifyStatusChangeL(const TDesC& aURI, TRequestStatus& aStatus);
-		void DoSetPropertyL(TAgentProperty aProperty, TInt aValue);		
+		void DoSetPropertyL(TAgentProperty aProperty, TInt aValue);
+		
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		void DoGetAttributeL(const TDesC8& aHeaderData, TInt aAttribute, TInt& aValue) const;
+		void DoGetAttributeSetL(const TDesC8& aHeaderData, RAttributeSet& aAttributeSet) const;
+		void DoGetStringAttributeL(const TDesC8& aHeaderData, TInt aAttribute, TDes& aValue) const;
+		void DoGetStringAttributeSetL(const TDesC8& aHeaderData, RStringAttributeSet& aStringAttributeSet) const;	
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+	
 	private:
 		// Holds instances of all the agents
 		CAgentResolver* iResolver;
@@ -730,5 +798,3 @@
 	} // namespace ContentAccess
 
 #endif /* __MANAGER_H__ */
-
-
--- a/contentmgmt/contentaccessfwfordrm/source/caf/Agentfactory.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/source/caf/Agentfactory.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -122,3 +122,64 @@
 	User::Leave(KErrCANotSupported);
 	}
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+	
+EXPORT_C TInt CAgentData::Read(const TDesC8& /*aEncryptedInputDataPacket*/, TDes8& /*aDecryptedOutputDataPacket*/)
+	{
+ 	return KErrCANotSupported;
+ 	}
+ 	
+EXPORT_C void CAgentData::Read(const TDesC8& /*aEncryptedInputDataPacket*/, TDes8& /*aDecryptedOutputDataPacket*/, TRequestStatus& aStatus)
+ 	{
+ 	TRequestStatus* status = &aStatus;
+  	User::RequestComplete(status, KErrCANotSupported);
+ 	}
+ 	
+EXPORT_C TBool CAgentManager::IsRecognizedL(const TDesC8& /*aHeaderData*/) const
+ 	{
+  	return EFalse;
+ 	}
+ 	
+EXPORT_C TBool CAgentManager::RecognizeContentL(const TDesC8& /*aHeaderData*/, TDes8& aFileMimeType, TDes8& aContentMimeType) const
+	{
+	aFileMimeType.Copy(KNullDesC8());
+	aContentMimeType.Copy(KNullDesC8());
+ 	return EFalse;
+	}
+	
+EXPORT_C TInt CAgentManager::GetAttribute(const TDesC8& /*aHeaderData*/, TInt /*aAttribute*/, TInt& /*aValue*/)
+	{
+	return KErrCANotSupported;
+	}
+
+EXPORT_C TInt CAgentManager::GetAttributeSet(const TDesC8& /*aHeaderData*/, RAttributeSet& /*aAttributeSet*/)
+	{
+	return KErrCANotSupported;
+	}
+	
+EXPORT_C TInt CAgentManager::GetStringAttribute(const TDesC8& /*aHeaderData*/, TInt /*aAttribute*/, TDes& /*aValue*/)
+	{
+	return KErrCANotSupported;
+	}
+	
+EXPORT_C TInt CAgentManager::GetStringAttributeSet(const TDesC8& /*aHeaderData*/, RStringAttributeSet& /*aStringAttributeSet*/)
+	{
+	return KErrCANotSupported;
+	}
+ 	
+EXPORT_C CAgentData* CAgentFactory::CreateDataConsumerL(const TDesC8& /*aHeaderData*/)
+ 	{
+ 	User::Leave(KErrCANotSupported);
+ 	// cannot reach here. The return statement is added to avoid warning.
+ 	return NULL;
+  	}
+ 		
+EXPORT_C CAgentContent* CAgentFactory::CreateContentBrowserL(const TDesC8& /*aHeaderData*/)
+ 	{
+ 	User::Leave(KErrCANotSupported);
+ 	// cannot be reach here . The return statement is added to avoid warning.
+ 	return NULL;
+ 	}
+ 	
+
+#endif //#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
--- a/contentmgmt/contentaccessfwfordrm/source/caf/attribute.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/source/caf/attribute.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -47,6 +47,16 @@
 	self->ConstructL(aAgentUid, aURI, aShareMode);
 	return self;
 	}
+	
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+CAttribute* CAttribute::NewLC(TUid aAgentUid, const TDesC8& aHeaderData)
+	{
+	CAttribute* self = new(ELeave) CAttribute();
+	CleanupStack::PushL(self);
+	self->ConstructL(aAgentUid, aHeaderData);
+	return self;
+	}
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 
 CAttribute::CAttribute()
 	{
@@ -84,7 +94,17 @@
 	iResponseSet = CBitset::NewL(static_cast<TInt>(KAttrTop));
     }
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+void CAttribute::ConstructL(TUid aAgentUid, const TDesC8& aHeaderData)
+	{
+	// create a agent factory implementation (pseudo ECOM handle)
+	iAgentFactory = CAgentFactory::NewL(aAgentUid);
+	iAgentContent = iAgentFactory->CreateContentBrowserL(aHeaderData);
 
+	iQuerySet = CBitset::NewL(static_cast<TInt>(KAttrTop));
+	iResponseSet = CBitset::NewL(static_cast<TInt>(KAttrTop));
+    }
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 
 EXPORT_C void CAttribute::Reset()
 	{
--- a/contentmgmt/contentaccessfwfordrm/source/caf/content.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/source/caf/content.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -26,6 +26,7 @@
 #include <caf/agent.h>
 #include <caf/virtualpath.h>
 #include <caf/agentfactory.h>
+#include <caf/caferr.h>
 
 #ifndef REMOVE_CAF1
 #include <caf/attribute.h>
@@ -74,6 +75,25 @@
 	return self;
 	}
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
+EXPORT_C CContent* CContent::NewLC(const TDesC8& aHeaderData) 
+	{
+	CContent* self = new(ELeave) CContent();
+	CleanupStack::PushL(self);
+	self->ConstructL(aHeaderData);
+	return self;
+	}
+
+EXPORT_C CContent* CContent::NewL(const TDesC8& aHeaderData) 
+	{
+	CContent* self=CContent::NewLC(aHeaderData);
+	CleanupStack::Pop(self);
+	return self;
+	}
+	
+#endif //#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 CContent::CContent() : iDefaultVirtualPath(KNullDesC(), KDefaultContentObject())
 	{ 
 	}
@@ -81,15 +101,16 @@
 CContent::~CContent() 
 	{ 
 	delete iAgentContent;
-
+	iFile.Close();
+	
 	if(iVirtualPath)
 		{
 		delete iVirtualPath;
 		}
-	else
-		{
-		iFile.Close();	
-		}
+	
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+	delete iHeaderData;
+#endif //#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 	
 	// Finished with agent, this closes ECOM handle
 	delete iAgentFactory;
@@ -168,6 +189,36 @@
 	CleanupStack::PopAndDestroy(2, resolver); // actualUri
 	}
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
+void CContent::ConstructL(const TDesC8& aHeaderData) 
+	{
+	if(aHeaderData.Length() <= 0)
+		{
+		User::Leave(KErrMissingWmdrmHeaderData);
+		}
+	
+	iHeaderData = aHeaderData.AllocL();
+	
+	CAgentResolver* resolver = CAgentResolver::NewLC(EFalse);
+	
+	// Find the agent who handles the file
+	CAgentInfo& agentInfo = resolver->ResolveFileL(aHeaderData);
+
+	// copy the agent name and Uid
+	iAgent = agentInfo.Agent();
+
+	// Construct the agent factory (ECOM handle)
+	iAgentFactory = CAgentFactory::NewL(iAgent.ImplementationUid());
+	// Construct the CAgentContent object
+	iAgentContent = iAgentFactory->CreateContentBrowserL(aHeaderData);
+
+	// Finished with resolver (and the agentInfo object it owns)
+	CleanupStack::PopAndDestroy(resolver); 
+	}
+
+#endif //#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 EXPORT_C TInt CContent::OpenContainer(const TDesC &aUniqueId) 
 	{
 	return iAgentContent->OpenContainer(aUniqueId);
@@ -300,12 +351,26 @@
 
 EXPORT_C CData* CContent::OpenContentL(TIntent aIntent)
 	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+	if(iHeaderData != NULL)
+		return OpenContentL(aIntent, *iHeaderData);
+    else
+		return OpenContentL(aIntent, iDefaultVirtualPath.UniqueId());
+#else
 	return OpenContentL(aIntent, iDefaultVirtualPath.UniqueId());
+#endif //#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 	}
 
 EXPORT_C CData* CContent::OpenContentLC(TIntent aIntent)
 	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+	if(iHeaderData != NULL)
+		return OpenContentLC(aIntent, *iHeaderData);
+	else
+		return OpenContentLC(aIntent, iDefaultVirtualPath.UniqueId());
+#else
 	return OpenContentLC(aIntent, iDefaultVirtualPath.UniqueId());
+#endif //#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 	}
 
 EXPORT_C CData* CContent::OpenContentL(TIntent aIntent, const TDesC &aUniqueId)
@@ -329,6 +394,22 @@
 		return CData::NewLC(iAgent.ImplementationUid(), iFile, aUniqueId, aIntent);
 		}
 	}
+	
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
+CData* CContent::OpenContentL(TIntent aIntent, const TDesC8& aHeaderData)
+	{
+	CData* data = OpenContentLC(aIntent, aHeaderData);
+	CleanupStack::Pop(data);
+	return data;
+	}
+
+CData* CContent::OpenContentLC(TIntent aIntent, const TDesC8& aHeaderData)
+	{
+	return CData::NewLC(iAgent.ImplementationUid(), aHeaderData, aIntent);
+	}
+	
+#endif //#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 
 EXPORT_C const TAgent& CContent::Agent() const
 	{
@@ -362,6 +443,39 @@
 	return NewAttributeL(aPreloaded, EContentShareReadOnly);
 	}
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+EXPORT_C CAttribute* CContent::NewAttributeL(TBool aPreloaded, TContentShareMode aShareMode)
+	{
+	CAttribute* attr = NULL;
+	
+	if(iVirtualPath)
+		{
+		// if we were opened with a file name
+		attr = CAttribute::NewLC(iAgent.ImplementationUid(), iDefaultVirtualPath.URI(), aShareMode);
+		}
+	else if(iHeaderData)
+		{
+		attr = CAttribute::NewLC(iAgent.ImplementationUid(), *iHeaderData);
+		}
+	else
+		{
+		// if we were opened with a file handle 
+		attr = CAttribute::NewLC(iAgent.ImplementationUid(), iFile);
+		}
+
+	// If aPreloaded is set, query the agent immediately for all the attributes
+	if (aPreloaded)
+		{
+		attr->QuerySet().SetAll();
+		attr->GetL();
+		}
+
+	CleanupStack::Pop(attr);
+	return attr;
+	}
+
+#else
+
 EXPORT_C CAttribute* CContent::NewAttributeL(TBool aPreloaded, TContentShareMode aShareMode)
 	{
 	CAttribute* attr = NULL;
@@ -388,9 +502,10 @@
 	return attr;
 	}
 
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 #endif // REMOVE_CAF1
 
-
 // DLL entry point - only for EKA1
 
 
--- a/contentmgmt/contentaccessfwfordrm/source/caf/data.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/source/caf/data.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -111,6 +111,48 @@
 	return self;
 	}
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
+EXPORT_C CData* CData::NewL(const TDesC8& aHeaderData)
+	{
+	CData* self = CData::NewLC(aHeaderData);
+	CleanupStack::Pop(self);
+	return self;
+	}
+		
+EXPORT_C CData* CData::NewL(const TDesC8& aHeaderData, TIntent aIntent)
+	{
+	CData* self = CData::NewLC(aHeaderData, aIntent);
+	CleanupStack::Pop(self);
+	return self;
+	}
+		
+EXPORT_C CData* CData::NewLC(const TDesC8& aHeaderData)
+	{
+	CData* self = new (ELeave) CData();
+	CleanupStack::PushL(self);
+	self->ConstructL(aHeaderData);
+	return self;
+	}
+		
+EXPORT_C CData* CData::NewLC(const TDesC8& aHeaderData, TIntent aIntent)
+	{
+	CData* self = new (ELeave) CData();
+	CleanupStack::PushL(self);
+	self->ConstructL(aHeaderData, aIntent);
+	return self;
+	}
+		
+CData* CData::NewLC(TUid aAgentUid, const TDesC8& aHeaderData, TIntent aIntent)
+	{
+	CData* self = new (ELeave) CData();
+	CleanupStack::PushL(self);
+	self->ConstructL(aAgentUid, aHeaderData, aIntent);
+	return self;
+	}
+
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 CData::CData()
 	{ 
 	}
@@ -247,10 +289,52 @@
 	// Create an instance of the agent's CAgentData
 	// The agent must make a duplicate of the file handle
 	iAgentData = iAgentFactory->CreateDataConsumerL(aFile, aUniqueId);
-
+  	}
+  
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+  	
+void CData::ConstructL(const TDesC8& aHeaderData)
+	{
+	// Find the agent who handles the file
+	CAgentResolver* resolver = CAgentResolver::NewLC(EFalse);
+	CAgentInfo& agentInfo = resolver->ResolveFileL(aHeaderData);
+	
+	// Figure out the Uid of the agent
+	TUid agentUid = agentInfo.Agent().ImplementationUid();
+	CData::ConstructL(agentUid, aHeaderData);
+	
+	// Cleanup resolver after creating CData to unnecessary 
+	// unloading and loading of agent plug-ins
+	CleanupStack::PopAndDestroy(resolver); 
 	}
 
+void CData::ConstructL(const TDesC8& aHeaderData, TIntent aIntent)
+	{
+	CData::ConstructL(aHeaderData);
+	
+	// Ensure that client's intent is possible
+	User::LeaveIfError(iAgentData->EvaluateIntent(aIntent));
+	}
+	
+void CData::ConstructL(TUid aAgentUid, const TDesC8& aHeaderData)
+	{
+	iAgentUid = aAgentUid;
+	
+	iAgentFactory = CAgentFactory::NewL(iAgentUid);
+	// create an instance of agent's CAgentStreamData.
+	iAgentData = iAgentFactory->CreateDataConsumerL(aHeaderData);
+	}
 
+void CData::ConstructL(TUid aUid, const TDesC8& aHeaderData, TIntent aIntent)
+	{
+	CData::ConstructL(aUid, aHeaderData);
+	
+	// Ensure that client's intent is possible
+	User::LeaveIfError(iAgentData->EvaluateIntent(aIntent));
+	}
+	
+#endif //#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+	
 EXPORT_C void CData::DataSizeL(TInt& aSize)
 	{
 	// ask the agent for the data size of the current content object
@@ -317,6 +401,20 @@
 	{
 	iAgentData->ReadCancel(aStatus);
 	}
+	
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
+EXPORT_C TInt CData::Read(const TDesC8& aEncryptedInputDataPacket, TDes8& aDecryptedOutputPacket) const
+	{
+	return iAgentData->Read(aEncryptedInputDataPacket, aDecryptedOutputPacket);
+	}
+		
+EXPORT_C void CData::Read(const TDesC8& aEncryptedInputDataPacket, TDes8& aDecryptedOutputPacket, TRequestStatus& aStatus) const
+	{
+	iAgentData->Read(aEncryptedInputDataPacket, aDecryptedOutputPacket, aStatus);
+	}
+
+#endif //#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 
 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
 	EXPORT_C TInt CData::Read_Unused(TInt aPos, TDes8& aDes, 
--- a/contentmgmt/contentaccessfwfordrm/source/caf/manager.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/source/caf/manager.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -703,3 +703,63 @@
 	}
 #endif // REMOVE_CAF1
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
+EXPORT_C TInt CManager::GetAttribute(const TDesC8& aHeaderData, TInt aAttribute, TInt& aValue) const
+	{
+	TRAPD(err, DoGetAttributeL(aHeaderData, aAttribute, aValue));
+	return err;
+	}
+
+void CManager::DoGetAttributeL(const TDesC8& aHeaderData, TInt aAttribute, TInt& aValue) const
+	{
+	// Find the agent who handles the file 
+	CAgentInfo& agentInfo = iResolver->ResolveFileL(aHeaderData);
+	User::LeaveIfError(agentInfo.AgentManagerL().GetAttribute(aHeaderData, aAttribute, aValue));
+	}
+	
+EXPORT_C TInt CManager::GetAttributeSet(const TDesC8& aHeaderData, RAttributeSet& aAttributeSet) const
+	{
+	TRAPD(err, DoGetAttributeSetL(aHeaderData, aAttributeSet));
+	return err;
+	}
+
+void CManager::DoGetAttributeSetL(const TDesC8& aHeaderData, RAttributeSet& aAttributeSet) const	
+	{
+	// Find the agent who handles the file 
+	CAgentInfo& agentInfo = iResolver->ResolveFileL(aHeaderData);
+	
+	User::LeaveIfError(agentInfo.AgentManagerL().GetAttributeSet(aHeaderData, aAttributeSet));
+	}
+	
+EXPORT_C TInt CManager::GetStringAttribute(const TDesC8& aHeaderData, TInt aAttribute, TDes& aValue) const
+	{
+	TRAPD(err, DoGetStringAttributeL(aHeaderData, aAttribute, aValue));
+	return err;
+	}
+	
+void CManager::DoGetStringAttributeL(const TDesC8& aHeaderData, TInt aAttribute, TDes& aValue) const
+	{
+	// Find the agent who handles the file 
+	CAgentInfo& agentInfo = iResolver->ResolveFileL(aHeaderData);
+	
+	// find out the attribute
+	User::LeaveIfError(agentInfo.AgentManagerL().GetStringAttribute(aHeaderData, aAttribute, aValue));
+	}
+	
+EXPORT_C TInt CManager::GetStringAttributeSet(const TDesC8& aHeaderData, RStringAttributeSet& aStringAttributeSet) const
+	{
+	TRAPD(err, DoGetStringAttributeSetL(aHeaderData, aStringAttributeSet));
+	return err;
+	}
+
+void CManager::DoGetStringAttributeSetL(const TDesC8& aHeaderData, RStringAttributeSet& aStringAttributeSet) const
+	{
+	// Find the agent who handles the file 
+	CAgentInfo& agentInfo = iResolver->ResolveFileL(aHeaderData);
+
+	// find out the array of attributes
+	User::LeaveIfError(agentInfo.AgentManagerL().GetStringAttributeSet(aHeaderData, aStringAttributeSet));
+	}
+	
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
--- a/contentmgmt/contentaccessfwfordrm/source/caf/resolver.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/source/caf/resolver.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -352,6 +352,75 @@
 		}
 	return *iDefaultAgent;
 	}
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
+CAgentInfo& CAgentResolver::ResolveFileL(const TDesC8& aHeaderData)
+	{
+	// Go through all the agents and return the one which supports the given WMDRM content.
+	
+	TInt agentsCount(iAgentInfos.Count());
+	CAgentManager* agentManager = NULL;
+	
+	for (TInt i = 0; i < agentsCount; ++i)
+		{
+		TRAPD(result, agentManager = &iAgentInfos[i]->AgentManagerL());
+		if(result != KErrNone)
+			{
+			if(KErrNoMemory == result)
+				{
+				User::Leave(result);
+				}
+			else
+				{
+				continue;	
+				}
+			}
+			
+		if (agentManager->IsRecognizedL(aHeaderData))
+			{
+			return *iAgentInfos[i];
+			}
+		}
+		
+    // will never reach here	
+	return *iDefaultAgent;
+	}
+	
+	
+EXPORT_C TBool CAgentResolver::DoRecognizeL(const TDesC8& aHeader, TDes8& aFileMimeType, TDes8& aContentMimeType)
+	{
+	// Go through all the agents and return the one which supports the given WMDRM content.
+	TInt agentsCount(iAgentInfos.Count());
+	CAgentManager* agentManager = NULL;
+	for (TInt i = 0; i < agentsCount; ++i)
+		{
+		TRAPD(result, agentManager = &iAgentInfos[i]->AgentManagerL());
+		if(result != KErrNone)
+			{
+			if(KErrNoMemory == result)
+				{
+				User::Leave(result);
+				}
+			else
+				{
+				continue;	
+				}
+			}
+			
+		if (agentManager->RecognizeContentL(aHeader, aFileMimeType, aContentMimeType))
+			{
+			// force to lower case to ensure that chosen lower case scheme for mime types is maintained
+			aFileMimeType.LowerCase();
+			aContentMimeType.LowerCase();			
+			return ETrue;
+			}
+		}
+		
+	return EFalse;
+	}
+	
+#endif //#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 	
 TUid CAgentResolver::ResolveDirectory(const TDesC& aPath, TDes& aActualPath, TBool& aThePrivateDir) const
 	{
--- a/contentmgmt/contentaccessfwfordrm/source/caf/resolver.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/source/caf/resolver.h	Mon Oct 12 10:17:04 2009 +0300
@@ -89,7 +89,17 @@
 			@return	The CAgentInfo object associated with the agent that will handle this file.
 			*/
 			CAgentInfo& ResolveFileL(RFile& aFile) const;			
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 			
+			/** Finds the agent which handles this piece of content.
+			@param aHeaderData	Header data of WMDRM file or stream content.
+			@return				CAgentInfo object associated with the agent that will handle WMDRM content.	
+			*/
+			CAgentInfo& ResolveFileL(const TDesC8& aHeaderData);
+			
+#endif //#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+						
 			/** Finds the agent that handles a file and returns the actual URI of the content.
 			
 			If the aUri is of the form "c:\\private\\agent_name\\" 
@@ -164,6 +174,20 @@
 			*/
 			IMPORT_C const RArray<TPtrC8>& ConsumerMimeTypes() const;
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT			
+			/** This function should only be used by the CAF recogizer DLL.
+			
+			@param aHeader			Header data of WMDRM content.
+			@param aFileMimeType	If the content is recognized this will be populated with 
+									the mime type of the content.
+			@param aContentMimeType	If the content is recognized this will be populated with the mime type of the content. 
+
+			@return					ETrue if the content is recognized by content access agent
+			@return					EFalse if the content is not recognized by a content access agent
+			*/
+			IMPORT_C TBool DoRecognizeL(const TDesC8& aHeader, TDes8& aFileMimeType, TDes8& aContentMimeType);
+#endif //#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT	
+
 			/** Find an agent by it's Uid */
 			CAgentInfo& AgentInfoL(const TUid& aUid) const;
 			
--- a/contentmgmt/contentaccessfwfordrm/source/caf/supplieroutputfile.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/source/caf/supplieroutputfile.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -15,9 +15,8 @@
 *
 */
 
-
-#include "apgcli.h"
-#include "apmstd.h"
+#include <apgcli.h>
+#include <apmstd.h>
 #include <caf/supplieroutputfile.h>
 
 #include <caf/caftypes.h>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/contentaccessfwfordrm/source/cafutils/cafhelper.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,74 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include "cafhelper.h"
+#include "cafhelperinterface.h"
+#include <e32def.h>
+#include <e32uid.h>
+
+using namespace ContentAccess;
+
+EXPORT_C CCAFHelper* CCAFHelper::NewL()
+	{
+	CCAFHelper* self = CCAFHelper::NewLC();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+EXPORT_C CCAFHelper* CCAFHelper::NewLC()
+	{
+	CCAFHelper* self = new (ELeave) CCAFHelper;
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+	
+CCAFHelper::CCAFHelper()
+	{
+	}
+
+void CCAFHelper::ConstructL()
+	{
+	// Dynamically load the DLL.
+	TUidType uidType(KDynamicLibraryUid, KCAFHelperInterfaceUID);
+	
+	User::LeaveIfError(iLibrary.Load(KCAFHelperLibraryName, uidType));
+	
+	// Function at ordinal 1 creates new CCAFAgentHelper.
+	TLibraryFunction entryFunc = iLibrary.Lookup(1);
+	if (entryFunc == NULL)
+    	{
+        iLibrary.Close();
+        User::Leave(KErrBadLibraryEntryPoint);
+    	}
+		
+	// Call the function to create new CCAFAgentHelper.
+	iHelper = (MCAFHelperInterface*)entryFunc();
+	}
+
+EXPORT_C MCAFHelperInterface& CCAFHelper::operator()() const
+	{
+	return *iHelper;
+	}
+	
+CCAFHelper::~CCAFHelper()
+	{
+	iHelper->Release();
+	iLibrary.Close();
+	}
+	
--- a/contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentcontent.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentcontent.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -42,6 +42,17 @@
 	return self;
 	}
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+CF32AgentContent* CF32AgentContent::NewL(const TDesC8& aHeaderData)
+	{
+	CF32AgentContent* self = new (ELeave) CF32AgentContent;
+	CleanupStack::PushL(self);
+	self->ConstructL(aHeaderData);
+	CleanupStack::Pop(self);
+	return self;
+	}
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+	
 CF32AgentContent::CF32AgentContent()
 	{
 	}
@@ -55,6 +66,10 @@
 		iFs.Close();
 		}
 	delete iURI;
+	
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT	
+	delete iHeaderData;
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 	}
   
 void CF32AgentContent::ConstructL(const TDesC& aURI, TContentShareMode aShareMode)
@@ -73,6 +88,16 @@
 	User::LeaveIfError(iFile.Duplicate(aFile));
 	}
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT	
+void CF32AgentContent::ConstructL(const TDesC8& aHeaderData)
+	{
+	if(aHeaderData.Length() > 0)
+		iHeaderData = aHeaderData.AllocL();
+	else
+		User::Leave(KErrMissingWmdrmHeaderData);
+	}
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 TInt CF32AgentContent::OpenContainer(const TDesC&)
 	{
 	return KErrNotFound;
@@ -157,6 +182,33 @@
 	return err;
 	}
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+TInt CF32AgentContent::GetAttribute(TInt aAttribute, TInt& aValue, const TDesC& aUniqueId)
+	{
+	
+	// check that the unique Id exists
+	if(TF32DefaultAttributes::CheckUniqueId(aUniqueId) != KErrNone)
+		{
+		return KErrNotFound;	
+		}
+	
+	TInt err = KErrNone;
+	if(iURI)
+		{
+		err = TF32DefaultAttributes::GetAttribute(aAttribute, aValue, *iURI);
+		}
+	else if(iHeaderData)
+		{
+		err = TF32DefaultAttributes::GetAttribute(*iHeaderData, aAttribute, aValue);
+		}
+	else
+		{
+		err = TF32DefaultAttributes::GetAttribute(aAttribute, aValue, iFile);
+		}
+	return err;
+	}
+
+#else
 TInt CF32AgentContent::GetAttribute(TInt aAttribute, TInt& aValue, const TDesC& aUniqueId)
 	{
 	// check that the unique Id exists
@@ -176,6 +228,35 @@
 		}
 	return err;
 	}
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
+TInt CF32AgentContent::GetAttributeSet(RAttributeSet& aAttributeSet, const TDesC& aUniqueId)
+	{
+	// check that the unique Id exists
+	if(TF32DefaultAttributes::CheckUniqueId(aUniqueId) != KErrNone)
+		{
+		return KErrNotFound;	
+		}
+		
+	TInt err = KErrNone;
+	if(iURI)
+		{
+		err = TF32DefaultAttributes::GetAttributeSet(aAttributeSet, *iURI);
+		}
+	else if(iHeaderData)
+		{
+		err = TF32DefaultAttributes::GetAttributeSet(*iHeaderData, aAttributeSet);
+		}
+	else
+		{
+		err = TF32DefaultAttributes::GetAttributeSet(aAttributeSet, iFile);
+		}
+	return err;
+	}
+
+#else
 
 TInt CF32AgentContent::GetAttributeSet(RAttributeSet& aAttributeSet, const TDesC& aUniqueId)
 	{
@@ -197,6 +278,35 @@
 	return err;
 	}
 
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
+TInt CF32AgentContent::GetStringAttribute(TInt aAttribute, TDes& aValue, const TDesC& aUniqueId)
+	{
+	// check that the unique Id exists
+	if(TF32DefaultAttributes::CheckUniqueId(aUniqueId) != KErrNone)
+		{
+		return KErrNotFound;	
+		}
+		
+	TInt err = KErrNone;
+	if(iURI)
+		{
+		err = TF32DefaultAttributes::GetStringAttribute(aAttribute, aValue, *iURI);
+		}
+	else if(iHeaderData)
+		{
+		err = TF32DefaultAttributes::GetStringAttribute(*iHeaderData, aAttribute, aValue);
+		}
+	else
+		{
+		err = TF32DefaultAttributes::GetStringAttribute(aAttribute, aValue, iFile);
+		}
+	return err;
+	}
+
+#else
 TInt CF32AgentContent::GetStringAttribute(TInt aAttribute, TDes& aValue, const TDesC& aUniqueId)
 	{
 	// check that the unique Id exists
@@ -216,6 +326,35 @@
 		}
 	return err;
 	}
+#endif
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
+TInt CF32AgentContent::GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet, const TDesC& aUniqueId)
+	{
+	// check that the unique Id exists
+	if(TF32DefaultAttributes::CheckUniqueId(aUniqueId) != KErrNone)
+		{
+		return KErrNotFound;	
+		}
+	
+	TInt err = KErrNone;
+	if(iURI)
+		{
+		err = TF32DefaultAttributes::GetStringAttributeSet(aStringAttributeSet, *iURI);
+		}
+	else if(iHeaderData)
+		{
+		err = TF32DefaultAttributes::GetStringAttributeSet(*iHeaderData, aStringAttributeSet);
+		}
+	else
+		{
+		err = TF32DefaultAttributes::GetStringAttributeSet(aStringAttributeSet, iFile);
+		}
+	return err;
+	}
+
+#else
 
 TInt CF32AgentContent::GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet, const TDesC& aUniqueId)
 	{
@@ -237,6 +376,8 @@
 	return err;
 	}
 
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 TInt CF32AgentContent::AgentSpecificCommand(TInt , const TDesC8& , TDes8& )
 	{
 	return KErrCANotSupported;
--- a/contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentcontent.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentcontent.h	Mon Oct 12 10:17:04 2009 +0300
@@ -51,6 +51,10 @@
 		// Two phase constructor used when the file is opened with 
 		// a file handle
 		static CF32AgentContent* NewL(RFile& aFile);
+		
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		static CF32AgentContent* NewL(const TDesC8& aHeaderData);
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 
 		virtual ~CF32AgentContent();
 
@@ -78,6 +82,9 @@
 		CF32AgentContent();
 		void ConstructL(const TDesC& aURI, TContentShareMode aShareMode);
 		void ConstructL(RFile& aFile);
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		void ConstructL(const TDesC8& aHeaderData);
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 		
 		CF32AgentUi& AgentUiL();		
 		void SearchL(RStreamablePtrArray<CEmbeddedObject>& aArray, const TDesC8& aMimeType, TBool aRecursive);
@@ -92,6 +99,9 @@
 		RFile iFile;
 #endif //SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
 		CF32AgentUi* iAgentUi;
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		HBufC8* iHeaderData;
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 		};
 } // namespace ContentAccess
 #endif // __F32AgentContent_H__
--- a/contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentdata.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentdata.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -43,6 +43,27 @@
 	return self;
 	}
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
+CF32AgentData* CF32AgentData::NewL(const TDesC8& aHeaderData)
+	{
+	CF32AgentData* self = new (ELeave) CF32AgentData;
+	CleanupStack::PushL(self);
+	self->ConstructL(aHeaderData);
+	CleanupStack::Pop(self);
+	return self;
+	}
+	
+void CF32AgentData::ConstructL(const TDesC8& aHeaderData)
+	{
+	if(aHeaderData.Length() > 0)
+		iHeaderData = aHeaderData.AllocL();
+	else
+		User::Leave(KErrMissingWmdrmHeaderData);
+	}
+	
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 CF32AgentData::CF32AgentData()
 	{
 	}
@@ -57,6 +78,10 @@
 		}
 
 	delete iVirtualPath;
+	
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+	delete iHeaderData;			
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 	}
   
 void CF32AgentData::ConstructL(const TVirtualPathPtr& aVirtualPath, TContentShareMode aShareMode)
@@ -209,6 +234,22 @@
 
 TInt CF32AgentData::GetAttribute(TInt aAttribute, TInt& aValue)
 	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+	if(iHeaderData)
+		{
+		return TF32DefaultAttributes::GetAttribute(*iHeaderData, aAttribute, aValue);
+		}
+		
+	else if(iVirtualPath)
+		{
+		return TF32DefaultAttributes::GetAttribute(aAttribute, aValue, iVirtualPath->URI());
+		}
+		
+	else
+		{
+		return TF32DefaultAttributes::GetAttribute(aAttribute, aValue, iFile);
+		}
+#else
 	if(iVirtualPath)
 		{
 		return TF32DefaultAttributes::GetAttribute(aAttribute, aValue, iVirtualPath->URI());
@@ -217,10 +258,27 @@
 		{
 		return TF32DefaultAttributes::GetAttribute(aAttribute, aValue, iFile);
 		}
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 	}
 
 TInt CF32AgentData::GetAttributeSet(RAttributeSet& aAttributeSet)
 	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+	if(iHeaderData)
+		{
+		return TF32DefaultAttributes::GetAttributeSet(*iHeaderData, aAttributeSet);
+		}
+		
+	else if(iVirtualPath)
+		{
+		return TF32DefaultAttributes::GetAttributeSet(aAttributeSet, iVirtualPath->URI());
+		}
+			
+	else
+		{
+		return TF32DefaultAttributes::GetAttributeSet(aAttributeSet, iFile);
+		}
+#else
 	if(iVirtualPath)
 		{
 		return TF32DefaultAttributes::GetAttributeSet(aAttributeSet, iVirtualPath->URI());
@@ -229,11 +287,26 @@
 		{
 		return TF32DefaultAttributes::GetAttributeSet(aAttributeSet, iFile);
 		}	
-			
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT		
 	}
 
 TInt CF32AgentData::GetStringAttribute(TInt aAttribute, TDes& aValue)
 	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+	if(iHeaderData)
+		{
+		return TF32DefaultAttributes::GetStringAttribute(*iHeaderData, aAttribute, aValue);
+		}
+	
+	else if(iVirtualPath)
+		{
+		return TF32DefaultAttributes::GetStringAttribute(aAttribute, aValue, iVirtualPath->URI());
+		}
+	else
+		{
+		return TF32DefaultAttributes::GetStringAttribute(aAttribute, aValue, iFile);
+		}
+#else
 	if(iVirtualPath)
 		{
 		return TF32DefaultAttributes::GetStringAttribute(aAttribute, aValue, iVirtualPath->URI());
@@ -242,10 +315,26 @@
 		{
 		return TF32DefaultAttributes::GetStringAttribute(aAttribute, aValue, iFile);
 		}
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT	
 	}
 
 TInt CF32AgentData::GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet)
 	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+	if(iHeaderData)
+		{
+		return TF32DefaultAttributes::GetStringAttributeSet(*iHeaderData, aStringAttributeSet);
+		}
+		
+	else if(iVirtualPath)
+		{
+		return TF32DefaultAttributes::GetStringAttributeSet(aStringAttributeSet, iVirtualPath->URI());
+		}
+	else
+		{
+		return TF32DefaultAttributes::GetStringAttributeSet(aStringAttributeSet, iFile);
+		}
+#else
 	if(iVirtualPath)
 		{
 		return TF32DefaultAttributes::GetStringAttributeSet(aStringAttributeSet, iVirtualPath->URI());
@@ -254,6 +343,7 @@
 		{
 		return TF32DefaultAttributes::GetStringAttributeSet(aStringAttributeSet, iFile);
 		}
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 	}
 
 CF32AgentUi& CF32AgentData::AgentUiL()
@@ -266,3 +356,29 @@
 	return *iAgentUi;
 	}
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
+TInt CF32AgentData::Read(const TDesC8& aEncryptedInputDataPacket, TDes8& aDecryptedOutputDataPacket)
+	{
+	if(aEncryptedInputDataPacket.Length() <= 0)
+		{
+		User::Leave(KErrInsufficientDataPacketLength);
+		}
+	
+	aDecryptedOutputDataPacket = aEncryptedInputDataPacket;
+	return KErrNone;
+	}
+			
+void CF32AgentData::Read(const TDesC8& aEncryptedInputDataPacket, TDes8& aDecryptedOutputDataPacket, TRequestStatus& aStatus)
+	{
+	TRequestStatus* status = &aStatus;
+	if(aEncryptedInputDataPacket.Length() <= 0)
+		{
+		User::RequestComplete(status, KErrInsufficientDataPacketLength);		
+		}
+	
+	aDecryptedOutputDataPacket = aEncryptedInputDataPacket;
+	User::RequestComplete(status, KErrNone);
+	}
+
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
--- a/contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentdata.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentdata.h	Mon Oct 12 10:17:04 2009 +0300
@@ -46,6 +46,9 @@
 		static CF32AgentData* NewL(const TVirtualPathPtr& aVirtualPath, TContentShareMode aShareMode);
 		static CF32AgentData* NewL(RFile& aFile, const TDesC& aUniqueId);
 		
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		static CF32AgentData* NewL(const TDesC8& aHeaderData);
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 
 		~CF32AgentData();
 
@@ -75,10 +78,20 @@
 		virtual TInt Read64(TInt64 aPos, TDes8& aDes, TInt aLength, TRequestStatus& aStatus);
 #endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		virtual TInt Read(const TDesC8& aEncryptedInputDataPacket, TDes8& aDecryptedOutputDataPacket);		
+		virtual void Read(const TDesC8& aEncryptedInputDataPacket, TDes8& aDecryptedOutputDataPacket, TRequestStatus& aStatus);
+#endif	//SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 	private:
 		CF32AgentData();
 		void ConstructL(const TVirtualPathPtr& aVirtualPath, TContentShareMode aShareMode);
 		void ConstructL(RFile& aFile, const TDesC& aUniqueId);
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		void ConstructL(const TDesC8& aHeaderData);
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 		CF32AgentUi& AgentUiL();
 		
 	private:
@@ -94,6 +107,10 @@
 
 		CVirtualPath* iVirtualPath;
 		CF32AgentUi* iAgentUi;
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		HBufC8* iHeaderData;
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 		};
 } // namespace ContentAccess
 #endif // __F32AGENTDATA_H__
--- a/contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentfactory.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentfactory.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -80,3 +80,14 @@
 	return NULL;
 	}
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+CAgentData* CF32AgentFactory::CreateDataConsumerL(const TDesC8& aHeaderData)
+	{
+	return CF32AgentData::NewL(aHeaderData);
+	}
+
+CAgentContent* CF32AgentFactory::CreateContentBrowserL(const TDesC8& aHeaderData)
+	{
+	return CF32AgentContent::NewL(aHeaderData);
+	}
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
--- a/contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentfactory.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentfactory.h	Mon Oct 12 10:17:04 2009 +0300
@@ -87,7 +87,12 @@
 
 		@panic CAF EF32AgentRightsManagerNotSupported 
 		*/
-		virtual CAgentRightsManager* CreateRightsManagerL();		
+		virtual CAgentRightsManager* CreateRightsManagerL();
+		
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		virtual CAgentData* CreateDataConsumerL(const TDesC8& aHeaderData);
+		virtual CAgentContent* CreateContentBrowserL(const TDesC8& aHeaderData);
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT		
 		};
 } // namespace ContentAccess
 #endif // __F32AGENTFACTORY_H__
--- a/contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentmanager.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentmanager.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -339,3 +339,39 @@
 	{
 	User::Panic(KCafPanicString, ECafPanicF32AgentPrepareHTTPHeadersNotSupported);
 	}
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
+TBool CF32AgentManager::IsRecognizedL(const TDesC8& /*aHeaderData*/) const
+	{
+	// F32 should be the default agent and should never be called here
+	return EFalse;
+	}
+	
+TBool CF32AgentManager::RecognizeContentL(const TDesC8&, TDes8&, TDes8&) const
+	{
+	// F32 should be the default agent and should never be called here
+	return EFalse;
+	}
+	
+TInt CF32AgentManager::GetAttribute(const TDesC8& aHeaderData, TInt aAttribute, TInt& aValue)
+	{
+	return TF32DefaultAttributes::GetAttribute(aHeaderData, aAttribute, aValue);
+	}
+
+TInt CF32AgentManager::GetAttributeSet(const TDesC8& aHeaderData, RAttributeSet& aAttributeSet)
+	{
+	return TF32DefaultAttributes::GetAttributeSet(aHeaderData, aAttributeSet);
+	}
+
+TInt CF32AgentManager::GetStringAttribute(const TDesC8& aHeaderData, TInt aAttribute, TDes& aValue) 
+	{
+	return TF32DefaultAttributes::GetStringAttribute(aHeaderData, aAttribute, aValue);
+	}
+
+TInt CF32AgentManager::GetStringAttributeSet(const TDesC8& aHeaderData, RStringAttributeSet& aAttributeSet) 
+	{
+	return TF32DefaultAttributes::GetStringAttributeSet(aHeaderData, aAttributeSet);
+	}
+	
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
--- a/contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentmanager.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/source/f32agent/f32agentmanager.h	Mon Oct 12 10:17:04 2009 +0300
@@ -89,6 +89,15 @@
 		virtual void PrepareHTTPRequestHeaders(RStringPool& aStringPool, RHTTPHeaders& aRequestHeaders) const;
 		virtual TInt RenameDir(const TDesC& aOldName, const TDesC& aNewName);
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		virtual TBool IsRecognizedL(const TDesC8& aHeaderData) const;
+		virtual TBool RecognizeContentL(const TDesC8& aHeaderData, TDes8& aFileMimeType, TDes8& aContentMimeType) const;
+		virtual TInt GetAttribute(const TDesC8& aHeaderData, TInt aAttribute, TInt& aValue);
+		virtual TInt GetAttributeSet(const TDesC8& aHeaderData, RAttributeSet& aAttributeSet);
+		virtual TInt GetStringAttributeSet(const TDesC8& aHeaderData, RStringAttributeSet& aAttributeSet);
+		virtual TInt GetStringAttribute(const TDesC8& aHeaderData, TInt aAttribute, TDes& aValue);
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 	protected:
 		CF32AgentManager();
 
--- a/contentmgmt/contentaccessfwfordrm/source/f32agent/f32defaultattributes.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/source/f32agent/f32defaultattributes.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -285,3 +285,74 @@
 		
 	return fileMode;
 	}
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+	
+TInt TF32DefaultAttributes::GetAttribute(const TDesC8& /*aHeaderData*/, TInt aAttribute, TInt& aValue)
+	{
+	return GetAttribute(aAttribute, aValue, KNullDesC);
+	}
+	
+TInt TF32DefaultAttributes::GetAttributeSet(const TDesC8& aHeaderData, RAttributeSet& aAttributeSet)
+	{
+	TInt i = 0;
+	TInt attribute = 0;
+	TInt value = 0;
+	TInt err = KErrNone;
+	TInt numAttributes = aAttributeSet.Count();
+	
+	// loop through all the attriutes in the set and find their values
+	for(i = 0; i < numAttributes; i++)
+		{
+		attribute = aAttributeSet[i];
+		err = GetAttribute(aHeaderData, attribute, value);
+		aAttributeSet.SetValue(attribute, value, err);
+		}	
+	return KErrNone;
+	}
+	
+TInt TF32DefaultAttributes::GetStringAttribute(const TDesC8& /*aHeaderData*/, TInt aAttribute, TDes& aValue)
+	{
+	TInt err = KErrNone;
+	TBuf8 <KMaxDataTypeLength> mimeType;
+
+	switch(aAttribute)
+		{
+		case EMimeType:
+			aValue.Copy(KNullDesC());
+			break;
+		case EContentID:
+			aValue.Copy(KDefaultContentObject());
+			break;
+		default:
+			err = KErrCANotSupported;
+			break;
+		};
+	return err;
+	}
+	
+TInt TF32DefaultAttributes::GetStringAttributeSet(const TDesC8& aHeaderData, RStringAttributeSet& aStringAttributeSet)
+	{
+	TInt i = 0;
+	TInt attribute = 0;
+	TInt err = KErrNone;
+	TBuf <KMaxDataTypeLength> buf;
+
+	TInt numAttributes = aStringAttributeSet.Count();
+
+	// loop through all the attriutes in the set and find their values
+	for(i = 0; i < numAttributes; i++)
+		{
+		buf.SetLength(0);
+		attribute = aStringAttributeSet[i];
+		err = GetStringAttribute(aHeaderData, attribute, buf);
+		err = aStringAttributeSet.SetValue(attribute, buf, err);
+		if(err != KErrNone)
+			{
+			return err;
+			}
+		}	
+	return KErrNone;
+	}
+
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
--- a/contentmgmt/contentaccessfwfordrm/source/f32agent/f32defaultattributes.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/contentaccessfwfordrm/source/f32agent/f32defaultattributes.h	Mon Oct 12 10:17:04 2009 +0300
@@ -55,6 +55,13 @@
 		static TInt GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet, RFile& aFile);
 		static void GetMimeTypeL(RFile& aFile, TDes8& aMimeType);
 		
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT		
+		static TInt GetAttribute(const TDesC8& aHeaderData, TInt aAttribute, TInt& aValue);
+		static TInt GetAttributeSet(const TDesC8& aHeaderData, RAttributeSet& aAttributeSet);
+		static TInt GetStringAttribute(const TDesC8& aHeaderData, TInt aAttribute, TDes& aValue);
+		static TInt GetStringAttributeSet(const TDesC8& aHeaderData, RStringAttributeSet& aStringAttributeSet);
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 		static TInt CheckUniqueId(const TDesC& aUniqueId);
 		static TInt CheckVirtualPath(const TVirtualPathPtr& aVirtualPath);	
 		static TUint GetFileMode(TContentShareMode aMode);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/RefTestAgent/BWINS/rtaclient_v3u.def	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,86 @@
+EXPORTS
+	??0RRtaData@ReferenceTestAgent@@QAE@XZ @ 1 NONAME ; ReferenceTestAgent::RRtaData::RRtaData(void)
+	??0RRtaRights@ReferenceTestAgent@@QAE@XZ @ 2 NONAME ; ReferenceTestAgent::RRtaRights::RRtaRights(void)
+	?AddRightsL@RRtaRights@ReferenceTestAgent@@QAEXAAVCRightsObject@2@@Z @ 3 NONAME ; void ReferenceTestAgent::RRtaRights::AddRightsL(class ReferenceTestAgent::CRightsObject &)
+	?ClearAllRightsL@RRtaRights@ReferenceTestAgent@@QAEXXZ @ 4 NONAME ; void ReferenceTestAgent::RRtaRights::ClearAllRightsL(void)
+	?Connect@RRtaRights@ReferenceTestAgent@@QAEHXZ @ 5 NONAME ; int ReferenceTestAgent::RRtaRights::Connect(void)
+	?DataSize@RRtaData@ReferenceTestAgent@@QAEHAA_J@Z @ 6 NONAME ; int ReferenceTestAgent::RRtaData::DataSize(long long &)
+	?DumpRightsDatabaseL@RRtaRights@ReferenceTestAgent@@QAEXABVTDesC16@@@Z @ 7 NONAME ; void ReferenceTestAgent::RRtaRights::DumpRightsDatabaseL(class TDesC16 const &)
+	?EvaluateIntentL@RRtaData@ReferenceTestAgent@@QAEXW4TIntent@ContentAccess@@@Z @ 8 NONAME ; void ReferenceTestAgent::RRtaData::EvaluateIntentL(enum ContentAccess::TIntent)
+	?ExecuteIntentL@RRtaData@ReferenceTestAgent@@QAEXW4TIntent@ContentAccess@@@Z @ 9 NONAME ; void ReferenceTestAgent::RRtaData::ExecuteIntentL(enum ContentAccess::TIntent)
+	?GetAttribute@RRtaData@ReferenceTestAgent@@QBEHHAAH@Z @ 10 NONAME ; int ReferenceTestAgent::RRtaData::GetAttribute(int, int &) const
+	?GetAttributeSet@RRtaData@ReferenceTestAgent@@QBEHAAVRAttributeSet@ContentAccess@@@Z @ 11 NONAME ; int ReferenceTestAgent::RRtaData::GetAttributeSet(class ContentAccess::RAttributeSet &) const
+	?GetStringAttribute@RRtaData@ReferenceTestAgent@@QBEHHAAVTDes16@@@Z @ 12 NONAME ; int ReferenceTestAgent::RRtaData::GetStringAttribute(int, class TDes16 &) const
+	?GetStringAttributeSet@RRtaData@ReferenceTestAgent@@QBEHAAVRStringAttributeSet@ContentAccess@@@Z @ 13 NONAME ; int ReferenceTestAgent::RRtaData::GetStringAttributeSet(class ContentAccess::RStringAttributeSet &) const
+	?Open@RRtaData@ReferenceTestAgent@@QAEHAAVRFile@@ABVTDesC16@@@Z @ 14 NONAME ; int ReferenceTestAgent::RRtaData::Open(class RFile &, class TDesC16 const &)
+	?Open@RRtaData@ReferenceTestAgent@@QAEHABVTDesC16@@0I@Z @ 15 NONAME ; int ReferenceTestAgent::RRtaData::Open(class TDesC16 const &, class TDesC16 const &, unsigned int)
+	?Read@RRtaData@ReferenceTestAgent@@QAEHAAVTDes8@@H@Z @ 16 NONAME ; int ReferenceTestAgent::RRtaData::Read(class TDes8 &, int)
+	?Seek@RRtaData@ReferenceTestAgent@@QBEHW4TSeek@@AA_J@Z @ 17 NONAME ; int ReferenceTestAgent::RRtaData::Seek(enum TSeek, long long &) const
+	??0RRtaManager@ReferenceTestAgent@@QAE@XZ @ 18 NONAME ; ReferenceTestAgent::RRtaManager::RRtaManager(void)
+	?Connect@RRtaManager@ReferenceTestAgent@@QAEHXZ @ 19 NONAME ; int ReferenceTestAgent::RRtaManager::Connect(void)
+	?CopyFile@RRtaManager@ReferenceTestAgent@@QBEHABVTDesC16@@0@Z @ 20 NONAME ; int ReferenceTestAgent::RRtaManager::CopyFile(class TDesC16 const &, class TDesC16 const &) const
+	?DeleteFile@RRtaManager@ReferenceTestAgent@@QBEHABVTDesC16@@@Z @ 21 NONAME ; int ReferenceTestAgent::RRtaManager::DeleteFile(class TDesC16 const &) const
+	?GetDir@RRtaManager@ReferenceTestAgent@@QBEHABVTDesC16@@IIAAPAVCDir@@1@Z @ 22 NONAME ; int ReferenceTestAgent::RRtaManager::GetDir(class TDesC16 const &, unsigned int, unsigned int, class CDir * &, class CDir * &) const
+	?GetDir@RRtaManager@ReferenceTestAgent@@QBEHABVTDesC16@@IIAAPAVCDir@@@Z @ 23 NONAME ; int ReferenceTestAgent::RRtaManager::GetDir(class TDesC16 const &, unsigned int, unsigned int, class CDir * &) const
+	?GetDir@RRtaManager@ReferenceTestAgent@@QBEHABVTDesC16@@VTUidType@@IAAPAVCDir@@@Z @ 24 NONAME ; int ReferenceTestAgent::RRtaManager::GetDir(class TDesC16 const &, class TUidType, unsigned int, class CDir * &) const
+	?MkDir@RRtaManager@ReferenceTestAgent@@QBEHABVTDesC16@@@Z @ 25 NONAME ; int ReferenceTestAgent::RRtaManager::MkDir(class TDesC16 const &) const
+	?MkDirAll@RRtaManager@ReferenceTestAgent@@QBEHABVTDesC16@@@Z @ 26 NONAME ; int ReferenceTestAgent::RRtaManager::MkDirAll(class TDesC16 const &) const
+	?RenameFile@RRtaManager@ReferenceTestAgent@@QBEHABVTDesC16@@0@Z @ 27 NONAME ; int ReferenceTestAgent::RRtaManager::RenameFile(class TDesC16 const &, class TDesC16 const &) const
+	?RmDir@RRtaManager@ReferenceTestAgent@@QBEHABVTDesC16@@@Z @ 28 NONAME ; int ReferenceTestAgent::RRtaManager::RmDir(class TDesC16 const &) const
+	?RenameDir@RRtaManager@ReferenceTestAgent@@QBEHABVTDesC16@@0@Z @ 29 NONAME ; int ReferenceTestAgent::RRtaManager::RenameDir(class TDesC16 const &, class TDesC16 const &) const
+	?GetAttribute@RRtaManager@ReferenceTestAgent@@QBEHABVTVirtualPathPtr@ContentAccess@@HAAH@Z @ 30 NONAME ; int ReferenceTestAgent::RRtaManager::GetAttribute(class ContentAccess::TVirtualPathPtr const &, int, int &) const
+	?GetAttributeSet@RRtaManager@ReferenceTestAgent@@QBEHABVTVirtualPathPtr@ContentAccess@@AAVRAttributeSet@4@@Z @ 31 NONAME ; int ReferenceTestAgent::RRtaManager::GetAttributeSet(class ContentAccess::TVirtualPathPtr const &, class ContentAccess::RAttributeSet &) const
+	?GetStringAttribute@RRtaManager@ReferenceTestAgent@@QBEHABVTVirtualPathPtr@ContentAccess@@HAAVTDes16@@@Z @ 32 NONAME ; int ReferenceTestAgent::RRtaManager::GetStringAttribute(class ContentAccess::TVirtualPathPtr const &, int, class TDes16 &) const
+	?GetStringAttributeSet@RRtaManager@ReferenceTestAgent@@QBEHABVTVirtualPathPtr@ContentAccess@@AAVRStringAttributeSet@4@@Z @ 33 NONAME ; int ReferenceTestAgent::RRtaManager::GetStringAttributeSet(class ContentAccess::TVirtualPathPtr const &, class ContentAccess::RStringAttributeSet &) const
+	??0RRtaContent@ReferenceTestAgent@@QAE@XZ @ 34 NONAME ; ReferenceTestAgent::RRtaContent::RRtaContent(void)
+	?CloseContainer@RRtaContent@ReferenceTestAgent@@QBEHXZ @ 35 NONAME ; int ReferenceTestAgent::RRtaContent::CloseContainer(void) const
+	?GetAttribute@RRtaContent@ReferenceTestAgent@@QBEHABVTDesC16@@HAAH@Z @ 36 NONAME ; int ReferenceTestAgent::RRtaContent::GetAttribute(class TDesC16 const &, int, int &) const
+	?GetAttributeSet@RRtaContent@ReferenceTestAgent@@QBEHABVTDesC16@@AAVRAttributeSet@ContentAccess@@@Z @ 37 NONAME ; int ReferenceTestAgent::RRtaContent::GetAttributeSet(class TDesC16 const &, class ContentAccess::RAttributeSet &) const
+	?GetEmbeddedObjectsL@RRtaContent@ReferenceTestAgent@@QBEXAAV?$RStreamablePtrArray@VCEmbeddedObject@ContentAccess@@@ContentAccess@@@Z @ 38 NONAME ; void ReferenceTestAgent::RRtaContent::GetEmbeddedObjectsL(class ContentAccess::RStreamablePtrArray<class ContentAccess::CEmbeddedObject> &) const
+	?GetEmbeddedObjectsL@RRtaContent@ReferenceTestAgent@@QBEXAAV?$RStreamablePtrArray@VCEmbeddedObject@ContentAccess@@@ContentAccess@@W4TEmbeddedType@4@@Z @ 39 NONAME ; void ReferenceTestAgent::RRtaContent::GetEmbeddedObjectsL(class ContentAccess::RStreamablePtrArray<class ContentAccess::CEmbeddedObject> &, enum ContentAccess::TEmbeddedType) const
+	?GetStringAttribute@RRtaContent@ReferenceTestAgent@@QBEHABVTDesC16@@HAAVTDes16@@@Z @ 40 NONAME ; int ReferenceTestAgent::RRtaContent::GetStringAttribute(class TDesC16 const &, int, class TDes16 &) const
+	?GetStringAttributeSet@RRtaContent@ReferenceTestAgent@@QBEHABVTDesC16@@AAVRStringAttributeSet@ContentAccess@@@Z @ 41 NONAME ; int ReferenceTestAgent::RRtaContent::GetStringAttributeSet(class TDesC16 const &, class ContentAccess::RStringAttributeSet &) const
+	?Open@RRtaContent@ReferenceTestAgent@@QAEHAAVRFile@@@Z @ 42 NONAME ; int ReferenceTestAgent::RRtaContent::Open(class RFile &)
+	?Open@RRtaContent@ReferenceTestAgent@@QAEHABVTDesC16@@I@Z @ 43 NONAME ; int ReferenceTestAgent::RRtaContent::Open(class TDesC16 const &, unsigned int)
+	?OpenContainer@RRtaContent@ReferenceTestAgent@@QBEHABVTDesC16@@@Z @ 44 NONAME ; int ReferenceTestAgent::RRtaContent::OpenContainer(class TDesC16 const &) const
+	?Search@RRtaContent@ReferenceTestAgent@@QBEHAAV?$RStreamablePtrArray@VCEmbeddedObject@ContentAccess@@@ContentAccess@@ABVTDesC8@@H@Z @ 45 NONAME ; int ReferenceTestAgent::RRtaContent::Search(class ContentAccess::RStreamablePtrArray<class ContentAccess::CEmbeddedObject> &, class TDesC8 const &, int) const
+	?CopyFile@RRtaManager@ReferenceTestAgent@@QBEHAAVRFile@@ABVTDesC16@@@Z @ 46 NONAME ; int ReferenceTestAgent::RRtaManager::CopyFile(class RFile &, class TDesC16 const &) const
+	?DeleteRightsByKeyL@RRtaRights@ReferenceTestAgent@@QAEXABVTDesC8@@@Z @ 47 NONAME ; void ReferenceTestAgent::RRtaRights::DeleteRightsByKeyL(class TDesC8 const &)
+	?EraseDeleteKeyL@RRtaRights@ReferenceTestAgent@@QAEXABVTDesC8@@@Z @ 48 NONAME ; void ReferenceTestAgent::RRtaRights::EraseDeleteKeyL(class TDesC8 const &)
+	?Read@RRtaData@ReferenceTestAgent@@QAEH_JAAVTDes8@@H@Z @ 49 NONAME ; int ReferenceTestAgent::RRtaData::Read(long long, class TDes8 &, int)
+	?ReloadRightsDatabaseL@RRtaRights@ReferenceTestAgent@@QAEXABVTDesC16@@@Z @ 50 NONAME ; void ReferenceTestAgent::RRtaRights::ReloadRightsDatabaseL(class TDesC16 const &)
+	?GetAttribute@RRtaManager@ReferenceTestAgent@@QBEHHAAHAAVRFile@@ABVTDesC16@@@Z @ 51 NONAME ; int ReferenceTestAgent::RRtaManager::GetAttribute(int, int &, class RFile &, class TDesC16 const &) const
+	?GetAttributeSet@RRtaManager@ReferenceTestAgent@@QBEHAAVRAttributeSet@ContentAccess@@AAVRFile@@ABVTDesC16@@@Z @ 52 NONAME ; int ReferenceTestAgent::RRtaManager::GetAttributeSet(class ContentAccess::RAttributeSet &, class RFile &, class TDesC16 const &) const
+	?GetStringAttribute@RRtaManager@ReferenceTestAgent@@QBEHHAAVTDes16@@AAVRFile@@ABVTDesC16@@@Z @ 53 NONAME ; int ReferenceTestAgent::RRtaManager::GetStringAttribute(int, class TDes16 &, class RFile &, class TDesC16 const &) const
+	?GetStringAttributeSet@RRtaManager@ReferenceTestAgent@@QBEHAAVRStringAttributeSet@ContentAccess@@AAVRFile@@ABVTDesC16@@@Z @ 54 NONAME ; int ReferenceTestAgent::RRtaManager::GetStringAttributeSet(class ContentAccess::RStringAttributeSet &, class RFile &, class TDesC16 const &) const
+	?CancelNotifyStatusChange@RRtaContent@ReferenceTestAgent@@QBEHABVTDesC16@@@Z @ 55 NONAME ; int ReferenceTestAgent::RRtaContent::CancelNotifyStatusChange(class TDesC16 const &) const
+	?DisplayInfoL@RRtaManager@ReferenceTestAgent@@QBEXW4TDisplayInfo@ContentAccess@@ABVTVirtualPathPtr@4@@Z @ 56 NONAME ; void ReferenceTestAgent::RRtaManager::DisplayInfoL(enum ContentAccess::TDisplayInfo, class ContentAccess::TVirtualPathPtr const &) const
+	?AgentSpecificCommand@RRtaManager@ReferenceTestAgent@@QBEHHABVTDesC8@@AAVTDes8@@@Z @ 57 NONAME ; int ReferenceTestAgent::RRtaManager::AgentSpecificCommand(int, class TDesC8 const &, class TDes8 &) const
+	?CancelNotifyStatusChange@RRtaManager@ReferenceTestAgent@@QBEHABVTDesC16@@@Z @ 58 NONAME ; int ReferenceTestAgent::RRtaManager::CancelNotifyStatusChange(class TDesC16 const &) const
+	?CancelRequestRights@RRtaContent@ReferenceTestAgent@@QBEHABVTDesC16@@@Z @ 59 NONAME ; int ReferenceTestAgent::RRtaContent::CancelRequestRights(class TDesC16 const &) const
+	?DisplayInfoL@RRtaContent@ReferenceTestAgent@@QBEXW4TDisplayInfo@ContentAccess@@ABVTDesC16@@@Z @ 60 NONAME ; void ReferenceTestAgent::RRtaContent::DisplayInfoL(enum ContentAccess::TDisplayInfo, class TDesC16 const &) const
+	?NotifyStatusChangeL@RRtaManager@ReferenceTestAgent@@QBEXABVTDesC16@@W4TEventMask@ContentAccess@@@Z @ 61 NONAME ; void ReferenceTestAgent::RRtaManager::NotifyStatusChangeL(class TDesC16 const &, enum ContentAccess::TEventMask) const
+	?DisplayManagementInfoL@RRtaManager@ReferenceTestAgent@@QBEXXZ @ 62 NONAME ; void ReferenceTestAgent::RRtaManager::DisplayManagementInfoL(void) const
+	?AgentSpecificCommand@RRtaContent@ReferenceTestAgent@@QBEHHABVTDesC8@@AAVTDes8@@@Z @ 63 NONAME ; int ReferenceTestAgent::RRtaContent::AgentSpecificCommand(int, class TDesC8 const &, class TDes8 &) const
+	?SetProperty@RRtaData@ReferenceTestAgent@@QBEHW4TAgentProperty@ContentAccess@@H@Z @ 64 NONAME ; int ReferenceTestAgent::RRtaData::SetProperty(enum ContentAccess::TAgentProperty, int) const
+	?SetProperty@RRtaManager@ReferenceTestAgent@@QBEHW4TAgentProperty@ContentAccess@@H@Z @ 65 NONAME ; int ReferenceTestAgent::RRtaManager::SetProperty(enum ContentAccess::TAgentProperty, int) const
+	?DisplayInfoL@RRtaManager@ReferenceTestAgent@@QBEXW4TDisplayInfo@ContentAccess@@AAVRFile@@ABVTDesC16@@@Z @ 66 NONAME ; void ReferenceTestAgent::RRtaManager::DisplayInfoL(enum ContentAccess::TDisplayInfo, class RFile &, class TDesC16 const &) const
+	?SetProperty@RRtaContent@ReferenceTestAgent@@QBEHW4TAgentProperty@ContentAccess@@H@Z @ 67 NONAME ; int ReferenceTestAgent::RRtaContent::SetProperty(enum ContentAccess::TAgentProperty, int) const
+	?RequestRightsL@RRtaContent@ReferenceTestAgent@@QBEXABVTDesC16@@@Z @ 68 NONAME ; void ReferenceTestAgent::RRtaContent::RequestRightsL(class TDesC16 const &) const
+	?NotifyStatusChangeL@RRtaContent@ReferenceTestAgent@@QBEXW4TEventMask@ContentAccess@@ABVTDesC16@@@Z @ 69 NONAME ; void ReferenceTestAgent::RRtaContent::NotifyStatusChangeL(enum ContentAccess::TEventMask, class TDesC16 const &) const
+	?GetWmdrmAttribute@RRtaContent@ReferenceTestAgent@@QBEHABVTDesC16@@HAAH@Z @ 70 NONAME ; int ReferenceTestAgent::RRtaContent::GetWmdrmAttribute(class TDesC16 const &, int, int &) const
+	?GetWmdrmStringAttribute@RRtaContent@ReferenceTestAgent@@QBEHABVTDesC16@@HAAVTDes16@@@Z @ 71 NONAME ; int ReferenceTestAgent::RRtaContent::GetWmdrmStringAttribute(class TDesC16 const &, int, class TDes16 &) const
+	?GetStringAttribute@RRtaManager@ReferenceTestAgent@@QBEHABVTDesC8@@HAAVTDes16@@@Z @ 72 NONAME ; int ReferenceTestAgent::RRtaManager::GetStringAttribute(class TDesC8 const &, int, class TDes16 &) const
+	?GetWmdrmAttributeSet@RRtaData@ReferenceTestAgent@@QBEHAAVRAttributeSet@ContentAccess@@@Z @ 73 NONAME ; int ReferenceTestAgent::RRtaData::GetWmdrmAttributeSet(class ContentAccess::RAttributeSet &) const
+	?GetWmdrmStringAttribute@RRtaData@ReferenceTestAgent@@QBEHHAAVTDes16@@@Z @ 74 NONAME ; int ReferenceTestAgent::RRtaData::GetWmdrmStringAttribute(int, class TDes16 &) const
+	?GetWmdrmAttributeSet@RRtaContent@ReferenceTestAgent@@QBEHABVTDesC16@@AAVRAttributeSet@ContentAccess@@@Z @ 75 NONAME ; int ReferenceTestAgent::RRtaContent::GetWmdrmAttributeSet(class TDesC16 const &, class ContentAccess::RAttributeSet &) const
+	?GetWmdrmAttribute@RRtaData@ReferenceTestAgent@@QBEHHAAH@Z @ 76 NONAME ; int ReferenceTestAgent::RRtaData::GetWmdrmAttribute(int, int &) const
+	?Open@RRtaData@ReferenceTestAgent@@QAEHABVTDesC8@@@Z @ 77 NONAME ; int ReferenceTestAgent::RRtaData::Open(class TDesC8 const &)
+	?Open@RRtaContent@ReferenceTestAgent@@QAEHABVTDesC8@@@Z @ 78 NONAME ; int ReferenceTestAgent::RRtaContent::Open(class TDesC8 const &)
+	?Read@RRtaData@ReferenceTestAgent@@QAEHABVTDesC8@@AAVTDes8@@@Z @ 79 NONAME ; int ReferenceTestAgent::RRtaData::Read(class TDesC8 const &, class TDes8 &)
+	?GetAttribute@RRtaManager@ReferenceTestAgent@@QBEHABVTDesC8@@HAAH@Z @ 80 NONAME ; int ReferenceTestAgent::RRtaManager::GetAttribute(class TDesC8 const &, int, int &) const
+	?GetStringAttributeSet@RRtaManager@ReferenceTestAgent@@QBEHABVTDesC8@@AAVRStringAttributeSet@ContentAccess@@@Z @ 81 NONAME ; int ReferenceTestAgent::RRtaManager::GetStringAttributeSet(class TDesC8 const &, class ContentAccess::RStringAttributeSet &) const
+	?GetWmdrmStringAttributeSet@RRtaContent@ReferenceTestAgent@@QBEHABVTDesC16@@AAVRStringAttributeSet@ContentAccess@@@Z @ 82 NONAME ; int ReferenceTestAgent::RRtaContent::GetWmdrmStringAttributeSet(class TDesC16 const &, class ContentAccess::RStringAttributeSet &) const
+	?GetAttributeSet@RRtaManager@ReferenceTestAgent@@QBEHABVTDesC8@@AAVRAttributeSet@ContentAccess@@@Z @ 83 NONAME ; int ReferenceTestAgent::RRtaManager::GetAttributeSet(class TDesC8 const &, class ContentAccess::RAttributeSet &) const
+	?GetWmdrmStringAttributeSet@RRtaData@ReferenceTestAgent@@QBEHAAVRStringAttributeSet@ContentAccess@@@Z @ 84 NONAME ; int ReferenceTestAgent::RRtaData::GetWmdrmStringAttributeSet(class ContentAccess::RStringAttributeSet &) const
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/RefTestAgent/BWINS/rtaparser_v3u.def	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,47 @@
+EXPORTS
+	?Cid@CDrmFileContent@ReferenceTestAgent@@QAEABVTDesC8@@XZ @ 1 NONAME ; class TDesC8 const & ReferenceTestAgent::CDrmFileContent::Cid(void)
+	?Cid@CRightsObject@ReferenceTestAgent@@QAEABVTDesC8@@XZ @ 2 NONAME ; class TDesC8 const & ReferenceTestAgent::CRightsObject::Cid(void)
+	?CloseContainer@CDrmFiles@ReferenceTestAgent@@QAEHXZ @ 3 NONAME ; int ReferenceTestAgent::CDrmFiles::CloseContainer(void)
+	?CurrentContainer@CDrmFiles@ReferenceTestAgent@@QAEAAVCDrmFileContainer@2@XZ @ 4 NONAME ; class ReferenceTestAgent::CDrmFileContainer & ReferenceTestAgent::CDrmFiles::CurrentContainer(void)
+	?DrmFilesL@CDrmFilesParser@ReferenceTestAgent@@QAEAAVCDrmFiles@2@XZ @ 5 NONAME ; class ReferenceTestAgent::CDrmFiles & ReferenceTestAgent::CDrmFilesParser::DrmFilesL(void)
+	?DrmRightsL@CDrmRightsParser@ReferenceTestAgent@@QAEAAVCDrmRights@2@XZ @ 6 NONAME ; class ReferenceTestAgent::CDrmRights & ReferenceTestAgent::CDrmRightsParser::DrmRightsL(void)
+	?EvaluateIntent@CRightsObject@ReferenceTestAgent@@QAEHW4TIntent@ContentAccess@@@Z @ 7 NONAME ; int ReferenceTestAgent::CRightsObject::EvaluateIntent(enum ContentAccess::TIntent)
+	?ExecuteIntentL@CRightsObject@ReferenceTestAgent@@QAEXW4TIntent@ContentAccess@@@Z @ 8 NONAME ; void ReferenceTestAgent::CRightsObject::ExecuteIntentL(enum ContentAccess::TIntent)
+	?ExternalizeL@CRightsObject@ReferenceTestAgent@@QAEXAAVRWriteStream@@@Z @ 9 NONAME ; void ReferenceTestAgent::CRightsObject::ExternalizeL(class RWriteStream &)
+	?FindL@CDrmFiles@ReferenceTestAgent@@QAEAAVCDrmFileContent@2@ABVTDesC16@@@Z @ 10 NONAME ; class ReferenceTestAgent::CDrmFileContent & ReferenceTestAgent::CDrmFiles::FindL(class TDesC16 const &)
+	?GetAttribute@CDrmFileContent@ReferenceTestAgent@@QAEHHAAH@Z @ 11 NONAME ; int ReferenceTestAgent::CDrmFileContent::GetAttribute(int, int &)
+	?GetAttributeSet@CDrmFileContent@ReferenceTestAgent@@QAEHAAVRAttributeSet@ContentAccess@@@Z @ 12 NONAME ; int ReferenceTestAgent::CDrmFileContent::GetAttributeSet(class ContentAccess::RAttributeSet &)
+	?GetEmbeddedObjectsL@CDrmFileContainer@ReferenceTestAgent@@QAEXAAV?$RStreamablePtrArray@VCEmbeddedObject@ContentAccess@@@ContentAccess@@@Z @ 13 NONAME ; void ReferenceTestAgent::CDrmFileContainer::GetEmbeddedObjectsL(class ContentAccess::RStreamablePtrArray<class ContentAccess::CEmbeddedObject> &)
+	?GetEmbeddedObjectsL@CDrmFileContainer@ReferenceTestAgent@@QAEXAAV?$RStreamablePtrArray@VCEmbeddedObject@ContentAccess@@@ContentAccess@@W4TEmbeddedType@4@@Z @ 14 NONAME ; void ReferenceTestAgent::CDrmFileContainer::GetEmbeddedObjectsL(class ContentAccess::RStreamablePtrArray<class ContentAccess::CEmbeddedObject> &, enum ContentAccess::TEmbeddedType)
+	?GetStringAttribute@CDrmFileContent@ReferenceTestAgent@@QAEHHAAVTDes16@@@Z @ 15 NONAME ; int ReferenceTestAgent::CDrmFileContent::GetStringAttribute(int, class TDes16 &)
+	?GetStringAttributeSet@CDrmFileContent@ReferenceTestAgent@@QAEHAAVRStringAttributeSet@ContentAccess@@@Z @ 16 NONAME ; int ReferenceTestAgent::CDrmFileContent::GetStringAttributeSet(class ContentAccess::RStringAttributeSet &)
+	?MergeL@CRightsObject@ReferenceTestAgent@@QAEXAAV12@@Z @ 17 NONAME ; void ReferenceTestAgent::CRightsObject::MergeL(class ReferenceTestAgent::CRightsObject &)
+	?NewL@CDrmFilesParser@ReferenceTestAgent@@SAPAV12@AAVCVirtualFile@2@@Z @ 18 NONAME ; class ReferenceTestAgent::CDrmFilesParser * ReferenceTestAgent::CDrmFilesParser::NewL(class ReferenceTestAgent::CVirtualFile &)
+	?NewL@CDrmRightsParser@ReferenceTestAgent@@SAPAV12@AAVCVirtualFile@2@@Z @ 19 NONAME ; class ReferenceTestAgent::CDrmRightsParser * ReferenceTestAgent::CDrmRightsParser::NewL(class ReferenceTestAgent::CVirtualFile &)
+	?NewL@CDrmRightsParser@ReferenceTestAgent@@SAPAV12@XZ @ 20 NONAME ; class ReferenceTestAgent::CDrmRightsParser * ReferenceTestAgent::CDrmRightsParser::NewL(void)
+	?NewL@CRightsObject@ReferenceTestAgent@@SAPAV12@AAVRReadStream@@H@Z @ 21 NONAME ; class ReferenceTestAgent::CRightsObject * ReferenceTestAgent::CRightsObject::NewL(class RReadStream &, int)
+	?OpenContainer@CDrmFiles@ReferenceTestAgent@@QAEHABVTDesC16@@@Z @ 22 NONAME ; int ReferenceTestAgent::CDrmFiles::OpenContainer(class TDesC16 const &)
+	?ParseL@CDrmRightsParser@ReferenceTestAgent@@QAEXABVTDesC8@@@Z @ 23 NONAME ; void ReferenceTestAgent::CDrmRightsParser::ParseL(class TDesC8 const &)
+	?Read@CDrmFileContent@ReferenceTestAgent@@QAEHAAVTDes8@@H@Z @ 24 NONAME ; int ReferenceTestAgent::CDrmFileContent::Read(class TDes8 &, int)
+	?Search@CDrmFileContainer@ReferenceTestAgent@@QAEHAAV?$RStreamablePtrArray@VCEmbeddedObject@ContentAccess@@@ContentAccess@@ABVTDesC8@@H@Z @ 25 NONAME ; int ReferenceTestAgent::CDrmFileContainer::Search(class ContentAccess::RStreamablePtrArray<class ContentAccess::CEmbeddedObject> &, class TDesC8 const &, int)
+	?Seek@CDrmFileContent@ReferenceTestAgent@@QAEHW4TSeek@@AA_J@Z @ 26 NONAME ; int ReferenceTestAgent::CDrmFileContent::Seek(enum TSeek, long long &)
+	?Size@CDrmFileContent@ReferenceTestAgent@@QAEHAA_J@Z @ 27 NONAME ; int ReferenceTestAgent::CDrmFileContent::Size(long long &)
+	?WriteDescription@CRightsObject@ReferenceTestAgent@@QAEXAAVRFile@@@Z @ 28 NONAME ; void ReferenceTestAgent::CRightsObject::WriteDescription(class RFile &)
+	?Content@CDrmFiles@ReferenceTestAgent@@QAEAAVCDrmFileContent@2@H@Z @ 29 NONAME ; class ReferenceTestAgent::CDrmFileContent & ReferenceTestAgent::CDrmFiles::Content(int)
+	?ContentCount@CDrmFiles@ReferenceTestAgent@@QAEHXZ @ 30 NONAME ; int ReferenceTestAgent::CDrmFiles::ContentCount(void)
+	?FindL@CDrmFiles@ReferenceTestAgent@@QAEAAVCDrmFileContent@2@ABVTDesC8@@@Z @ 31 NONAME ; class ReferenceTestAgent::CDrmFileContent & ReferenceTestAgent::CDrmFiles::FindL(class TDesC8 const &)
+	?Remove@CDrmRights@ReferenceTestAgent@@QAEXH@Z @ 32 NONAME ; void ReferenceTestAgent::CDrmRights::Remove(int)
+	?Rights@CDrmRights@ReferenceTestAgent@@QAEAAVCRightsObject@2@H@Z @ 33 NONAME ; class ReferenceTestAgent::CRightsObject & ReferenceTestAgent::CDrmRights::Rights(int)
+	?RightsCount@CDrmRights@ReferenceTestAgent@@QAEHXZ @ 34 NONAME ; int ReferenceTestAgent::CDrmRights::RightsCount(void)
+	?SetCommonSourceFileL@CDrmFileContent@ReferenceTestAgent@@QAEXAAVRFile64@@AAVRSemaphore@@_J2@Z @ 35 NONAME ; void ReferenceTestAgent::CDrmFileContent::SetCommonSourceFileL(class RFile64 &, class RSemaphore &, long long, long long)
+	?MimeType@CDrmFileContent@ReferenceTestAgent@@QAEABVTDesC8@@XZ @ 36 NONAME ; class TDesC8 const & ReferenceTestAgent::CDrmFileContent::MimeType(void)
+	?SetEntireFileL@CDrmFiles@ReferenceTestAgent@@QAEXAAVRFile64@@AAVRSemaphore@@_J2@Z @ 37 NONAME ; void ReferenceTestAgent::CDrmFiles::SetEntireFileL(class RFile64 &, class RSemaphore &, long long, long long)
+	?SetDeleteKeyL@CRightsObject@ReferenceTestAgent@@QAEXABVTDesC8@@@Z @ 38 NONAME ; void ReferenceTestAgent::CRightsObject::SetDeleteKeyL(class TDesC8 const &)
+	?DeleteKey@CRightsObject@ReferenceTestAgent@@QAEABVTDesC8@@XZ @ 39 NONAME ; class TDesC8 const & ReferenceTestAgent::CRightsObject::DeleteKey(void)
+	?Read@CDrmFileContent@ReferenceTestAgent@@QAEH_JAAVTDes8@@H@Z @ 40 NONAME ; int ReferenceTestAgent::CDrmFileContent::Read(long long, class TDes8 &, int)
+	?GetStringAttribute@CWmdrmContentParser@ReferenceTestAgent@@QBEHHAAVTDes16@@@Z @ 41 NONAME ; int ReferenceTestAgent::CWmdrmContentParser::GetStringAttribute(int, class TDes16 &) const
+	?GetAttribute@CWmdrmContentParser@ReferenceTestAgent@@QBEHHAAH@Z @ 42 NONAME ; int ReferenceTestAgent::CWmdrmContentParser::GetAttribute(int, int &) const
+	?GetStringAttributeSet@CWmdrmContentParser@ReferenceTestAgent@@QBEHAAVRStringAttributeSet@ContentAccess@@@Z @ 43 NONAME ; int ReferenceTestAgent::CWmdrmContentParser::GetStringAttributeSet(class ContentAccess::RStringAttributeSet &) const
+	?GetAttributeSet@CWmdrmContentParser@ReferenceTestAgent@@QBEHAAVRAttributeSet@ContentAccess@@@Z @ 44 NONAME ; int ReferenceTestAgent::CWmdrmContentParser::GetAttributeSet(class ContentAccess::RAttributeSet &) const
+	?NewL@CWmdrmContentParser@ReferenceTestAgent@@SAPAV12@ABVTDesC8@@@Z @ 45 NONAME ; class ReferenceTestAgent::CWmdrmContentParser * ReferenceTestAgent::CWmdrmContentParser::NewL(class TDesC8 const &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/RefTestAgent/EABI/rtaParser_v3u.DEF	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,87 @@
+EXPORTS
+	_ZN18ReferenceTestAgent10CDrmRights11RightsCountEv @ 1 NONAME
+	_ZN18ReferenceTestAgent10CDrmRights6RemoveEi @ 2 NONAME
+	_ZN18ReferenceTestAgent10CDrmRights6RightsEi @ 3 NONAME
+	_ZN18ReferenceTestAgent13CRightsObject12ExternalizeLER12RWriteStream @ 4 NONAME
+	_ZN18ReferenceTestAgent13CRightsObject14EvaluateIntentEN13ContentAccess7TIntentE @ 5 NONAME
+	_ZN18ReferenceTestAgent13CRightsObject14ExecuteIntentLEN13ContentAccess7TIntentE @ 6 NONAME
+	_ZN18ReferenceTestAgent13CRightsObject3CidEv @ 7 NONAME
+	_ZN18ReferenceTestAgent13CRightsObject4NewLER11RReadStreami @ 8 NONAME
+	_ZN18ReferenceTestAgent13CRightsObject6MergeLERS0_ @ 9 NONAME
+	_ZN18ReferenceTestAgent15CDrmFileContent12GetAttributeEiRi @ 10 NONAME
+	_ZN18ReferenceTestAgent15CDrmFileContent15GetAttributeSetERN13ContentAccess13RAttributeSetE @ 11 NONAME
+	_ZN18ReferenceTestAgent15CDrmFileContent18GetStringAttributeEiR6TDes16 @ 12 NONAME
+	_ZN18ReferenceTestAgent15CDrmFileContent20SetCommonSourceFileLER7RFile64R10RSemaphorexx @ 13 NONAME
+	_ZN18ReferenceTestAgent15CDrmFileContent21GetStringAttributeSetERN13ContentAccess19RStringAttributeSetE @ 14 NONAME
+	_ZN18ReferenceTestAgent15CDrmFileContent3CidEv @ 15 NONAME
+	_ZN18ReferenceTestAgent15CDrmFileContent4ReadER5TDes8i @ 16 NONAME
+	_ZN18ReferenceTestAgent15CDrmFileContent4SeekE5TSeekRx @ 17 NONAME
+	_ZN18ReferenceTestAgent15CDrmFileContent4SizeERx @ 18 NONAME
+	_ZN18ReferenceTestAgent15CDrmFileContent8MimeTypeEv @ 19 NONAME
+	_ZN18ReferenceTestAgent15CDrmFilesParser4NewLERNS_12CVirtualFileE @ 20 NONAME
+	_ZN18ReferenceTestAgent15CDrmFilesParser9DrmFilesLEv @ 21 NONAME
+	_ZN18ReferenceTestAgent16CDrmRightsParser10DrmRightsLEv @ 22 NONAME
+	_ZN18ReferenceTestAgent16CDrmRightsParser4NewLERNS_12CVirtualFileE @ 23 NONAME
+	_ZN18ReferenceTestAgent16CDrmRightsParser4NewLEv @ 24 NONAME
+	_ZN18ReferenceTestAgent16CDrmRightsParser6ParseLERK6TDesC8 @ 25 NONAME
+	_ZN18ReferenceTestAgent17CDrmFileContainer19GetEmbeddedObjectsLERN13ContentAccess19RStreamablePtrArrayINS1_15CEmbeddedObjectEEE @ 26 NONAME
+	_ZN18ReferenceTestAgent17CDrmFileContainer19GetEmbeddedObjectsLERN13ContentAccess19RStreamablePtrArrayINS1_15CEmbeddedObjectEEENS1_13TEmbeddedTypeE @ 27 NONAME
+	_ZN18ReferenceTestAgent17CDrmFileContainer6SearchERN13ContentAccess19RStreamablePtrArrayINS1_15CEmbeddedObjectEEERK6TDesC8i @ 28 NONAME
+	_ZN18ReferenceTestAgent9CDrmFiles12ContentCountEv @ 29 NONAME
+	_ZN18ReferenceTestAgent9CDrmFiles13OpenContainerERK7TDesC16 @ 30 NONAME
+	_ZN18ReferenceTestAgent9CDrmFiles14CloseContainerEv @ 31 NONAME
+	_ZN18ReferenceTestAgent9CDrmFiles16CurrentContainerEv @ 32 NONAME
+	_ZN18ReferenceTestAgent9CDrmFiles5FindLERK6TDesC8 @ 33 NONAME
+	_ZN18ReferenceTestAgent9CDrmFiles5FindLERK7TDesC16 @ 34 NONAME
+	_ZN18ReferenceTestAgent9CDrmFiles7ContentEi @ 35 NONAME
+	_ZTIN18ReferenceTestAgent10CDrmRightsE @ 36 NONAME ; #<TI>#
+	_ZTIN18ReferenceTestAgent13CExpiryParserE @ 37 NONAME ; #<TI>#
+	_ZTIN18ReferenceTestAgent13CIntentParserE @ 38 NONAME ; #<TI>#
+	_ZTIN18ReferenceTestAgent13CRightsObjectE @ 39 NONAME ; #<TI>#
+	_ZTIN18ReferenceTestAgent13CRightsParserE @ 40 NONAME ; #<TI>#
+	_ZTIN18ReferenceTestAgent13CStringParserE @ 41 NONAME ; #<TI>#
+	_ZTIN18ReferenceTestAgent14CContentParserE @ 42 NONAME ; #<TI>#
+	_ZTIN18ReferenceTestAgent15CDrmFileContentE @ 43 NONAME ; #<TI>#
+	_ZTIN18ReferenceTestAgent15CDrmFilesParserE @ 44 NONAME ; #<TI>#
+	_ZTIN18ReferenceTestAgent16CAttributeParserE @ 45 NONAME ; #<TI>#
+	_ZTIN18ReferenceTestAgent16CContainerParserE @ 46 NONAME ; #<TI>#
+	_ZTIN18ReferenceTestAgent16CDrmRightsParserE @ 47 NONAME ; #<TI>#
+	_ZTIN18ReferenceTestAgent17CDrmFileContainerE @ 48 NONAME ; #<TI>#
+	_ZTIN18ReferenceTestAgent17CParseHandlerBaseE @ 49 NONAME ; #<TI>#
+	_ZTIN18ReferenceTestAgent20CRightsCriteriaCountE @ 50 NONAME ; #<TI>#
+	_ZTIN18ReferenceTestAgent21CRightsCriteriaExpiryE @ 51 NONAME ; #<TI>#
+	_ZTIN18ReferenceTestAgent22CStringAttributeParserE @ 52 NONAME ; #<TI>#
+	_ZTIN18ReferenceTestAgent7CIntentE @ 53 NONAME ; #<TI>#
+	_ZTIN18ReferenceTestAgent9CDrmFilesE @ 54 NONAME ; #<TI>#
+	_ZTIN18ReferenceTestAgent9MCriteriaE @ 55 NONAME ; #<TI>#
+	_ZTVN18ReferenceTestAgent10CDrmRightsE @ 56 NONAME ; #<VT>#
+	_ZTVN18ReferenceTestAgent13CExpiryParserE @ 57 NONAME ; #<VT>#
+	_ZTVN18ReferenceTestAgent13CIntentParserE @ 58 NONAME ; #<VT>#
+	_ZTVN18ReferenceTestAgent13CRightsObjectE @ 59 NONAME ; #<VT>#
+	_ZTVN18ReferenceTestAgent13CRightsParserE @ 60 NONAME ; #<VT>#
+	_ZTVN18ReferenceTestAgent13CStringParserE @ 61 NONAME ; #<VT>#
+	_ZTVN18ReferenceTestAgent14CContentParserE @ 62 NONAME ; #<VT>#
+	_ZTVN18ReferenceTestAgent15CDrmFileContentE @ 63 NONAME ; #<VT>#
+	_ZTVN18ReferenceTestAgent15CDrmFilesParserE @ 64 NONAME ; #<VT>#
+	_ZTVN18ReferenceTestAgent16CAttributeParserE @ 65 NONAME ; #<VT>#
+	_ZTVN18ReferenceTestAgent16CContainerParserE @ 66 NONAME ; #<VT>#
+	_ZTVN18ReferenceTestAgent16CDrmRightsParserE @ 67 NONAME ; #<VT>#
+	_ZTVN18ReferenceTestAgent17CDrmFileContainerE @ 68 NONAME ; #<VT>#
+	_ZTVN18ReferenceTestAgent17CParseHandlerBaseE @ 69 NONAME ; #<VT>#
+	_ZTVN18ReferenceTestAgent20CRightsCriteriaCountE @ 70 NONAME ; #<VT>#
+	_ZTVN18ReferenceTestAgent21CRightsCriteriaExpiryE @ 71 NONAME ; #<VT>#
+	_ZTVN18ReferenceTestAgent22CStringAttributeParserE @ 72 NONAME ; #<VT>#
+	_ZTVN18ReferenceTestAgent7CIntentE @ 73 NONAME ; #<VT>#
+	_ZTVN18ReferenceTestAgent9CDrmFilesE @ 74 NONAME ; #<VT>#
+	_ZTVN18ReferenceTestAgent9MCriteriaE @ 75 NONAME ; #<VT>#
+	_ZN18ReferenceTestAgent13CRightsObject16WriteDescriptionER5RFile @ 76 NONAME
+	_ZN18ReferenceTestAgent9CDrmFiles14SetEntireFileLER7RFile64R10RSemaphorexx @ 77 NONAME
+	_ZN18ReferenceTestAgent13CRightsObject13SetDeleteKeyLERK6TDesC8 @ 78 NONAME
+	_ZN18ReferenceTestAgent13CRightsObject9DeleteKeyEv @ 79 NONAME
+	_ZN18ReferenceTestAgent15CDrmFileContent4ReadExR5TDes8i @ 80 NONAME
+	_ZN18ReferenceTestAgent19CWmdrmContentParser4NewLERK6TDesC8 @ 81 NONAME
+	_ZNK18ReferenceTestAgent19CWmdrmContentParser12GetAttributeEiRi @ 82 NONAME
+	_ZNK18ReferenceTestAgent19CWmdrmContentParser15GetAttributeSetERN13ContentAccess13RAttributeSetE @ 83 NONAME
+	_ZNK18ReferenceTestAgent19CWmdrmContentParser18GetStringAttributeEiR6TDes16 @ 84 NONAME
+	_ZNK18ReferenceTestAgent19CWmdrmContentParser21GetStringAttributeSetERN13ContentAccess19RStringAttributeSetE @ 85 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/RefTestAgent/EABI/rtaclient_v3u.DEF	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,90 @@
+EXPORTS
+	_ZN18ReferenceTestAgent10RRtaRights10AddRightsLERNS_13CRightsObjectE @ 1 NONAME
+	_ZN18ReferenceTestAgent10RRtaRights15ClearAllRightsLEv @ 2 NONAME
+	_ZN18ReferenceTestAgent10RRtaRights19DumpRightsDatabaseLERK7TDesC16 @ 3 NONAME
+	_ZN18ReferenceTestAgent10RRtaRights7ConnectEv @ 4 NONAME
+	_ZN18ReferenceTestAgent10RRtaRightsC1Ev @ 5 NONAME
+	_ZN18ReferenceTestAgent10RRtaRightsC2Ev @ 6 NONAME
+	_ZN18ReferenceTestAgent8RRtaData14ExecuteIntentLEN13ContentAccess7TIntentE @ 7 NONAME
+	_ZN18ReferenceTestAgent8RRtaData15EvaluateIntentLEN13ContentAccess7TIntentE @ 8 NONAME
+	_ZN18ReferenceTestAgent8RRtaData4OpenER5RFileRK7TDesC16 @ 9 NONAME
+	_ZN18ReferenceTestAgent8RRtaData4OpenERK7TDesC16S3_j @ 10 NONAME
+	_ZN18ReferenceTestAgent8RRtaData4ReadER5TDes8i @ 11 NONAME
+	_ZN18ReferenceTestAgent8RRtaData8DataSizeERx @ 12 NONAME
+	_ZN18ReferenceTestAgent8RRtaDataC1Ev @ 13 NONAME
+	_ZN18ReferenceTestAgent8RRtaDataC2Ev @ 14 NONAME
+	_ZNK18ReferenceTestAgent8RRtaData12GetAttributeEiRi @ 15 NONAME
+	_ZNK18ReferenceTestAgent8RRtaData15GetAttributeSetERN13ContentAccess13RAttributeSetE @ 16 NONAME
+	_ZNK18ReferenceTestAgent8RRtaData18GetStringAttributeEiR6TDes16 @ 17 NONAME
+	_ZNK18ReferenceTestAgent8RRtaData21GetStringAttributeSetERN13ContentAccess19RStringAttributeSetE @ 18 NONAME
+	_ZNK18ReferenceTestAgent8RRtaData4SeekE5TSeekRx @ 19 NONAME
+	_ZN18ReferenceTestAgent11RRtaManager7ConnectEv @ 20 NONAME
+	_ZN18ReferenceTestAgent11RRtaManagerC1Ev @ 21 NONAME
+	_ZN18ReferenceTestAgent11RRtaManagerC2Ev @ 22 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager10DeleteFileERK7TDesC16 @ 23 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager10RenameFileERK7TDesC16S3_ @ 24 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager12GetAttributeERKN13ContentAccess15TVirtualPathPtrEiRi @ 25 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager15GetAttributeSetERKN13ContentAccess15TVirtualPathPtrERNS1_13RAttributeSetE @ 26 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager18GetStringAttributeERKN13ContentAccess15TVirtualPathPtrEiR6TDes16 @ 27 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager21GetStringAttributeSetERKN13ContentAccess15TVirtualPathPtrERNS1_19RStringAttributeSetE @ 28 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager5MkDirERK7TDesC16 @ 29 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager5RmDirERK7TDesC16 @ 30 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager6GetDirERK7TDesC168TUidTypejRP4CDir @ 31 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager6GetDirERK7TDesC16jjRP4CDir @ 32 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager6GetDirERK7TDesC16jjRP4CDirS6_ @ 33 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager8CopyFileERK7TDesC16S3_ @ 34 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager8MkDirAllERK7TDesC16 @ 35 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager9RenameDirERK7TDesC16S3_ @ 36 NONAME
+	_ZN18ReferenceTestAgent11RRtaContent4OpenER5RFile @ 37 NONAME
+	_ZN18ReferenceTestAgent11RRtaContent4OpenERK7TDesC16j @ 38 NONAME
+	_ZN18ReferenceTestAgent11RRtaContentC1Ev @ 39 NONAME
+	_ZN18ReferenceTestAgent11RRtaContentC2Ev @ 40 NONAME
+	_ZNK18ReferenceTestAgent11RRtaContent12GetAttributeERK7TDesC16iRi @ 41 NONAME
+	_ZNK18ReferenceTestAgent11RRtaContent13OpenContainerERK7TDesC16 @ 42 NONAME
+	_ZNK18ReferenceTestAgent11RRtaContent14CloseContainerEv @ 43 NONAME
+	_ZNK18ReferenceTestAgent11RRtaContent15GetAttributeSetERK7TDesC16RN13ContentAccess13RAttributeSetE @ 44 NONAME
+	_ZNK18ReferenceTestAgent11RRtaContent18GetStringAttributeERK7TDesC16iR6TDes16 @ 45 NONAME
+	_ZNK18ReferenceTestAgent11RRtaContent19GetEmbeddedObjectsLERN13ContentAccess19RStreamablePtrArrayINS1_15CEmbeddedObjectEEE @ 46 NONAME
+	_ZNK18ReferenceTestAgent11RRtaContent19GetEmbeddedObjectsLERN13ContentAccess19RStreamablePtrArrayINS1_15CEmbeddedObjectEEENS1_13TEmbeddedTypeE @ 47 NONAME
+	_ZNK18ReferenceTestAgent11RRtaContent21GetStringAttributeSetERK7TDesC16RN13ContentAccess19RStringAttributeSetE @ 48 NONAME
+	_ZNK18ReferenceTestAgent11RRtaContent6SearchERN13ContentAccess19RStreamablePtrArrayINS1_15CEmbeddedObjectEEERK6TDesC8i @ 49 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager8CopyFileER5RFileRK7TDesC16 @ 50 NONAME
+	_ZN18ReferenceTestAgent10RRtaRights18DeleteRightsByKeyLERK6TDesC8 @ 51 NONAME
+	_ZN18ReferenceTestAgent10RRtaRights15EraseDeleteKeyLERK6TDesC8 @ 52 NONAME
+	_ZN18ReferenceTestAgent8RRtaData4ReadExR5TDes8i @ 53 NONAME
+	_ZN18ReferenceTestAgent10RRtaRights21ReloadRightsDatabaseLERK7TDesC16 @ 54 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager12GetAttributeEiRiR5RFileRK7TDesC16 @ 55 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager15GetAttributeSetERN13ContentAccess13RAttributeSetER5RFileRK7TDesC16 @ 56 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager18GetStringAttributeEiR6TDes16R5RFileRK7TDesC16 @ 57 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager21GetStringAttributeSetERN13ContentAccess19RStringAttributeSetER5RFileRK7TDesC16 @ 58 NONAME
+	_ZNK18ReferenceTestAgent11RRtaContent11SetPropertyEN13ContentAccess14TAgentPropertyEi @ 59 NONAME
+	_ZNK18ReferenceTestAgent11RRtaContent12DisplayInfoLEN13ContentAccess12TDisplayInfoERK7TDesC16 @ 60 NONAME
+	_ZNK18ReferenceTestAgent11RRtaContent14RequestRightsLERK7TDesC16 @ 61 NONAME
+	_ZNK18ReferenceTestAgent11RRtaContent19CancelRequestRightsERK7TDesC16 @ 62 NONAME
+	_ZNK18ReferenceTestAgent11RRtaContent19NotifyStatusChangeLEN13ContentAccess10TEventMaskERK7TDesC16 @ 63 NONAME
+	_ZNK18ReferenceTestAgent11RRtaContent20AgentSpecificCommandEiRK6TDesC8R5TDes8 @ 64 NONAME
+	_ZNK18ReferenceTestAgent11RRtaContent24CancelNotifyStatusChangeERK7TDesC16 @ 65 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager11SetPropertyEN13ContentAccess14TAgentPropertyEi @ 66 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager12DisplayInfoLEN13ContentAccess12TDisplayInfoER5RFileRK7TDesC16 @ 67 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager12DisplayInfoLEN13ContentAccess12TDisplayInfoERKNS1_15TVirtualPathPtrE @ 68 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager19NotifyStatusChangeLERK7TDesC16N13ContentAccess10TEventMaskE @ 69 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager20AgentSpecificCommandEiRK6TDesC8R5TDes8 @ 70 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager22DisplayManagementInfoLEv @ 71 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager24CancelNotifyStatusChangeERK7TDesC16 @ 72 NONAME
+	_ZNK18ReferenceTestAgent8RRtaData11SetPropertyEN13ContentAccess14TAgentPropertyEi @ 73 NONAME
+	_ZN18ReferenceTestAgent11RRtaContent4OpenERK6TDesC8 @ 74 NONAME
+	_ZN18ReferenceTestAgent8RRtaData4OpenERK6TDesC8 @ 75 NONAME
+	_ZN18ReferenceTestAgent8RRtaData4ReadERK6TDesC8R5TDes8 @ 76 NONAME
+	_ZNK18ReferenceTestAgent11RRtaContent17GetWmdrmAttributeERK7TDesC16iRi @ 77 NONAME
+	_ZNK18ReferenceTestAgent11RRtaContent20GetWmdrmAttributeSetERK7TDesC16RN13ContentAccess13RAttributeSetE @ 78 NONAME
+	_ZNK18ReferenceTestAgent11RRtaContent23GetWmdrmStringAttributeERK7TDesC16iR6TDes16 @ 79 NONAME
+	_ZNK18ReferenceTestAgent11RRtaContent26GetWmdrmStringAttributeSetERK7TDesC16RN13ContentAccess19RStringAttributeSetE @ 80 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager12GetAttributeERK6TDesC8iRi @ 81 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager15GetAttributeSetERK6TDesC8RN13ContentAccess13RAttributeSetE @ 82 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager18GetStringAttributeERK6TDesC8iR6TDes16 @ 83 NONAME
+	_ZNK18ReferenceTestAgent11RRtaManager21GetStringAttributeSetERK6TDesC8RN13ContentAccess19RStringAttributeSetE @ 84 NONAME
+	_ZNK18ReferenceTestAgent8RRtaData17GetWmdrmAttributeEiRi @ 85 NONAME
+	_ZNK18ReferenceTestAgent8RRtaData20GetWmdrmAttributeSetERN13ContentAccess13RAttributeSetE @ 86 NONAME
+	_ZNK18ReferenceTestAgent8RRtaData23GetWmdrmStringAttributeEiR6TDes16 @ 87 NONAME
+	_ZNK18ReferenceTestAgent8RRtaData26GetWmdrmStringAttributeSetERN13ContentAccess19RStringAttributeSetE @ 88 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/RefTestAgent/RTAParser/wmdrmcontentparser.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,154 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include "wmdrmcontentparser.h"
+#include <caf/caferr.h>
+
+using namespace ReferenceTestAgent;
+using namespace ContentAccess;
+
+EXPORT_C CWmdrmContentParser* CWmdrmContentParser::NewL(const TDesC8& aHeaderData)
+	{
+	CWmdrmContentParser* self = new (ELeave) CWmdrmContentParser;
+	CleanupStack::PushL(self);
+	self->ConstructL(aHeaderData);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+
+CWmdrmContentParser::CWmdrmContentParser()
+	{
+	}
+
+
+void CWmdrmContentParser::ConstructL(const TDesC8& aHeaderData)
+	{
+	iHeaderData = aHeaderData.AllocL();	
+	
+	// Initialise default attributes.
+	CreateAttributeSetL();
+	CreateStringAttributeSetL();
+	}
+	
+void CWmdrmContentParser::CreateAttributeSetL()
+	{
+	// Initialise attributes
+	SetAttributeL(EIsProtected, ETrue, KErrNone);
+	SetAttributeL(EIsForwardable, EFalse, KErrNone);
+	SetAttributeL(EIsModifyable, EFalse, KErrNone);
+	SetAttributeL(EIsCopyable, EFalse, KErrNone);
+	SetAttributeL(ECanPlay, EFalse, KErrNone);
+	SetAttributeL(ECanPrint, EFalse, KErrNone);
+	SetAttributeL(ECanExecute, EFalse, KErrNone);
+	SetAttributeL(ECanView, EFalse, KErrNone);
+	SetAttributeL(ERightsNone, ETrue, KErrNone);
+	SetAttributeL(ERightsPending, EFalse, KErrNone);
+	SetAttributeL(ERightsHaveExpired, EFalse, KErrNone);
+	SetAttributeL(EPreviewAvailable, EFalse, KErrNone);
+	SetAttributeL(ECanRewind, EFalse, KErrNone);
+	SetAttributeL(ECopyPaste, EFalse, KErrNone);
+	SetAttributeL(ERightsConsumable, EFalse, KErrNone);
+	SetAttributeL(ERightsStateless, EFalse, KErrNone);
+	SetAttributeL(ECanMove, ETrue, KErrNone);
+	SetAttributeL(ECanRename, ETrue, KErrNone);
+	SetAttributeL(ECanAutomaticConsume, EFalse, KErrNone);
+	}
+	
+void CWmdrmContentParser::CreateStringAttributeSetL()
+	{
+	// Initialise string attributes.
+	_LIT(KDescription, "WMDRM");
+	SetStringAttributeL(EDescription , KDescription, KErrNone);
+	
+	_LIT(KMimeType, "application/vnd.drm.asf");
+
+	SetStringAttributeL(EMimeType, KMimeType, KErrNone);
+	}
+
+void CWmdrmContentParser::SetAttributeL(TInt aAttribute, TInt aValue, TInt aErrorCode)	
+	{
+	iAttributeSet.AddL(aAttribute);
+	User::LeaveIfError(iAttributeSet.SetValue(aAttribute, aValue, aErrorCode));
+	}
+	
+void CWmdrmContentParser::SetStringAttributeL(TInt aAttribute, const TDesC& aValue, TInt aErrorCode)	
+	{
+	iStringAttributeSet.AddL(aAttribute);
+	User::LeaveIfError(iStringAttributeSet.SetValue(aAttribute, aValue, aErrorCode));
+	}
+	
+CWmdrmContentParser::~CWmdrmContentParser()
+	{
+	delete iHeaderData;
+	
+	iAttributeSet.Close();
+	iStringAttributeSet.Close();
+	}
+
+EXPORT_C TInt CWmdrmContentParser::GetAttribute(TInt aAttribute, TInt& aValue) const
+	{
+	return iAttributeSet.GetValue(aAttribute, aValue);
+	}
+	
+EXPORT_C TInt CWmdrmContentParser::GetStringAttribute(TInt aAttribute, TDes& aValue) const
+	{
+	return iStringAttributeSet.GetValue(aAttribute, aValue);
+	}
+	
+EXPORT_C TInt CWmdrmContentParser::GetAttributeSet(RAttributeSet &aAttributeSet) const
+	{
+	TInt value = 0;
+	TInt err = KErrNone;
+	for(TInt i = 0; i < aAttributeSet.Count(); i++)
+		{
+		TInt attribute = aAttributeSet[i];
+		err = GetAttribute(attribute, value);
+		if(err != KErrNone)
+			{
+			break;
+			}
+	
+		aAttributeSet.SetValue(attribute, value, err);
+		}
+	return err;
+	}
+
+EXPORT_C TInt CWmdrmContentParser::GetStringAttributeSet(RStringAttributeSet &aStringAttributeSet) const
+	{
+	TInt err = KErrNone;
+	for(TInt i = 0; i < aStringAttributeSet.Count(); i++)
+		{
+		TInt attribute = aStringAttributeSet[i];
+		HBufC* value = NULL;
+		TRAP(err, value = HBufC::NewL(iStringAttributeSet.GetValueLength(attribute)));
+		CleanupStack::PushL(value);
+
+		TPtr valuePtr = value->Des();
+		err = GetStringAttribute(attribute, valuePtr);
+		if(err != KErrNone)
+			{
+			CleanupStack::PopAndDestroy(value);
+			break;
+			}
+
+		aStringAttributeSet.SetValue(attribute, valuePtr, err);
+		CleanupStack::PopAndDestroy(value);
+		}
+	return err;
+	}
--- a/contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Client/rtacontent.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Client/rtacontent.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -265,8 +265,12 @@
 	TRAPD( err, GetAttributeSetL(aUniqueId, aAttributeSet) );
 	return err;
 	}
-	
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+void RRtaContent::GetAttributeSetL (const TDesC& aUniqueId, RAttributeSet &aAttributeSet, TBool aWmdrmFlag) const     
+#else  
 void RRtaContent::GetAttributeSetL (const TDesC& aUniqueId, RAttributeSet &aAttributeSet) const
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 	{
 	TInt err = KErrOverflow;
 	TInt length = 0;
@@ -294,9 +298,16 @@
 		HBufC8* transferBuffer = HBufC8::NewLC(length);
 		transferBuffer->Des().Copy(bufPtr);
 		TPtr8 transferPtr = transferBuffer->Des();
-	
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+        if(aWmdrmFlag)     
+            err = SendReceive(EWMDRMGetAttributeSet, TIpcArgs(&aUniqueId, &transferPtr));     
+        else     
+            err = SendReceive(EGetAttributeSet, TIpcArgs(&aUniqueId, &transferPtr));     
+#else 
 		// attempt to retrieve the attributes
-		err = SendReceive(EGetAttributeSet, TIpcArgs(&aUniqueId, &transferPtr));	
+		err = SendReceive(EGetAttributeSet, TIpcArgs(&aUniqueId, &transferPtr));
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 		if(err == KErrOverflow)
 			{
 			// Find out the length required to receive the resulting attribute set
@@ -328,7 +339,11 @@
 	return err;
 	}
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+void RRtaContent::GetStringAttributeSetL(const TDesC& aUniqueId, RStringAttributeSet &aStringAttributeSet, TBool aWmdrmFlag) const       
+#else 
 void RRtaContent::GetStringAttributeSetL (const TDesC& aUniqueId, RStringAttributeSet &aStringAttributeSet) const
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 	{
 	TInt err = KErrOverflow;
 	TInt length = 0;
@@ -356,9 +371,15 @@
 		HBufC8* transferBuffer = HBufC8::NewLC(length);
 		transferBuffer->Des().Copy(bufPtr);
 		TPtr8 transferPtr = transferBuffer->Des();
-	
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+        if(aWmdrmFlag)     
+            err = SendReceive(EWMDRMGetStringAttributeSet, TIpcArgs(&aUniqueId, &transferPtr));     
+        else     
+            err = SendReceive(EGetStringAttributeSet, TIpcArgs(&aUniqueId, &transferPtr));     
+#else    
 		// attempt to retrieve the attributes
 		err = SendReceive(EGetStringAttributeSet, TIpcArgs(&aUniqueId, &transferPtr));	
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 		if(err == KErrOverflow)
 			{
 			// Find out the length required to receive the resulting attribute set
@@ -474,3 +495,67 @@
 		}
 	return err;
 	}
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+      
+EXPORT_C TInt RRtaContent::Open(const TDesC8& aHeaderData)     
+    {     
+    TInt err = RRtaClient::Connect();     
+    if (err != KErrNone)     
+        {     
+        return err;     
+        }     
+         
+    if(IsDrmCapabilityEnforced())     
+        {     
+        err = SendReceive(ECreateContentMessageHandler, TIpcArgs());     
+        if(err != KErrNone)     
+            {     
+            return err;     
+            }     
+             
+        err = SendReceive(EReadWMDRMHeaderData, TIpcArgs(&aHeaderData));     
+        }     
+             
+    else     
+        {     
+        err = SendReceive(ENoEnforceCreateContentMessageHandler, TIpcArgs());     
+        if(err != KErrNone)     
+            {     
+            return err;     
+            }     
+                 
+        err = SendReceive(ENoEnforceReadWMDRMHeaderData, TIpcArgs(&aHeaderData));     
+        }     
+             
+    return err;     
+    }     
+         
+EXPORT_C TInt RRtaContent::GetWmdrmAttribute(const TDesC& /*aUniqueId*/, TInt aAttribute, TInt& aValue) const     
+    {     
+    TPckg<TInt> valuePkg(aValue);     
+    TInt result = SendReceive(EWMDRMGetAttribute, TIpcArgs(aAttribute, &valuePkg));     
+    return result;     
+    }     
+         
+EXPORT_C TInt RRtaContent::GetWmdrmAttributeSet(const TDesC& aUniqueId, ContentAccess::RAttributeSet& aAttributeSet) const     
+    {     
+    TRAPD( err, GetAttributeSetL(aUniqueId, aAttributeSet, ETrue));     
+    return err;     
+    }     
+         
+EXPORT_C TInt RRtaContent::GetWmdrmStringAttribute(const TDesC& /*aUniqueId*/, TInt aAttribute, TDes& aValue) const     
+    {     
+    TIpcArgs ipcArgs(aAttribute, &aValue);     
+    TInt result = SendReceive(EWMDRMGetStringAttribute, ipcArgs);     
+    return result;     
+    }     
+      
+EXPORT_C TInt RRtaContent::GetWmdrmStringAttributeSet(const TDesC& aUniqueId, ContentAccess::RStringAttributeSet& aStringAttributeSet) const     
+    {     
+    TRAPD( err, GetStringAttributeSetL(aUniqueId, aStringAttributeSet, ETrue));     
+    return err;     
+    }     
+      
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
--- a/contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Client/rtadata.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Client/rtadata.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -233,8 +233,12 @@
 	TRAPD( err, GetAttributeSetL(aAttributeSet) );
 	return err;
 	}
-	
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+void RRtaData::GetAttributeSetL (RAttributeSet &aAttributeSet, TBool aWmdrmFlag) const     
+#else 
 void RRtaData::GetAttributeSetL (RAttributeSet &aAttributeSet) const
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 	{
 	TInt err = KErrOverflow;
 	TInt length = 0;
@@ -263,8 +267,15 @@
 		transferBuffer->Des().Copy(bufPtr);
 		TPtr8 transferPtr = transferBuffer->Des();
 	
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+        if(aWmdrmFlag)     
+            err = SendReceive(EWMDRMGetAttributeSet, TIpcArgs(&transferPtr));     
+        else     
+            err = SendReceive(EGetAttributeSet, TIpcArgs(&transferPtr));         
+#else 
 		// attempt to retrieve the attributes
 		err = SendReceive(EGetAttributeSet, TIpcArgs(&transferPtr));	
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 		if(err == KErrOverflow)
 			{
 			// Find out the length required to receive the resulting attribute set
@@ -295,8 +306,12 @@
 	TRAPD( err, GetStringAttributeSetL(aStringAttributeSet) );
 	return err;
 	}
-	
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+void RRtaData::GetStringAttributeSetL (RStringAttributeSet &aStringAttributeSet, TBool aWmdrmFlag) const     
+#else 
 void RRtaData::GetStringAttributeSetL (RStringAttributeSet &aStringAttributeSet) const
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 	{
 	TInt err = KErrOverflow;
 	TInt length = 0;
@@ -324,9 +339,16 @@
 		HBufC8* transferBuffer = HBufC8::NewLC(length);
 		transferBuffer->Des().Copy(bufPtr);
 		TPtr8 transferPtr = transferBuffer->Des();
-	
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+        if(aWmdrmFlag)     
+            err = SendReceive(EWMDRMGetStringAttributeSet, TIpcArgs(&transferPtr));     
+        else     
+            err = SendReceive(EGetStringAttributeSet, TIpcArgs(&transferPtr));       
+#else 
 		// attempt to retrieve the attributes
 		err = SendReceive(EGetStringAttributeSet, TIpcArgs(&transferPtr));	
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 		if(err == KErrOverflow)
 			{
 			// Find out the length required to receive the resulting attribute set
@@ -361,3 +383,78 @@
 		}
 	return err;
 	}
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+      
+EXPORT_C TInt RRtaData::Open(const TDesC8& aHeaderData)     
+    {     
+    TInt err = RRtaClient::Connect();     
+    if(err != KErrNone)     
+        {     
+        return err;     
+        }     
+         
+    if(IsDrmCapabilityEnforced())     
+        {     
+        err = SendReceive(ECreateDataMessageHandler, TIpcArgs());     
+        if(err != KErrNone)     
+            return err;     
+             
+        err = SendReceive(EReadWMDRMHeaderData, TIpcArgs(&aHeaderData));     
+        }     
+             
+    else     
+        {     
+        err = SendReceive(ENoEnforceCreateDataMessageHandler, TIpcArgs());     
+        if(err != KErrNone)     
+            return err;     
+             
+        err = SendReceive(ENoEnforceReadWMDRMHeaderData, TIpcArgs(&aHeaderData));     
+        }     
+      
+    return err;     
+    }     
+         
+EXPORT_C TInt RRtaData::Read(const TDesC8& aEncryptedInputPacket, TDes8& aDecryptedOutputPacket)     
+    {     
+    TInt err = 0;     
+    if(IsDrmCapabilityEnforced())     
+        {     
+        err =  SendReceive(EReadWMDRMDataPacket, TIpcArgs(&aEncryptedInputPacket, &aDecryptedOutputPacket));         
+        }     
+    else     
+        {     
+        err =  SendReceive(ENoEnforceReadWMDRMDataPacket, TIpcArgs(&aEncryptedInputPacket, &aDecryptedOutputPacket));        
+        }     
+         
+    return err;     
+    }     
+         
+      
+EXPORT_C TInt RRtaData::GetWmdrmAttribute(TInt aAttribute, TInt& aValue) const     
+    {     
+    TPckg<TInt> valuePkg(aValue);     
+    TInt err = SendReceive(EWMDRMGetAttribute, TIpcArgs(aAttribute, &valuePkg));     
+    return err;     
+    }     
+         
+EXPORT_C TInt RRtaData::GetWmdrmAttributeSet(ContentAccess::RAttributeSet& aAttributeSet) const     
+    {     
+    TRAPD( err, GetAttributeSetL(aAttributeSet, ETrue));     
+    return err;     
+    }     
+         
+EXPORT_C TInt RRtaData::GetWmdrmStringAttribute(TInt aAttribute, TDes& aValue) const     
+    {     
+    return SendReceive(EWMDRMGetStringAttribute, TIpcArgs(aAttribute, &aValue));     
+    }     
+      
+EXPORT_C TInt RRtaData::GetWmdrmStringAttributeSet(ContentAccess::RStringAttributeSet& aStringAttributeSet) const     
+    {     
+    TRAPD( err, GetStringAttributeSetL(aStringAttributeSet, ETrue));     
+    return err;     
+    }     
+      
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
+
--- a/contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Client/rtamanager.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Client/rtamanager.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -731,3 +731,95 @@
 		User::LeaveIfError(SendReceive(ENoEnforceManagerDisplayManagementInfo, TIpcArgs()));
 		}
 	}
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+      
+EXPORT_C TInt RRtaManager::GetAttribute(const TDesC8& aHeaderData, TInt aAttribute, TInt& aValue) const     
+    {     
+    TPckg<TInt> valuePkg(aValue);     
+    TInt result = SendReceive(EWMDRMGetAttribute, TIpcArgs(&aHeaderData, aAttribute, &valuePkg));     
+    return result;     
+    }     
+         
+EXPORT_C TInt RRtaManager::GetAttributeSet(const TDesC8& aHeaderData, ContentAccess::RAttributeSet& aAttributeSet) const     
+    {     
+    TRAPD(err, GetAttributeSetL (aHeaderData, aAttributeSet));     
+    return err;     
+    }     
+         
+EXPORT_C TInt RRtaManager::GetStringAttribute(const TDesC8& aHeaderData, TInt aAttribute, TDes& aValue) const     
+    {     
+    TInt result = SendReceive(EWMDRMGetStringAttribute, TIpcArgs(&aHeaderData, aAttribute, &aValue));     
+    return result;     
+    }     
+      
+EXPORT_C TInt RRtaManager::GetStringAttributeSet(const TDesC8& aHeaderData, ContentAccess::RStringAttributeSet& aStringAttributeSet) const     
+    {     
+    TRAPD(err, GetStringAttributeSetL(aHeaderData, aStringAttributeSet));     
+    return err;     
+    }     
+         
+void RRtaManager::GetAttributeSetL(const TDesC8& aHeaderData, ContentAccess::RAttributeSet& aAttributeSet) const     
+    {     
+    // dynamic buffer since we don't know in advance the size required     
+    CBufFlat* buffer = CBufFlat::NewL(KDefaultBufferSize);     
+    CleanupStack::PushL(buffer);     
+         
+    RBufWriteStream stream(*buffer);     
+    CleanupClosePushL(stream);     
+         
+    // write the directory to the stream     
+    aAttributeSet.ExternalizeL(stream);     
+    CleanupStack::PopAndDestroy(&stream);     
+         
+    // Create an HBufC8 from the stream buf's length, and copy      
+    // the stream buffer into this descriptor     
+    HBufC8* transferBuffer = HBufC8::NewLC(buffer->Size() * 15);     
+    TPtr8 ptr = buffer->Ptr(0);     
+    transferBuffer->Des().Copy(ptr);     
+    TPtr8 transferPtr = transferBuffer->Des();     
+         
+    User::LeaveIfError(SendReceive(EWMDRMGetAttributeSet, TIpcArgs(&aHeaderData, &transferPtr)));     
+      
+    // read in the attribute values from the buffer     
+    RDesReadStream readStream(transferPtr);     
+    CleanupClosePushL(readStream);     
+    aAttributeSet.InternalizeL(readStream);     
+    CleanupStack::PopAndDestroy(&readStream);     
+         
+    CleanupStack::PopAndDestroy(2, buffer);     
+    }     
+         
+void RRtaManager::GetStringAttributeSetL(const TDesC8& aHeaderData, ContentAccess::RStringAttributeSet& aStringAttributeSet) const     
+    {     
+    // dynamic buffer since we don't know in advance the size required     
+    CBufFlat* buffer = CBufFlat::NewL(KDefaultBufferSize);     
+    CleanupStack::PushL(buffer);     
+         
+    RBufWriteStream stream(*buffer);     
+    CleanupClosePushL(stream);     
+         
+    // write the directory to the stream     
+    aStringAttributeSet.ExternalizeL(stream);     
+    CleanupStack::PopAndDestroy(&stream);     
+         
+    // Create an HBufC8 from the stream buf's length, and copy      
+    // the stream buffer into this descriptor     
+    HBufC8* transferBuffer = HBufC8::NewLC(buffer->Size()*15);     
+    TPtr8 ptr = buffer->Ptr(0);     
+    transferBuffer->Des().Copy(ptr);     
+    TPtr8 transferPtr = transferBuffer->Des();     
+         
+    User::LeaveIfError(SendReceive(EWMDRMGetStringAttributeSet, TIpcArgs(&aHeaderData, &transferPtr)));     
+         
+    // read in the attribute values from the buffer     
+    RDesReadStream readStream(transferPtr);     
+    CleanupClosePushL(readStream);     
+    aStringAttributeSet.InternalizeL(readStream);     
+    CleanupStack::PopAndDestroy(&readStream);     
+                     
+    CleanupStack::PopAndDestroy(2, buffer);     
+    }     
+         
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
--- a/contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Common/clientserver.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Common/clientserver.h	Mon Oct 12 10:17:04 2009 +0300
@@ -116,6 +116,14 @@
 		EManagerDisplayManagementInfo = 105,
 
 		EDataSetProperty = 106,
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+        EReadWMDRMHeaderData = 107,     
+        EReadWMDRMDataPacket = 108,     
+        EWMDRMGetAttribute = 109,     
+        EWMDRMGetStringAttribute = 110,     
+        EWMDRMGetAttributeSet = 111,     
+        EWMDRMGetStringAttributeSet = 112,     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
 		
 		// These operations do not require DRM capability
 		ESeparatorUnprotected   = 500,
@@ -124,6 +132,15 @@
 		EGetStringAttribute 	= 503,
 		EGetStringAttributeSet  = 504,
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+        ENoEnforceReadWMDRMHeaderData = 701,     
+        ENoEnforceReadWMDRMDataPacket = 702,     
+        ENoEnforceWMDRMGetAttribute = 703,     
+        ENoEnforceWMDRMGetStringAttribute = 704,     
+        ENoEnforceWMDRMGetAttributeSet = 705,     
+        ENoEnforceWMDRMGetStringAttributeSet = 706,     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
 		// IPC messages to use when DRM capability enforcing is disabled
 		ENoEnforceAddRights		 = 1001,
 		ENoEnforceEvaluateIntent = 1002,
--- a/contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Server/rtacontenthandler.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Server/rtacontenthandler.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -50,6 +50,9 @@
 	{
 	delete iArchive;
 	iFile.Close();
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    delete iWmdrmContentObject;     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
 	}
 
 void CRtaContentHandler::ServiceL(const RMessage2& aMessage)
@@ -127,6 +130,32 @@
 	case ENoEnforceContentSetProperty:
 		SetPropertyL(aMessage);
 		break;
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    case EReadWMDRMHeaderData:     
+    case ENoEnforceReadWMDRMHeaderData:     
+        ReadWMDRMHeaderL(aMessage);     
+        break;     
+         
+    case EWMDRMGetAttribute:     
+    case ENoEnforceWMDRMGetAttribute:     
+        GetWMDRMAttributeL(aMessage);     
+        break;     
+             
+    case EWMDRMGetAttributeSet:     
+    case ENoEnforceWMDRMGetAttributeSet:     
+        GetWMDRMAttributeSetL(aMessage);     
+        break;     
+         
+    case EWMDRMGetStringAttribute:     
+    case ENoEnforceWMDRMGetStringAttribute:     
+        GetWMDRMStringAttributeL(aMessage);     
+        break;     
+             
+    case EWMDRMGetStringAttributeSet:     
+    case ENoEnforceWMDRMGetStringAttributeSet:     
+        GetWMDRMStringAttributeSetL(aMessage);     
+        break;     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
 	default:
 		CRtaSession::PanicClient(aMessage,EPanicIllegalFunction);
 		break;
@@ -377,3 +406,103 @@
 	{
 	User::Leave(KErrCANotSupported);
 	}
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+      
+void CRtaContentHandler::ReadWMDRMHeaderL(const RMessage2& aMessage)     
+    {     
+    HBufC8* headerData = ReadDesC8LC(aMessage, 0);       
+    iWmdrmContentObject = CWmdrmContentParser::NewL(*headerData);     
+         
+    CleanupStack::PopAndDestroy(headerData);     
+    }     
+         
+void CRtaContentHandler::GetWMDRMAttributeL(const RMessage2& aMessage)     
+    {     
+    TInt attribute = aMessage.Int0();     
+    TInt value;     
+    TPckg<TInt> valuePkg(value);     
+      
+    User::LeaveIfError(iWmdrmContentObject->GetAttribute(attribute, value));     
+    WriteL(aMessage, 1, valuePkg);     
+    }     
+         
+void CRtaContentHandler::GetWMDRMStringAttributeL(const RMessage2& aMessage)     
+    {     
+    TInt attribute = aMessage.Int0();     
+    HBufC* value = ReadDes16LC(aMessage, 1);     
+    TPtr valuePtr = value->Des();     
+      
+    User::LeaveIfError(iWmdrmContentObject->GetStringAttribute(attribute, valuePtr));     
+    WriteL(aMessage, 1, valuePtr);     
+         
+    CleanupStack::PopAndDestroy(value);     
+    }     
+         
+void CRtaContentHandler::GetWMDRMAttributeSetL(const RMessage2& aMessage)     
+    {     
+    RAttributeSet attributeSet;     
+    CleanupClosePushL(attributeSet);     
+         
+    HBufC8* value = ReadDes8LC(aMessage, 1);     
+    TPtr8 valuePtr = value->Des();     
+    RDesReadStream readStream(valuePtr);     
+    CleanupClosePushL(readStream);     
+         
+    attributeSet.InternalizeL(readStream);     
+    CleanupStack::PopAndDestroy(2, value);     
+         
+    iWmdrmContentObject->GetAttributeSet(attributeSet);     
+      
+    // Write the object out to a buffer, send to client     
+    CBufFlat* buf = CBufFlat::NewL(50);     
+    CleanupStack::PushL(buf);     
+         
+    // create write stream     
+    RBufWriteStream writeStream(*buf);     
+    CleanupClosePushL(writeStream);     
+         
+    // write the directory to the stream     
+    attributeSet.ExternalizeL(writeStream);     
+    CleanupStack::PopAndDestroy(&writeStream);     
+         
+    TPtr8 bufPtr = buf->Ptr(0);     
+    WriteL(aMessage, 1, bufPtr);     
+             
+    CleanupStack::PopAndDestroy(2, &attributeSet); // buf, attributeSet     
+    }     
+         
+void CRtaContentHandler::GetWMDRMStringAttributeSetL(const RMessage2& aMessage)     
+    {     
+    RStringAttributeSet attributeSet;     
+    CleanupClosePushL(attributeSet);     
+         
+    HBufC8* value = ReadDes8LC(aMessage, 1);     
+    TPtr8 valuePtr = value->Des();     
+    RDesReadStream readStream(valuePtr);     
+    CleanupClosePushL(readStream);     
+         
+    attributeSet.InternalizeL(readStream);     
+    CleanupStack::PopAndDestroy(2, value);     
+         
+    iWmdrmContentObject->GetStringAttributeSet(attributeSet);     
+      
+    // Write the object out to a buffer, send to client     
+    CBufFlat* buf = CBufFlat::NewL(50);     
+    CleanupStack::PushL(buf);     
+    // create write stream     
+    RBufWriteStream writeStream(*buf);     
+    CleanupClosePushL(writeStream);     
+         
+    // write the directory to the stream     
+    attributeSet.ExternalizeL(writeStream);     
+    CleanupStack::PopAndDestroy(&writeStream);     
+         
+    TPtr8 bufPtr = buf->Ptr(0);     
+    WriteL(aMessage, 1, bufPtr);     
+             
+    CleanupStack::PopAndDestroy(2, &attributeSet); // buf, attributeSet     
+    }     
+      
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
--- a/contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Server/rtacontenthandler.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Server/rtacontenthandler.h	Mon Oct 12 10:17:04 2009 +0300
@@ -30,6 +30,10 @@
 #include "RTAserver.h"
 #include "rtamessagehandler.h"
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+#include "wmdrmcontentparser.h"     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
 namespace ReferenceTestAgent
 	{
 	class CRefTestAgentArchive;
@@ -67,6 +71,13 @@
 		void CancelRequestRightsL(const RMessage2& aMessage);
 		void DisplayInfoL(const RMessage2& aMessage);
 		void SetPropertyL(const RMessage2& aMessage);
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+        void ReadWMDRMHeaderL(const RMessage2& aMessage);     
+        void GetWMDRMAttributeL(const RMessage2& aMessage);     
+        void GetWMDRMStringAttributeL(const RMessage2& aMessage);     
+        void GetWMDRMAttributeSetL(const RMessage2& aMessage);     
+        void GetWMDRMStringAttributeSetL(const RMessage2& aMessage);     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
 
 	private:
 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
@@ -75,6 +86,9 @@
 		RFile iFile;
 #endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
 		CRefTestAgentArchive* iArchive;
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT          
+        CWmdrmContentParser* iWmdrmContentObject;     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
 		};
 	} //namespace
 
--- a/contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Server/rtadatahandler.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Server/rtadatahandler.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -49,6 +49,9 @@
 	{
 	delete iArchive;
 	iFile.Close();
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT          
+    delete iWmdrmContentObject;     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
 	}
 
 void CRtaDataHandler::ServiceL(const RMessage2& aMessage)
@@ -105,7 +108,38 @@
 	case EDataSetProperty:
 	case ENoEnforceDataSetProperty:
 		SetPropertyL(aMessage);
-		break;		
+		break;
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    case EReadWMDRMHeaderData:     
+    case ENoEnforceReadWMDRMHeaderData:     
+        ReadWMDRMHeaderL(aMessage);     
+        break;     
+         
+    case EReadWMDRMDataPacket:     
+    case ENoEnforceReadWMDRMDataPacket:     
+        DecryptWMDRMDataPacketL(aMessage);     
+        break;     
+             
+    case EWMDRMGetAttribute:     
+    case ENoEnforceWMDRMGetAttribute:     
+        GetWMDRMAttributeL(aMessage);     
+        break;     
+             
+    case EWMDRMGetAttributeSet:     
+    case ENoEnforceWMDRMGetAttributeSet:     
+        GetWMDRMAttributeSetL(aMessage);     
+        break;     
+         
+    case EWMDRMGetStringAttribute:     
+    case ENoEnforceWMDRMGetStringAttribute:     
+        GetWMDRMStringAttributeL(aMessage);     
+        break;     
+             
+    case EWMDRMGetStringAttributeSet:     
+    case ENoEnforceWMDRMGetStringAttributeSet:     
+        GetWMDRMStringAttributeSetL(aMessage);     
+        break;     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT        
 	default:
 		CRtaSession::PanicClient(aMessage,EPanicIllegalFunction);
 		break;
@@ -327,3 +361,114 @@
 	{	
 	User::Leave(KErrCANotSupported);
 	}
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+      
+void CRtaDataHandler::ReadWMDRMHeaderL(const RMessage2& aMessage)     
+    {     
+    HBufC8* headerData = ReadDesC8LC(aMessage, 0);       
+    iWmdrmContentObject = CWmdrmContentParser::NewL(*headerData);     
+         
+    CleanupStack::PopAndDestroy(headerData);     
+    }     
+         
+void CRtaDataHandler::DecryptWMDRMDataPacketL(const RMessage2& aMessage)     
+    {     
+    HBufC8* inputPacket = ReadDesC8LC(aMessage, 0);     
+         
+    HBufC8* decryptedPacket = ReadDes8LC(aMessage, 1);     
+    TPtr8 decryptedPacketPtr = decryptedPacket->Des();     
+         
+    decryptedPacketPtr.Copy(*inputPacket);     
+         
+    WriteL(aMessage, 1, decryptedPacketPtr);     
+         
+    CleanupStack::PopAndDestroy(2, inputPacket);     
+    }     
+         
+void CRtaDataHandler::GetWMDRMAttributeL(const RMessage2& aMessage)     
+    {     
+    TInt attribute = aMessage.Int0();     
+    TInt value;     
+    TPckg <TInt> valuePckg(value);               
+    User::LeaveIfError(iWmdrmContentObject->GetAttribute(attribute, value));     
+         
+    WriteL(aMessage, 1, valuePckg);     
+    }     
+         
+void CRtaDataHandler::GetWMDRMStringAttributeL(const RMessage2& aMessage)     
+    {     
+    TInt attribute = aMessage.Int0();     
+    HBufC* value = ReadDes16LC(aMessage, 1);     
+    TPtr valuePtr = value->Des();     
+         
+    User::LeaveIfError(iWmdrmContentObject->GetStringAttribute(attribute, valuePtr));     
+    WriteL(aMessage, 1, valuePtr);     
+         
+    CleanupStack::PopAndDestroy(value);     
+    }     
+         
+void CRtaDataHandler::GetWMDRMAttributeSetL(const RMessage2& aMessage)     
+    {     
+    RAttributeSet attributeSet;     
+    CleanupClosePushL(attributeSet);     
+         
+    HBufC8* value = ReadDes8LC(aMessage, 0);     
+    TPtr8 valuePtr = value->Des();     
+    RDesReadStream readStream(valuePtr);     
+    CleanupClosePushL(readStream);     
+         
+    attributeSet.InternalizeL(readStream);     
+    CleanupStack::PopAndDestroy(2, value);     
+         
+    iWmdrmContentObject->GetAttributeSet(attributeSet);     
+      
+    // Write the object out to a buffer, send to client     
+    CBufFlat* buf = CBufFlat::NewL(50);     
+    CleanupStack::PushL(buf);     
+    // create write stream     
+    RBufWriteStream writeStream(*buf);     
+    CleanupClosePushL(writeStream);     
+         
+    // write the directory to the stream     
+    attributeSet.ExternalizeL(writeStream);     
+    CleanupStack::PopAndDestroy(&writeStream);     
+         
+    TPtr8 bufPtr = buf->Ptr(0);     
+    WriteL(aMessage, 0, bufPtr);     
+             
+    CleanupStack::PopAndDestroy(2, &attributeSet); // buf, attributeSet     
+    }     
+         
+void CRtaDataHandler::GetWMDRMStringAttributeSetL(const RMessage2& aMessage)     
+    {     
+    RStringAttributeSet attributeSet;     
+    CleanupClosePushL(attributeSet);     
+         
+    HBufC8* value = ReadDes8LC(aMessage, 0);     
+    TPtr8 valuePtr = value->Des();     
+    RDesReadStream readStream(valuePtr);     
+    CleanupClosePushL(readStream);     
+         
+    attributeSet.InternalizeL(readStream);     
+    CleanupStack::PopAndDestroy(2, value);     
+         
+    iWmdrmContentObject->GetStringAttributeSet(attributeSet);     
+      
+    // Write the object out to a buffer, send to client     
+    CBufFlat* buf = CBufFlat::NewL(50);     
+    CleanupStack::PushL(buf);     
+    // create write stream     
+    RBufWriteStream writeStream(*buf);     
+    CleanupClosePushL(writeStream);     
+         
+    // write the directory to the stream     
+    attributeSet.ExternalizeL(writeStream);     
+    CleanupStack::PopAndDestroy(&writeStream);     
+         
+    TPtr8 bufPtr = buf->Ptr(0);     
+    WriteL(aMessage, 0, bufPtr);     
+             
+    CleanupStack::PopAndDestroy(2, &attributeSet); // buf, attributeSet     
+    }        
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
--- a/contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Server/rtadatahandler.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Server/rtadatahandler.h	Mon Oct 12 10:17:04 2009 +0300
@@ -30,6 +30,10 @@
 #include "RTAserver.h"
 #include "rtamessagehandler.h"
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+#include "wmdrmcontentparser.h"     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
 namespace ReferenceTestAgent
 	{
 	class CRefTestAgentArchive;
@@ -60,6 +64,14 @@
 		void GetStringAttributeL(const RMessage2& aMessage);
 		void GetStringAttributeSetL(const RMessage2& aMessage);
 		void SetPropertyL(const RMessage2& aMessage);
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+        void ReadWMDRMHeaderL(const RMessage2& aMessage);     
+        void DecryptWMDRMDataPacketL(const RMessage2& aMessage);     
+        void GetWMDRMAttributeL(const RMessage2& aMessage);     
+        void GetWMDRMStringAttributeL(const RMessage2& aMessage);     
+        void GetWMDRMAttributeSetL(const RMessage2& aMessage);     
+        void GetWMDRMStringAttributeSetL(const RMessage2& aMessage);     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT    
 
 	private:
 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
@@ -71,6 +83,9 @@
 		
 		// this pointer should not be deleted since it points to something owned by iArchive
 		CDrmFileContent* iContentObject;
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT          
+        CWmdrmContentParser* iWmdrmContentObject;     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
 		};
 	} //namespace
 
--- a/contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Server/rtamanagerhandler.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Server/rtamanagerhandler.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -68,6 +68,9 @@
 	{
 	delete iArchive;
 	iFile.Close();
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    delete iWmdrmContentObject;     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
 	}
 
 void CRtaManagerHandler::ServiceL(const RMessage2& aMessage)
@@ -170,6 +173,27 @@
 	case ENoEnforceManagerDisplayManagementInfo:
 		DisplayManagementInfoL(aMessage);
 		break;
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    case EWMDRMGetAttribute:     
+    case ENoEnforceWMDRMGetAttribute:     
+        GetWMDRMAttributeL(aMessage);     
+        break;     
+             
+    case EWMDRMGetAttributeSet:     
+    case ENoEnforceWMDRMGetAttributeSet:     
+        GetWMDRMAttributeSetL(aMessage);     
+        break;     
+         
+    case EWMDRMGetStringAttribute:     
+    case ENoEnforceWMDRMGetStringAttribute:     
+        GetWMDRMStringAttributeL(aMessage);     
+        break;     
+             
+    case EWMDRMGetStringAttributeSet:     
+    case ENoEnforceWMDRMGetStringAttributeSet:     
+        GetWMDRMStringAttributeSetL(aMessage);     
+        break;     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
 	default:
 		CRtaSession::PanicClient(aMessage,EPanicIllegalFunction);
 		break;
@@ -545,3 +569,109 @@
 	{
 	User::Leave(KErrCANotSupported);
 	}
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+      
+void CRtaManagerHandler::OpenWmdrmContentObjectL(const RMessage2& aMessage, TInt aHeaderParameter)     
+    {     
+    HBufC8* headerData = ReadDesC8LC(aMessage, aHeaderParameter);        
+    iWmdrmContentObject = CWmdrmContentParser::NewL(*headerData);     
+         
+    CleanupStack::PopAndDestroy(headerData);     
+    }     
+      
+void CRtaManagerHandler::GetWMDRMAttributeL(const RMessage2& aMessage)     
+    {     
+    OpenWmdrmContentObjectL(aMessage, 0);     
+         
+    TInt attribute = aMessage.Int1();     
+    TInt value;     
+    TPckg<TInt> valuePckg(value);     
+      
+    User::LeaveIfError(iWmdrmContentObject->GetAttribute(attribute, value));     
+    WriteL(aMessage, 2, valuePckg);     
+    }     
+         
+void CRtaManagerHandler::GetWMDRMStringAttributeL(const RMessage2& aMessage)     
+    {     
+    OpenWmdrmContentObjectL(aMessage, 0);     
+      
+    TInt attribute = aMessage.Int1();     
+    HBufC* value = ReadDes16LC(aMessage, 2);     
+    TPtr valuePtr = value->Des();     
+      
+    User::LeaveIfError(iWmdrmContentObject->GetStringAttribute(attribute, valuePtr));     
+    WriteL(aMessage, 2, valuePtr);     
+         
+    CleanupStack::PopAndDestroy(value);     
+    }     
+         
+void CRtaManagerHandler::GetWMDRMAttributeSetL(const RMessage2& aMessage)     
+    {     
+    OpenWmdrmContentObjectL(aMessage, 0);     
+         
+    RAttributeSet attributeSet;     
+    CleanupClosePushL(attributeSet);     
+         
+    HBufC8* value = ReadDes8LC(aMessage, 1);     
+    TPtr8 valuePtr = value->Des();     
+    RDesReadStream readStream(valuePtr);     
+    CleanupClosePushL(readStream);     
+         
+    attributeSet.InternalizeL(readStream);     
+    CleanupStack::PopAndDestroy(2, value);     
+         
+    iWmdrmContentObject->GetAttributeSet(attributeSet);     
+      
+    // Write the object out to a buffer, send to client     
+    CBufFlat* buf = CBufFlat::NewL(50);     
+    CleanupStack::PushL(buf);     
+    // create write stream     
+    RBufWriteStream writeStream(*buf);     
+    CleanupClosePushL(writeStream);     
+         
+    // write the directory to the stream     
+    attributeSet.ExternalizeL(writeStream);     
+    CleanupStack::PopAndDestroy(&writeStream);     
+         
+    TPtr8 bufPtr = buf->Ptr(0);     
+    WriteL(aMessage, 1, bufPtr);     
+             
+    CleanupStack::PopAndDestroy(2, &attributeSet); // buf, attributeSet     
+    }     
+         
+void CRtaManagerHandler::GetWMDRMStringAttributeSetL(const RMessage2& aMessage)     
+    {     
+    OpenWmdrmContentObjectL(aMessage, 0);     
+         
+    RStringAttributeSet attributeSet;     
+    CleanupClosePushL(attributeSet);     
+         
+    HBufC8* value = ReadDes8LC(aMessage, 1);     
+    TPtr8 valuePtr = value->Des();     
+    RDesReadStream readStream(valuePtr);     
+    CleanupClosePushL(readStream);     
+         
+    attributeSet.InternalizeL(readStream);     
+    CleanupStack::PopAndDestroy(2, value);     
+         
+    iWmdrmContentObject->GetStringAttributeSet(attributeSet);     
+      
+    // Write the object out to a buffer, send to client     
+    CBufFlat* buf = CBufFlat::NewL(50);     
+    CleanupStack::PushL(buf);     
+    // create write stream     
+    RBufWriteStream writeStream(*buf);     
+    CleanupClosePushL(writeStream);     
+         
+    // write the directory to the stream     
+    attributeSet.ExternalizeL(writeStream);     
+    CleanupStack::PopAndDestroy(&writeStream);     
+         
+    TPtr8 bufPtr = buf->Ptr(0);     
+    WriteL(aMessage, 1, bufPtr);     
+             
+    CleanupStack::PopAndDestroy(2, &attributeSet); // buf, attributeSet     
+    }     
+      
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
--- a/contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Server/rtamanagerhandler.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Server/rtamanagerhandler.h	Mon Oct 12 10:17:04 2009 +0300
@@ -30,6 +30,10 @@
 #include "clientserver.h"
 #include "RTAserver.h"
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+#include "wmdrmcontentparser.h"     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
 namespace ReferenceTestAgent
 	{
 	class CRefTestAgentArchive;
@@ -78,6 +82,15 @@
 		 */
 		void OpenContentObjectL(const RMessage2& aMessage, TInt aUriOrFileSession, TInt aUniqueIdOrFileHandle);
 		void WriteCDirToMessageL(const RMessage2& aMessage, TInt aParam, CDir& aDir);
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+        void GetWMDRMAttributeL(const RMessage2& aMessage);     
+        void GetWMDRMStringAttributeL(const RMessage2& aMessage);     
+        void GetWMDRMAttributeSetL(const RMessage2& aMessage);     
+        void GetWMDRMStringAttributeSetL(const RMessage2& aMessage);     
+             
+        void OpenWmdrmContentObjectL(const RMessage2& aMessage, TInt aParameter);     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
 	private:
 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
 		RFile64 iFile;
@@ -89,6 +102,9 @@
 		
 		// this pointer should not be deleted since it points to something owned by iArchive
 		CDrmFileContent* iContentObject;
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+        CWmdrmContentParser* iWmdrmContentObject;     
+#endif  //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
 		};
 	
 	} //namespace
--- a/contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentcontent.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentcontent.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -51,6 +51,22 @@
 	self->ConstructL(aFile);
 	return self;
 	}
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+CRefTestAgentContent* CRefTestAgentContent::NewL(const TDesC8& aHeaderData)  
+	{
+	CRefTestAgentContent* self = NewLC(aHeaderData);    
+    CleanupStack::Pop(self);
+    return self;
+	}
+          
+CRefTestAgentContent* CRefTestAgentContent::NewLC(const TDesC8& aHeaderData)  
+	{
+    CRefTestAgentContent* self = new (ELeave) CRefTestAgentContent;
+	CleanupStack::PushL(self);  
+	self->ConstructL(aHeaderData);
+	return self;
+	}
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 
 
 CRefTestAgentContent::CRefTestAgentContent() 
@@ -60,6 +76,9 @@
 CRefTestAgentContent::~CRefTestAgentContent()
 	{
 	iContentSession.Close();
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    delete iHeaderData;
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 	}
   
 void CRefTestAgentContent::ConstructL(const TDesC& aURI, TContentShareMode aShareMode)
@@ -96,6 +115,14 @@
 	CleanupStack::PopAndDestroy(&file);
 	}
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+void CRefTestAgentContent::ConstructL(const TDesC8& aHeaderData)     
+    {     
+    iHeaderData = aHeaderData.AllocL();     
+    User::LeaveIfError(iContentSession.Open(aHeaderData));     
+    }     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
 TInt CRefTestAgentContent::OpenContainer(const TDesC& aUniqueId)
 	{
 	return iContentSession.OpenContainer(aUniqueId);
@@ -123,22 +150,50 @@
 
 TInt CRefTestAgentContent::GetAttribute(TInt aAttribute, TInt& aValue, const TDesC& aUniqueId)
 	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    if(iHeaderData != NULL)  
+        return iContentSession.GetWmdrmAttribute(aUniqueId, aAttribute, aValue); 
+    else
+        return iContentSession.GetAttribute(aUniqueId, aAttribute, aValue);
+#else
 	return iContentSession.GetAttribute(aUniqueId, aAttribute, aValue);
+#endif
 	}
 
 TInt CRefTestAgentContent::GetAttributeSet(RAttributeSet& aAttributeSet, const TDesC& aUniqueId)
 	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    if(iHeaderData != NULL)
+        return iContentSession.GetWmdrmAttributeSet(aUniqueId, aAttributeSet);
+    else
+        return iContentSession.GetAttributeSet(aUniqueId, aAttributeSet);
+#else
 	return iContentSession.GetAttributeSet(aUniqueId, aAttributeSet);
+#endif
 	}
 
 TInt CRefTestAgentContent::GetStringAttribute(TInt aAttribute, TDes& aValue, const TDesC& aUniqueId)
 	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    if(iHeaderData != NULL)
+        return iContentSession.GetWmdrmStringAttribute(aUniqueId, aAttribute, aValue);
+    else
+        return iContentSession.GetStringAttribute(aUniqueId, aAttribute, aValue);
+#else
 	return iContentSession.GetStringAttribute(aUniqueId, aAttribute, aValue);
+#endif
 	}
 
 TInt CRefTestAgentContent::GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet, const TDesC& aUniqueId)
 	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    if(iHeaderData != NULL)
+        return iContentSession.GetWmdrmStringAttributeSet(aUniqueId, aStringAttributeSet);
+    else
+        return iContentSession.GetStringAttributeSet(aUniqueId, aStringAttributeSet);
+#else
 	return iContentSession.GetStringAttributeSet(aUniqueId, aStringAttributeSet);
+#endif
 	}
 
 TInt CRefTestAgentContent::AgentSpecificCommand(TInt aCommand, const TDesC8& aInputBuffer, TDes8& aOutputBuffer)
--- a/contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentcontent.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentcontent.h	Mon Oct 12 10:17:04 2009 +0300
@@ -37,6 +37,11 @@
 	static CRefTestAgentContent* NewL(RFile& aFile);
 	static CRefTestAgentContent* NewLC(RFile& aFile);
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+        static CRefTestAgentContent* NewL(const TDesC8& aHeaderData);     
+        static CRefTestAgentContent* NewLC(const TDesC8& aHeaderData);     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
 	virtual ~CRefTestAgentContent();
 
 public: 
@@ -63,8 +68,17 @@
 	CRefTestAgentContent();
 	void ConstructL(const TDesC& aURI, ContentAccess::TContentShareMode aShareMode);
 	void ConstructL(RFile& aFile);
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+        void ConstructL(const TDesC8& aHeaderData);     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
 		
 private:
 	ReferenceTestAgent::RRtaContent iContentSession;
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+        HBufC8* iHeaderData;     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
 	};
 #endif // __REFTestAgentContent_H__
--- a/contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentdata.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentdata.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -53,6 +53,31 @@
 	return self;
 	}
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+      
+CRefTestAgentData* CRefTestAgentData::NewL(const TDesC8& aHeaderData)     
+    {     
+    CRefTestAgentData* self = NewLC(aHeaderData);     
+    CleanupStack::Pop(self);     
+    return self;     
+    }     
+      
+CRefTestAgentData* CRefTestAgentData::NewLC(const TDesC8& aHeaderData)     
+    {     
+    CRefTestAgentData* self = new (ELeave) CRefTestAgentData;     
+    CleanupStack::PushL(self);     
+    self->ConstructL(aHeaderData);     
+    return self;     
+    }     
+         
+void CRefTestAgentData::ConstructL(const TDesC8& aHeaderData)     
+    {     
+    iHeaderData = aHeaderData.AllocL();     
+    User::LeaveIfError(iServer.Open(aHeaderData));     
+    }     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+  
+
 CRefTestAgentData::CRefTestAgentData()
 	{
 	}
@@ -60,6 +85,9 @@
 CRefTestAgentData::~CRefTestAgentData()
 	{
 	iServer.Close();
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    delete iHeaderData;     
+#endif 
 	}
   
 void CRefTestAgentData::ConstructL(const TVirtualPathPtr& aVirtualPath, TContentShareMode aShareMode)
@@ -181,22 +209,50 @@
 
 TInt CRefTestAgentData::GetAttribute(TInt aAttribute, TInt& aValue)
 	{
-	return iServer.GetAttribute(aAttribute, aValue);
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    if(iHeaderData != NULL)     
+        return iServer.GetWmdrmAttribute(aAttribute, aValue);     
+    else     
+        return iServer.GetAttribute(aAttribute, aValue);     
+#else     
+    return iServer.GetAttribute(aAttribute, aValue);
+#endif
 	}
 
 TInt CRefTestAgentData::GetAttributeSet(RAttributeSet& aAttributeSet)
 	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    if(iHeaderData != NULL)     
+        return iServer.GetWmdrmAttributeSet(aAttributeSet);     
+    else     
+        return iServer.GetAttributeSet(aAttributeSet);     
+#else 
 	return iServer.GetAttributeSet(aAttributeSet);
+#endif
 	}
 
 TInt CRefTestAgentData::GetStringAttribute(TInt aAttribute, TDes& aValue)
 	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    if(iHeaderData != NULL)     
+        return iServer.GetWmdrmStringAttribute(aAttribute, aValue);     
+    else     
+        return iServer.GetStringAttribute(aAttribute, aValue);     
+#else 
 	return iServer.GetStringAttribute(aAttribute, aValue);
+#endif
 	}
 
 TInt CRefTestAgentData::GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet)
 	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    if(iHeaderData != NULL)     
+        return iServer.GetWmdrmStringAttributeSet(aStringAttributeSet);     
+    else     
+        return iServer.GetStringAttributeSet(aStringAttributeSet);     
+#else    
 	return iServer.GetStringAttributeSet(aStringAttributeSet);
+#endif
 	}
 
 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
@@ -226,3 +282,18 @@
 	// cannot be a situation where the consumer waits for an asynchronous operation to complete
 	}
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+      
+TInt CRefTestAgentData::Read(const TDesC8& aEncryptedInputDataPacket, TDes8& aDecryptedOutputDataPacket)     
+    {     
+    return iServer.Read(aEncryptedInputDataPacket, aDecryptedOutputDataPacket);     
+    }     
+                 
+void CRefTestAgentData::Read(const TDesC8& aEncryptedInputDataPacket, TDes8& aDecryptedOutputDataPacket, TRequestStatus& aStatus)     
+    {     
+    TInt err = Read(aEncryptedInputDataPacket, aDecryptedOutputDataPacket);     
+    TRequestStatus* status = &aStatus;     
+    User::RequestComplete(status, err);     
+    }     
+      
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
--- a/contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentdata.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentdata.h	Mon Oct 12 10:17:04 2009 +0300
@@ -34,6 +34,11 @@
 		static CRefTestAgentData* NewL(RFile& aFile, const TDesC& aUniqueId);
 		static CRefTestAgentData* NewLC(RFile& aFile, const TDesC& aUniqueId);
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+        static CRefTestAgentData* NewL(const TDesC8& aHeaderData);     
+        static CRefTestAgentData* NewLC(const TDesC8& aHeaderData);     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
 		virtual ~CRefTestAgentData();
 
 	public: // From CAgentData
@@ -59,13 +64,24 @@
 		virtual TInt Read64(TInt64 aPos, TDes8& aDes, TInt aLength, TRequestStatus& aStatus);
 #endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+        virtual TInt Read(const TDesC8& aEncryptedInputDataPacket, TDes8& aDecryptedOutputDataPacket);           
+        virtual void Read(const TDesC8& aEncryptedInputDataPacket, TDes8& aDecryptedOutputDataPacket, TRequestStatus& aStatus);     
+#endif  //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
 	private:
 		CRefTestAgentData();
 		void ConstructL(const ContentAccess::TVirtualPathPtr& aVirtualPath, ContentAccess::TContentShareMode aShareMode);
 		void ConstructL(RFile& aFile, const TDesC& aUniqueId);
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+        void ConstructL(const TDesC8& aHeaderData);     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
 		
 	private:
 		ReferenceTestAgent::RRtaData iServer;
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+        HBufC8* iHeaderData;     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
 		};
 
 #endif // __REFTESTAGENTCONSUMER_H__
--- a/contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentfactory.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentfactory.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -71,3 +71,14 @@
 	return CRefTestAgentRightsManager::NewL();
 	}
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+CAgentData* CRefTestAgentFactory::CreateDataConsumerL(const TDesC8& aHeaderData)     
+    {     
+    return CRefTestAgentData::NewL(aHeaderData);     
+    }     
+      
+CAgentContent* CRefTestAgentFactory::CreateContentBrowserL(const TDesC8& aHeaderData)     
+    {     
+    return CRefTestAgentContent::NewL(aHeaderData);     
+    }     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
--- a/contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentfactory.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentfactory.h	Mon Oct 12 10:17:04 2009 +0300
@@ -37,6 +37,10 @@
 		virtual ContentAccess::CAgentImportFile* CreateImporterL(const TDesC8& aMimeType, const ContentAccess::CMetaDataArray& aMetaDataArray, const TDesC& aOutputDirectory, const TDesC& aSuggestedFileName);
 		virtual ContentAccess::CAgentImportFile* CreateImporterL(const TDesC8& aMimeType, const ContentAccess::CMetaDataArray& aMetaDataArray);
 		virtual ContentAccess::CAgentRightsManager* CreateRightsManagerL();	
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+        virtual ContentAccess::CAgentData* CreateDataConsumerL(const TDesC8& aHeaderData);     
+        virtual ContentAccess::CAgentContent* CreateContentBrowserL(const TDesC8& aHeaderData);     
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT   
 		};
 
 #endif // __REFTESTAGENTFACTORY_H__
--- a/contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentmanager.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentmanager.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -220,7 +220,6 @@
 TBool CRefTestAgentManager::IsRecognizedL(const TDesC& aUri, TContentShareMode /*aShareMode*/) const
 	{
 	TBool result = EFalse;
-	
 	// Check that the file has content only, otherwise it should
 	// be put through the supplier API before it can be used
 	TPtrC extension(aUri.Right(KRtaExtensionContent().Length()));
@@ -238,7 +237,15 @@
 	// Get the name of the file
 	TFileName fileName;
 	aFile.Name(fileName);
-
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    TPtrC extension(fileName.Right(KRtaExtensionContent().Length()));     
+    TPtrC wmdrmExtn(fileName.Right(KRtaWmdrmFileExtension().Length()));     
+    if((extension.CompareF(KRtaExtensionContent) == 0) || (wmdrmExtn.CompareF(KRtaWmdrmFileExtension) == 0))     
+        {     
+        result = ETrue;     
+        }     
+      
+#else 
 	// Check that the file has content only, otherwise it should
 	// be put through the supplier API before it can be used
 	TPtrC extension(fileName.Right(KRtaExtensionContent().Length()));
@@ -246,6 +253,7 @@
 		{
 		result = ETrue;
 		}
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 	return result;
 	}
 
@@ -255,6 +263,22 @@
 	
 	// Check filename extension
 	TPtrC extension(aFileName.Right(KRtaExtensionContent().Length()));
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    TPtrC wmdrmExtn(aFileName.Right(KRtaWmdrmFileExtension().Length()));     
+    if(wmdrmExtn.CompareF(KRtaWmdrmFileExtension) == 0)     
+        {     
+        aFileMimeType.Copy(KRtaWmaContentType);     
+        aContentMimeType.Copy(KRtaWmaContentType);     
+        result = ETrue;     
+        }     
+         
+    else if(extension.CompareF(KRtaExtensionContent) == 0)     
+        {     
+        aFileMimeType.Copy(KRtaMimeContent());     
+        CRefTestAgentArchive::GetDefaultMimeTypeFromHeaderL(aBuffer, aContentMimeType);     
+        result = ETrue;      
+        }     
+#else    
 	if(extension.CompareF(KRtaExtensionContent) == 0)
 		{
 		// It's a content file ready for applications to read
@@ -262,6 +286,7 @@
 		CRefTestAgentArchive::GetDefaultMimeTypeFromHeaderL(aBuffer, aContentMimeType);
 		result = ETrue;	
 		}
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 	else
 		{
 		extension.Set(aFileName.Right(KRtaExtensionContentRights().Length()));
@@ -336,3 +361,51 @@
 #endif
 
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+      
+TBool CRefTestAgentManager::IsRecognizedL(const TDesC8& aHeaderData) const
+    {
+    TBool result = EFalse;
+    if(aHeaderData.Find(KRtaAsfHeaderObject) != KErrNotFound)     
+        {     
+        result = ETrue;     
+        }     
+             
+    return result;     
+    }
+     
+TBool CRefTestAgentManager::RecognizeContentL(const TDesC8& aHeaderData, TDes8& aFileMimeType, TDes8& aContentMimeType) const     
+    {     
+    TBool result = EFalse;     
+    if(aHeaderData.Find(KRtaAsfHeaderObject) != KErrNotFound)     
+        {     
+        aFileMimeType.Copy(KRtaWmaContentType);     
+        aContentMimeType.Copy(KRtaWmaContentType);     
+        result = ETrue;     
+        }     
+         
+    return result;     
+    }     
+         
+TInt CRefTestAgentManager::GetAttribute(const TDesC8& aHeaderData, TInt aAttribute, TInt& aValue)     
+    {     
+    return iManagerSession.GetAttribute(aHeaderData, aAttribute, aValue);     
+    }     
+      
+TInt CRefTestAgentManager::GetAttributeSet(const TDesC8& aHeaderData, RAttributeSet& aAttributeSet)     
+    {     
+    return iManagerSession.GetAttributeSet(aHeaderData, aAttributeSet);     
+    }     
+      
+TInt CRefTestAgentManager::GetStringAttribute(const TDesC8& aHeaderData, TInt aAttribute, TDes& aValue)      
+    {     
+    return iManagerSession.GetStringAttribute(aHeaderData, aAttribute, aValue);     
+    }     
+      
+TInt CRefTestAgentManager::GetStringAttributeSet(const TDesC8& aHeaderData, RStringAttributeSet& aAttributeSet)      
+    {     
+    return iManagerSession.GetStringAttributeSet(aHeaderData, aAttributeSet);     
+    }     
+         
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
--- a/contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentmanager.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/RefTestAgent/Reftestagentmanager.h	Mon Oct 12 10:17:04 2009 +0300
@@ -70,6 +70,15 @@
 		virtual void AgentSpecificCommand(TInt aCommand, const TDesC8& aInputBuffer, TDes8& aOutputBuffer, TRequestStatus& aStatus);
 		virtual void DisplayManagementInfoL();
 		virtual void PrepareHTTPRequestHeaders(RStringPool& aStringPool, RHTTPHeaders& aRequestHeaders) const;
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+        virtual TBool IsRecognizedL(const TDesC8& aHeaderData) const;     
+        virtual TBool RecognizeContentL(const TDesC8& aHeaderData, TDes8& aFileMimeType, TDes8& aContentMimeType) const;     
+        virtual TInt GetAttribute(const TDesC8& aHeaderData, TInt aAttribute, TInt& aValue);     
+        virtual TInt GetAttributeSet(const TDesC8& aHeaderData, ContentAccess::RAttributeSet& aAttributeSet);     
+        virtual TInt GetStringAttributeSet(const TDesC8& aHeaderData, ContentAccess::RStringAttributeSet& aAttributeSet);     
+        virtual TInt GetStringAttribute(const TDesC8& aHeaderData, TInt aAttribute, TDes& aValue);     
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
 	private:
 		CRefTestAgentManager();
 		void ConstructL();
--- a/contentmgmt/referencedrmagent/RefTestAgent/group/RTAclient.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/group/RTAclient.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -34,7 +34,11 @@
 UNPAGED
 
 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+deffile     rtaclient_v3.def
+#else
 deffile		rtaclient_v2.def
+#endif
 #else
 deffile		rtaclient.def
 #endif
--- a/contentmgmt/referencedrmagent/RefTestAgent/group/RTAparser.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/group/RTAparser.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -32,7 +32,11 @@
 UNPAGED
 
 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+deffile     rtaparser_v3.def
+#else
 deffile		rtaparser_v2.def
+#endif
 #else
 deffile		rtaparser.def
 #endif
@@ -58,6 +62,10 @@
 SOURCE		rightscriteriacount.cpp
 SOURCE		rightscriteriaexpiry.cpp
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+SOURCE          wmdrmcontentparser.cpp 
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
 USERINCLUDE		../RTAParser
 USERINCLUDE		../inc
 
--- a/contentmgmt/referencedrmagent/RefTestAgent/group/dummytestagent.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/group/dummytestagent.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -37,9 +37,7 @@
 USERINCLUDE		../inc
 USERINCLUDE		../dummytestagent
 
-SYSTEMINCLUDE	/epoc32/include 
-SYSTEMINCLUDE	/epoc32/include/caf
-SYSTEMINCLUDE	/epoc32/include/ecom
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 start resource E1010101.rss
 target dummytestagent.rsc
--- a/contentmgmt/referencedrmagent/RefTestAgent/group/rtautils.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/group/rtautils.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -37,10 +37,8 @@
 USERINCLUDE		../inc
 USERINCLUDE		../RTAUtils/source
 
-SYSTEMINCLUDE	/epoc32/include
-SYSTEMINCLUDE	/epoc32/include/caf
-SYSTEMINCLUDE	/epoc32/include/test
-SYSTEMINCLUDE	/epoc32/include/ecom
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY		testexecutelogclient.lib
 LIBRARY		testexecuteutils.lib
--- a/contentmgmt/referencedrmagent/RefTestAgent/group/srautils.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/group/srautils.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -29,6 +29,7 @@
 
 USERINCLUDE 	../streamingrefagent/inc
 MW_LAYER_SYSTEMINCLUDE_SYMBIAN
+APP_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 SOURCEPATH 	../streamingrefagent/source/utils
 SOURCE		srautils.cpp
--- a/contentmgmt/referencedrmagent/RefTestAgent/inc/reftestagentconstants.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/inc/reftestagentconstants.h	Mon Oct 12 10:17:04 2009 +0300
@@ -39,6 +39,15 @@
 _LIT(KRtaDefaultOutputDirectory, "c:\\");
 _LIT(KRtaDefaultOutputFile, "output");
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+      
+// Asf header object GUID.
+_LIT8(KRtaAsfHeaderObject, "75B22630668E11CFA6D900AA0062CE6C");
+_LIT8(KRtaWmaContentType, "audio/x-ms-wma");
+_LIT(KRtaWmdrmFileExtension, ".asf");
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+      
+
 // combine KRtaDefaultOutputDirectory, KRtaDefaultOutputFile and
 // KRtaExtensionContent
 _LIT(KRtaDefaultOutputPath, "c:\\output.content");
--- a/contentmgmt/referencedrmagent/RefTestAgent/inc/rtaclient.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/inc/rtaclient.h	Mon Oct 12 10:17:04 2009 +0300
@@ -30,6 +30,8 @@
 
 namespace ReferenceTestAgent
 	{
+	const TInt KDefaultBufferSize = 2048;
+	
 	class RRtaClient : public RSessionBase
 		{
 	protected:
--- a/contentmgmt/referencedrmagent/RefTestAgent/inc/rtacontent.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/inc/rtacontent.h	Mon Oct 12 10:17:04 2009 +0300
@@ -55,11 +55,25 @@
 		IMPORT_C TInt CancelRequestRights(const TDesC& aUniqueId) const;
 		IMPORT_C void DisplayInfoL(ContentAccess::TDisplayInfo aInfo, const TDesC& aUniqueId) const;
 		IMPORT_C TInt SetProperty(ContentAccess::TAgentProperty aProperty, TInt aValue) const;
+		
+		#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+        IMPORT_C TInt Open(const TDesC8& aHeaderData);
+        IMPORT_C TInt GetWmdrmAttribute(const TDesC& aUniqueId, TInt aAttribute, TInt &aValue) const;
+        IMPORT_C TInt GetWmdrmAttributeSet(const TDesC& aUniqueId, ContentAccess::RAttributeSet &aAttributeSet) const; 
+        IMPORT_C TInt GetWmdrmStringAttribute(const TDesC& aUniqueId, TInt aAttribute, TDes &aValue) const; 
+        IMPORT_C TInt GetWmdrmStringAttributeSet(const TDesC& aUniqueId, ContentAccess::RStringAttributeSet &aStringAttributeSet) const;
+		#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 
 	private:
 		void SearchL (ContentAccess::RStreamablePtrArray< ContentAccess::CEmbeddedObject > &aArray, const TDesC8 &aMimeType, TBool aRecursive) const;
-		void GetAttributeSetL (const TDesC& aUniqueId, ContentAccess::RAttributeSet &aAttributeSet) const; 
-		void GetStringAttributeSetL (const TDesC& aUniqueId, ContentAccess::RStringAttributeSet &aStringAttributeSet) const; 
+		
+		#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+            void GetAttributeSetL(const TDesC& aUniqueId, ContentAccess::RAttributeSet &aAttributeSet, TBool aWmdrmFlag = EFalse) const;
+            void GetStringAttributeSetL(const TDesC& aUniqueId, ContentAccess::RStringAttributeSet &aStringAttributeSet, TBool aWmdrmFlag = EFalse) const;
+		#else
+			void GetAttributeSetL (const TDesC& aUniqueId, ContentAccess::RAttributeSet &aAttributeSet) const;
+			void GetStringAttributeSetL (const TDesC& aUniqueId, ContentAccess::RStringAttributeSet &aStringAttributeSet) const;
+		#endif
 		};
 	} // namespace
 #endif
--- a/contentmgmt/referencedrmagent/RefTestAgent/inc/rtadata.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/inc/rtadata.h	Mon Oct 12 10:17:04 2009 +0300
@@ -55,10 +55,24 @@
 		IMPORT_C TInt GetStringAttribute (TInt aAttribute, TDes &aValue) const; 
 		IMPORT_C TInt GetStringAttributeSet (ContentAccess::RStringAttributeSet &aStringAttributeSet) const; 
 		IMPORT_C TInt SetProperty(ContentAccess::TAgentProperty aProperty, TInt aValue) const;
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+        IMPORT_C TInt Open(const TDesC8& aHeaderData);
+        IMPORT_C TInt Read(const TDesC8& aEncryptedInputPacket, TDes8& aDecryptedOutputPacket);
+        IMPORT_C TInt GetWmdrmAttribute(TInt aAttribute, TInt &aValue) const;
+        IMPORT_C TInt GetWmdrmAttributeSet(ContentAccess::RAttributeSet &aAttributeSet) const;
+        IMPORT_C TInt GetWmdrmStringAttribute(TInt aAttribute, TDes &aValue) const;
+        IMPORT_C TInt GetWmdrmStringAttributeSet(ContentAccess::RStringAttributeSet &aStringAttributeSet) const;
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 		
 	private:
-		void GetAttributeSetL (ContentAccess::RAttributeSet &aAttributeSet) const; 
-		void GetStringAttributeSetL (ContentAccess::RStringAttributeSet &aStringAttributeSet) const; 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+        void GetAttributeSetL (ContentAccess::RAttributeSet &aAttributeSet, TBool aWmdrmFlag = EFalse) const;
+        void GetStringAttributeSetL (ContentAccess::RStringAttributeSet &aStringAttributeSet, TBool aWmdrmFlag = EFalse) const;
+#else
+		void GetAttributeSetL (ContentAccess::RAttributeSet &aAttributeSet) const;
+		void GetStringAttributeSetL (ContentAccess::RStringAttributeSet &aStringAttributeSet) const;
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 		};
 	} // namespace
 #endif
--- a/contentmgmt/referencedrmagent/RefTestAgent/inc/rtamanager.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/inc/rtamanager.h	Mon Oct 12 10:17:04 2009 +0300
@@ -73,6 +73,12 @@
 		IMPORT_C void DisplayInfoL(ContentAccess::TDisplayInfo aInfo, RFile& aFile, const TDesC& aUniqueId) const;
 		IMPORT_C TInt AgentSpecificCommand(TInt aCommand, const TDesC8& aInputBuffer, TDes8& aOutputBuffer) const;		 
 		IMPORT_C void DisplayManagementInfoL() const;
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+        IMPORT_C TInt GetAttribute(const TDesC8& aHeaderData, TInt aAttribute, TInt& aValue) const;
+        IMPORT_C TInt GetAttributeSet(const TDesC8& aHeaderData, ContentAccess::RAttributeSet& aAttributeSet) const;
+        IMPORT_C TInt GetStringAttributeSet(const TDesC8& aHeaderData, ContentAccess::RStringAttributeSet& aAttributeSet) const;
+        IMPORT_C TInt GetStringAttribute(const TDesC8& aHeaderData, TInt aAttribute, TDes& aValue) const;
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 
 	private:
 		enum TRetrievalType
@@ -90,6 +96,11 @@
 		void GetStringAttributeSetL(ContentAccess::RStringAttributeSet& aStringAttributeSet, RFile& aFile, const TDesC& aUniqueId) const;
 		void AttributeSetL(const TRetrievalType& aRetrievalType,const ContentAccess::TVirtualPathPtr* aVirtualPath, ...) const;
 		void StringAttributeSetL(const TRetrievalType& aRetrievalType,const ContentAccess::TVirtualPathPtr* aVirtualPath, ...) const;
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+        void GetAttributeSetL(const TDesC8& aHeaderData, ContentAccess::RAttributeSet& aAttributeSet) const;
+        void GetStringAttributeSetL(const TDesC8& aHeaderData, ContentAccess::RStringAttributeSet& aAttributeSet) const;
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 		};
 	} // namespace
 #endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/RefTestAgent/inc/wmdrmcontentparser.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,62 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+/**
+ @file
+ @internalComponent
+ @released
+*/
+
+#ifndef __WMDRMCONTENTPARSER_H__
+#define __WMDRMCONTENTPARSER_H__
+
+#include <e32base.h>
+#include <f32file.h>
+#include <caf/attributeset.h>
+#include <caf/stringattributeset.h>
+
+namespace ReferenceTestAgent
+	{
+	NONSHARABLE_CLASS(CWmdrmContentParser) : public CBase
+		{
+	public:
+		IMPORT_C static CWmdrmContentParser* NewL(const TDesC8& aHeaderData);
+		virtual ~CWmdrmContentParser();
+		
+		IMPORT_C TInt GetAttribute(TInt aAttribute, TInt& aValue) const;
+		IMPORT_C TInt GetStringAttribute(TInt aAttribute, TDes& aValue) const;
+		IMPORT_C TInt GetAttributeSet(ContentAccess::RAttributeSet &aAttributeSet) const; 
+		IMPORT_C TInt GetStringAttributeSet(ContentAccess::RStringAttributeSet &aStringAttributeSet) const;
+		
+	private:
+		CWmdrmContentParser();
+		void ConstructL(const TDesC8& aHeaderData);
+		void CreateAttributeSetL();
+		void CreateStringAttributeSetL();
+		void SetAttributeL(TInt aAttribute, TInt aValue, TInt aErrorCode);
+		void SetStringAttributeL(TInt aAttribute, const TDesC& aValue, TInt aErrorCode);
+						
+	private:
+		HBufC8* iHeaderData;
+	
+		ContentAccess::RAttributeSet iAttributeSet;
+		ContentAccess::RStringAttributeSet iStringAttributeSet;
+
+		};	
+	}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/101FE8F1.rss	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,45 @@
+/*
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* UIDs quick-ref
+* ECOM DLL UID:		0x101FE8F1
+* CA Agent interface UID:	0x10204740
+* Test CAA Implementation:	0x101FE8F2
+*
+*/
+
+
+#include <ecom/registryinfo.rh>
+RESOURCE REGISTRY_INFO theInfo
+{
+	dll_uid = 0x101FE8F1;
+	interfaces =
+	{
+		INTERFACE_INFO
+		{
+		interface_uid = 0x10204740;
+		implementations = 
+			{
+			IMPLEMENTATION_INFO
+				{
+				implementation_uid = 0x101FE8F2;
+				version_no = 1;
+				display_name = "Test CA Agent (In process)";
+				default_data = "255|application/testagent.drm:application/testagent.drm"; // Sample CAF types
+				opaque_data = "";
+				}
+			};
+		}
+	};
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/TestAgentDrmContent.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,266 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <caf/caf.h>
+#include "TestAgentDrmContent.h"
+
+using namespace ContentAccess;
+
+CTestAgentDrmContent* CTestAgentDrmContent::NewL(RFile& aFile)
+	{
+	CTestAgentDrmContent *self = new (ELeave) CTestAgentDrmContent(aFile);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+CTestAgentDrmContent::CTestAgentDrmContent(RFile& aFile) : iFile(aFile)
+	{
+	}
+
+CTestAgentDrmContent::~CTestAgentDrmContent()
+	{	
+	delete iContentMimeType;
+	}	
+
+void CTestAgentDrmContent::ConstructL()
+	{
+	// buffer for reading field sizes from the file
+	TBuf8 <4> buf;
+
+	// Get size of mime type field
+	User::LeaveIfError(iFile.Read(buf,1));
+	TUint8 contentTypeLength = buf[0];
+
+	// Read mime type field
+	iContentMimeType = HBufC8::NewL((TInt) contentTypeLength);
+	TPtr8 mimePtr = iContentMimeType->Des();
+	User::LeaveIfError(iFile.Read(mimePtr, (TInt) contentTypeLength));
+	
+	// Read whether or not file has been imported yet
+	User::LeaveIfError(iFile.Read(buf,1));
+	
+	// Get size of data 
+	User::LeaveIfError(iFile.Read(buf,4));
+	iDataSize = buf[0];
+	iDataSize <<= 8;
+	iDataSize += buf[1];
+	iDataSize <<= 8;
+	iDataSize += buf[2];
+	iDataSize <<= 8;
+	iDataSize += buf[3];
+	
+	// Calculate offset of data
+	iDataOffset = 1 + 1 + 4 + contentTypeLength;
+	
+	// Go to the start of the DRM file
+	TInt pos = 0;
+	Seek(ESeekStart, pos);
+	}
+
+TInt CTestAgentDrmContent::ReadTUintvarL(TDes8& aBuffer, TInt Offset, TInt& aNumBytes) const
+	{
+	TUint8 byte;
+	TInt Value=0;
+	TBool Continue = ETrue;
+
+	for(aNumBytes = 0; Continue ; aNumBytes++)
+		{
+		Value <<= 7;
+		if(Offset + aNumBytes == aBuffer.Length())
+			User::Leave(KErrOverflow);
+
+		byte = aBuffer[Offset + aNumBytes];
+		if((byte & 0x80) == 0)
+			{
+			Continue=EFalse;
+			}
+		else 
+			{
+			byte &= 0x7F;
+			}
+
+		Value+=byte;
+		}
+	return Value;
+	}
+
+
+TInt CTestAgentDrmContent::Read(TDes8& aDes,TInt aLength)
+	{
+	return iFile.Read(aDes, aLength);
+	}
+
+void CTestAgentDrmContent::Read(TDes8& aDes, TInt aLength, TRequestStatus& aStatus)
+	{
+	iFile.Read(aDes, aLength, aStatus);
+	}
+	
+void CTestAgentDrmContent::ReadCancel(TRequestStatus& aStatus)
+{
+	iFile.ReadCancel(aStatus);
+}	
+
+TInt CTestAgentDrmContent::Seek(TSeek aMode, TInt& aPos)
+	{
+	TInt rval;
+	// Don't allow the user to seek into the OMA header, only around the data itself
+	TInt Offset;
+
+	switch(aMode)
+		{
+	case ESeekAddress:
+		// Unlikely for this case to be used
+		if(aPos > iDataSize || aPos < 0)
+			return KErrArgument;
+
+		Offset = iDataOffset + aPos;
+		rval = iFile.Seek(aMode, Offset);
+		//  Offset is populated with the ROM address, fill in aPos for the caller
+		aPos=Offset;
+		break;
+	
+	case ESeekStart:
+		if(aPos > iDataSize)
+			aPos = iDataSize;
+		if(aPos < 0)
+			return KErrArgument;
+		Offset = iDataOffset + aPos;
+		rval = iFile.Seek(aMode, Offset);
+		break;
+	case ESeekCurrent:
+		Offset = aPos;
+		rval = iFile.Seek(aMode, Offset);
+		// if we have done a seek before the start of the data
+		// do another seek to get back to the start of the data
+		if(Offset < iDataOffset)
+			{
+			Offset = iDataOffset;
+			rval = iFile.Seek(ESeekStart, Offset);
+			aPos = 0;
+			}
+		else
+			{
+			aPos = Offset - iDataOffset;
+			}
+		break;
+	case ESeekEnd:
+		// offsets are negative for ESeekEnd
+		Offset = aPos;
+		if(Offset < - iDataSize)
+			Offset = - iDataSize;
+		rval = iFile.Seek(aMode, Offset);
+		aPos = Offset - iDataOffset;
+		break;
+	default:
+		return KErrNotSupported;
+		}
+	return rval;
+	}
+
+TPtrC8 CTestAgentDrmContent::ContentMimeType()
+	{
+	return *iContentMimeType;
+	}
+
+TInt CTestAgentDrmContent::GetAttribute(TInt aAttribute, TInt& aValue)
+	{
+	TInt err = KErrNone;
+	
+	switch(aAttribute)
+		{
+	case EIsProtected:
+		aValue = ETrue;
+		break;
+	case EIsForwardable:
+		aValue = EFalse;
+		break;
+	case EIsModifyable:
+		aValue = EFalse;
+		break;
+	case EIsCopyable:
+		aValue = EFalse;
+		break;
+	case ECanPlay:
+		aValue = ETrue;
+		break;
+	case ECanPrint:
+		aValue = ETrue;
+		break;
+	case ECanExecute:
+		aValue = ETrue;
+		break;
+	case ECanView:
+		aValue = ETrue;
+		break;
+	case EPreviewAvailable:
+		aValue = EFalse;
+		break;
+	case EContentCDataInUse:
+		aValue = KErrCANotSupported;
+		break;
+	case ECanRewind:
+		aValue = ETrue;
+		break;
+	case ECopyPaste:
+		aValue = ETrue;	
+		break;
+	case ECanMove:
+		aValue = ETrue;
+		break;
+	case ECanRename:
+		aValue = ETrue;
+		break;
+	case ECanAutomaticConsume:
+		aValue = ETrue;
+		break;
+	case EContentVersion:
+	default:
+		err = KErrCANotSupported;
+		break;
+		};
+	return err;
+	}
+	
+TInt CTestAgentDrmContent::GetStringAttribute(TInt aAttribute, TDes& aValue)
+	{
+	TInt err = KErrNone;
+	switch(aAttribute)
+		{
+		// the content object
+		case EMimeType:
+		aValue.Copy(*iContentMimeType);
+		break;
+	default:
+		err = KErrCANotSupported;
+		break;
+		};
+	return err;
+	}
+
+void CTestAgentDrmContent::DataSizeL(TInt &aSize)
+	{
+	aSize = iDataSize;
+	}
+	
+void CTestAgentDrmContent::Read(TInt aPos, TDes8& aDes, TInt aLength, TRequestStatus& aStatus)
+	{
+	TInt offset = aPos + iDataOffset;
+	iFile.Read(offset, aDes, aLength, aStatus);
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/TestAgentDrmContent.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,59 @@
+/*
+* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#ifndef __TESTAGENTDRMFILE_H__
+#define __TESTAGENTDRMFILE_H__
+
+#include <e32base.h>
+#include <f32file.h>
+#include "TestAgentFileInterface.h"
+
+class CTestAgentDrmContent : public CTestAgentFileInterface
+		{
+	public:
+		static CTestAgentDrmContent* NewL(RFile& aFile);
+
+		CTestAgentDrmContent(RFile& aFile);
+		virtual ~CTestAgentDrmContent();
+
+		virtual TInt Read(TDes8& aDes,TInt aLength);
+		virtual void Read(TDes8& aDes, TInt aLength, TRequestStatus& aStatus);
+		virtual void ReadCancel(TRequestStatus& aStatus);
+		virtual TInt Seek(TSeek aMode,TInt& aPos);
+		virtual TPtrC8 ContentMimeType();
+		virtual TInt GetAttribute(TInt aAttribute, TInt& aValue);
+		virtual TInt GetStringAttribute(TInt aAttribute, TDes& aValue);
+		virtual void DataSizeL(TInt &aSize);
+		virtual void Read(TInt aPos, TDes8& aDes, TInt aLength, TRequestStatus& aStatus);	
+	private:
+		void ConstructL();
+		TInt ReadTUintvarL(TDes8& aBuffer, TInt Offset, TInt& aNumBytes) const;
+
+	private:
+		RFile& iFile;
+
+		/* OMA DRM Specific */
+		TInt iHeaderLength;
+		TInt iHeaderOffset;
+		TInt iDataSize;
+		TInt iDataOffset;
+
+		HBufC8 *iContentMimeType;
+		};
+
+#endif 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/TestAgentFile.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,130 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* dcffile.cpp
+*
+*/
+
+
+#include <caf/caf.h>
+#include "TestAgentFile.h"
+
+using namespace ContentAccess;
+
+_LIT8(KDrmMimeType, "application/testagent.drm");
+
+CTestAgentFile* CTestAgentFile::NewL(RFile& aFile)
+	{
+	CTestAgentFile *self = new (ELeave) CTestAgentFile(aFile);
+	return self;
+	}
+
+CTestAgentFile::CTestAgentFile(RFile& aFile) : iFile(aFile)
+	{
+	}
+
+CTestAgentFile::~CTestAgentFile()
+	{	
+	}	
+
+TInt CTestAgentFile::Read(TDes8& aDes,TInt aLength)
+	{
+	return iFile.Read(aDes, aLength);
+	}
+
+void CTestAgentFile::Read(TDes8& aDes, TInt aLength, TRequestStatus& aStatus)
+	{
+	iFile.Read(aDes, aLength, aStatus);
+	}
+	
+void CTestAgentFile::ReadCancel(TRequestStatus& aStatus)
+{
+	iFile.ReadCancel(aStatus);
+}
+
+TInt CTestAgentFile::Seek(TSeek aMode, TInt& aPos)
+	{
+	return iFile.Seek(aMode, aPos);
+	}
+
+TPtrC8 CTestAgentFile::ContentMimeType()
+	{
+	return KDrmMimeType();
+	}
+
+TInt CTestAgentFile::GetAttribute(TInt aAttribute, TInt& aValue)
+	{
+	TInt err = KErrNone;
+	
+	switch(aAttribute)
+		{
+	case EIsProtected:
+		aValue = EFalse;
+		break;
+	case EIsForwardable:
+		aValue = ETrue;
+		break;
+	case EIsModifyable:
+		aValue = EFalse;
+		break;
+	case EIsCopyable:
+		aValue = ETrue;
+		break;
+	case EContentCDataInUse:
+		aValue = KErrCANotSupported;
+		break;
+	case ECopyPaste:
+		aValue = ETrue;	
+		break;
+	case ECanMove:
+		aValue = ETrue;
+		break;
+	case ECanRename:
+		aValue = ETrue;
+		break;
+	case EContentVersion:
+	default:
+		err = KErrCANotSupported;
+		break;
+		};
+	return err;
+	}
+	
+TInt CTestAgentFile::GetStringAttribute(TInt aAttribute, TDes& aValue)
+	{
+	TInt err = KErrNone;
+	
+	// the file itself
+	switch(aAttribute)
+		{
+		case EMimeType:
+			aValue.Copy(KDrmMimeType());
+			break;
+		default:
+			err = KErrCANotSupported;
+			break;
+		};
+	return err;	
+	}
+	
+void CTestAgentFile::DataSizeL(TInt &aSize)
+	{
+	iFile.Size(aSize);
+	}
+	
+void CTestAgentFile::Read(TInt aPos, TDes8& aDes, TInt aLength, TRequestStatus& aStatus)
+	{
+	iFile.Read(aPos, aDes, aLength, aStatus);
+	}	
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/TestAgentFile.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,49 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#ifndef __TESTAGENTFILE_H__
+#define __TESTAGENTFILE_H__
+
+#include <e32base.h>
+#include <f32file.h>
+#include "TestAgentFileInterface.h"
+
+class CTestAgentFile: public CTestAgentFileInterface
+		{
+	public:
+		static CTestAgentFile* NewL(RFile& aFile);
+
+		CTestAgentFile(RFile& aFile);
+		virtual ~CTestAgentFile();
+
+		virtual TInt Read(TDes8& aDes,TInt aLength);
+		virtual void Read(TDes8& aDes, TInt aLength, TRequestStatus& aStatus);
+		virtual void ReadCancel(TRequestStatus& aStatus);
+		virtual TInt Seek(TSeek aMode,TInt& aPos);
+		virtual TPtrC8 ContentMimeType();
+		virtual TInt GetAttribute(TInt aAttribute, TInt& aValue);
+		virtual TInt GetStringAttribute(TInt aAttribute, TDes& aValue);
+		virtual void DataSizeL(TInt &aSize);
+		virtual void Read(TInt aPos, TDes8& aDes, TInt aLength, TRequestStatus& aStatus);
+
+
+	private:
+		RFile& iFile;
+		};
+
+#endif 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/TestAgentFileInterface.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#ifndef __TESTAGENTFILEINTERFACE_H__
+#define __TESTAGENTFILEINTERFACE_H__
+
+#include <e32base.h>
+#include <f32file.h>
+
+class CTestAgentFileInterface: public CBase
+		{
+	public:
+		virtual TInt Read(TDes8& aDes,TInt aLength) = 0;
+		virtual void Read(TDes8& aDes, TInt aLength, TRequestStatus& aStatus) = 0;
+		virtual void ReadCancel(TRequestStatus& aStatus) = 0;
+		virtual TInt Seek(TSeek aMode,TInt& aPos) = 0;
+		virtual TPtrC8 ContentMimeType() = 0;
+		virtual TInt GetAttribute(TInt aAttribute, TInt& aValue) = 0;
+		virtual TInt GetStringAttribute(TInt aAttribute, TDes& aValue) = 0;
+		virtual void DataSizeL(TInt &aSize) = 0;
+		virtual void Read(TInt aPos, TDes8& aDes, TInt aLength, TRequestStatus& aStatus)=0;
+		};
+
+#endif 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/readme.txt	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,9 @@
+//
+// CAF TestAgent Readme file
+// Copyright (c) Symbian Software Ltd 2006. All rights reserved.
+//
+
+TestAgent
+---------
+
+This is a simple agent is used for testing the CAF framework. All agent functionality is contained within the client-side DLL, and there is no server executable.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/testagent.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,38 @@
+/*
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <ecom/ecom.h>
+#include <ecom/implementationproxy.h>
+#include "testagentfactory.h"
+
+/* Implementation table is required by ECom. Allows alternative
+	New methods to be specified.
+*/
+const TImplementationProxy ImplementationTable[] =
+	{
+	IMPLEMENTATION_PROXY_ENTRY(0x101FE8F2, CTestAgentFactory::NewL)
+	}; 
+
+/* Lookup method required by ECom. Returns the above table to the 
+	ECom framework */
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
+	{
+	aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+	return ImplementationTable;
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/testagentattributes.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,117 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <apgcli.h>
+#include <f32file.h>
+#include <charconv.h> 
+#include <e32cmn.h>
+#include <caf/attributeset.h>
+#include <caf/stringattributeset.h>
+#include <caf/virtualpath.h>
+#include <caf/caferr.h>
+#include "testagentattributes.h"
+
+
+using namespace ContentAccess;
+
+_LIT(KTestAgentPrivateDir, "c:\\private\\12345678\\");
+_LIT(KDummyPrivateDir, "c:\\tcaf\\testdata\\TestAgentPrivateDir\\");
+
+void TTestAgentAttributes::GetDummyFileName(const TDesC& aFileName, TDes& aDummyFileName)
+	{
+	if(aFileName.Left(KTestAgentPrivateDir().Length()) == KTestAgentPrivateDir)
+		{
+		aDummyFileName.Copy(KDummyPrivateDir());
+		aDummyFileName.Append(aFileName.Right(aFileName.Length() - KTestAgentPrivateDir().Length()));
+		}
+	else
+		{
+		aDummyFileName.Copy(aFileName);		
+		}
+	}
+
+TInt TTestAgentAttributes::GetAttributeSet(CTestAgentFileInterface& aFile, RAttributeSet& aAttributeSet) 
+	{
+	TInt i = 0;
+	TInt attribute = 0;
+	TInt value = 0;
+	TInt err = KErrNone;
+	TInt numAttributes = aAttributeSet.Count();
+	
+	// loop through all the attriutes in the set and find their values
+	for(i = 0; i < numAttributes; i++)
+		{
+		attribute = aAttributeSet[i];
+		err = aFile.GetAttribute(attribute, value);
+		aAttributeSet.SetValue(attribute, value, err);
+		}	
+	return KErrNone;
+	}
+
+
+TInt TTestAgentAttributes::GetStringAttributeSet(CTestAgentFileInterface& aFile, RStringAttributeSet& aStringAttributeSet)
+	{
+	TInt i = 0;
+	TInt attribute = 0;
+	TInt err = KErrNone;
+	
+	// maybe this should be a CAF defined length
+	TBuf <KMaxDataTypeLength> buf;
+
+	TInt numAttributes = aStringAttributeSet.Count();
+
+	// loop through all the attriutes in the set and find their values
+	for(i = 0; i < numAttributes; i++)
+		{
+		attribute = aStringAttributeSet[i];
+		err = aFile.GetStringAttribute(attribute, buf);
+		err = aStringAttributeSet.SetValue(attribute, buf, err);
+		if(err != KErrNone)
+			{
+			break;
+			}
+		}	
+	return err;
+	}
+
+TInt TTestAgentAttributes::CheckUniqueId(const TDesC& aUniqueId)
+	{
+	// Allow the followig
+	// a zero length descriptor which is the entire DCF file
+	// or KDefaultContentObject which is the content object (OMA 1.0)
+	// of the CID?
+	if(aUniqueId.Length() == 0 || aUniqueId == KDefaultContentObject())
+		{
+		return KErrNone;	
+		}
+	else 
+		{
+		return KErrNotFound;	
+		}
+	}
+	
+TInt TTestAgentAttributes::CheckVirtualPath(const TVirtualPathPtr& aVirtualPath)
+	{
+	// check the Unique Id
+	TInt err = CheckUniqueId(aVirtualPath.UniqueId());
+	
+	// check if the file exists
+	
+	
+	return err;
+	}	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/testagentattributes.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,47 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#ifndef __TESTAGENTATTRIBUTES_H__
+#define __TESTAGENTATTRIBUTES_H__
+
+#include <caf/virtualpathptr.h>
+#include <caf/attributeset.h>
+#include <caf/stringattributeset.h>
+#include "TestAgentFileInterface.h"
+
+	/**
+	All attribute values are common between the CAgentData, CAgentContent and
+	CAgentManager. The OMA DCF attributes are mostly fixed anyway so this class
+	implements helper functions for all of the attribute functions
+
+	 */
+class TTestAgentAttributes
+		{
+	public:
+		static TInt GetAttributeSet(CTestAgentFileInterface& aFile, ContentAccess::RAttributeSet& aAttributeSet);
+		static TInt GetStringAttributeSet(CTestAgentFileInterface& aFile, ContentAccess::RStringAttributeSet& aStringAttributeSet);
+		static TInt CheckUniqueId(const TDesC& aUniqueId);
+		static TInt CheckVirtualPath(const ContentAccess::TVirtualPathPtr& aVirtualPath);	
+
+		// global helper function to intercept files in private directories
+		static void GetDummyFileName(const TDesC& aFilename, TDes& aActualFileName);
+		};
+
+
+
+#endif // __TESTAGENTATTRIBUTES_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/testagentcontent.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,371 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <caf/caf.h>
+#include "testagentcontent.h"
+#include "testagentattributes.h"
+
+using namespace ContentAccess;
+
+_LIT(KDummyContainer,"DummyContainer");
+
+CTestAgentContent* CTestAgentContent::NewL(const TDesC& aURI, TContentShareMode aShareMode)
+	{
+	CTestAgentContent* self = NewLC(aURI, aShareMode);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+CTestAgentContent* CTestAgentContent::NewLC(const TDesC& aURI, TContentShareMode aShareMode)
+	{
+	CTestAgentContent* self=new(ELeave) CTestAgentContent();
+	CleanupStack::PushL(self);
+	self->ConstructL(aURI, aShareMode);
+	return self;
+	}
+
+CTestAgentContent* CTestAgentContent::NewL(RFile& aFile)
+	{
+	CTestAgentContent* self = NewLC(aFile);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+CTestAgentContent* CTestAgentContent::NewLC(RFile& aFile)
+	{
+	CTestAgentContent* self=new(ELeave) CTestAgentContent();
+	CleanupStack::PushL(self);
+	self->ConstructL(aFile);
+	return self;
+	}
+
+
+CTestAgentContent::CTestAgentContent() 
+	{
+	iDummyContainerOpen=EFalse;
+	}
+
+CTestAgentContent::~CTestAgentContent()
+	{
+	delete iTestFile;
+	delete iTestDrmContent;
+	delete iURI;
+
+	iFile.Close();
+	iFs.Close();
+	}
+  
+void CTestAgentContent::ConstructL(const TDesC& aURI, TContentShareMode aShareMode)
+	{
+	TFileName dummyFileName;
+	TTestAgentAttributes::GetDummyFileName(aURI, dummyFileName);
+	
+	iURI = dummyFileName.AllocL();
+
+	TUint mode = EFileStream | EFileRead;
+
+	if(aShareMode == EContentShareReadWrite)
+		{
+		mode |= EFileShareReadersOrWriters;
+		}
+	else if (aShareMode == EContentShareExclusive)
+		{
+		mode |= EFileShareExclusive;
+		}
+	else
+		{
+		mode |= EFileShareReadersOnly;
+		}
+
+	// open underlying file handle
+	User::LeaveIfError(iFs.Connect());
+	User::LeaveIfError(iFile.Open(iFs, *iURI, mode));
+
+	// Create DRM file objects
+	iTestFile = CTestAgentFile::NewL(iFile);
+	iTestDrmContent = CTestAgentDrmContent::NewL(iFile);
+	
+	// reset file pointer back to the beginning of the file
+	TInt pos = 0;
+	iFile.Seek(ESeekStart,pos);
+	iShareMode = aShareMode;
+	}
+
+void CTestAgentContent::ConstructL(RFile& aFile)
+	{
+	User::LeaveIfError(iFile.Duplicate(aFile));
+
+	// Create file objects
+	iTestFile = CTestAgentFile::NewL(iFile);
+	iTestDrmContent = CTestAgentDrmContent::NewL(iFile);
+	
+	// reset file pointer back to the beginning of the file
+	TInt pos = 0;
+	iFile.Seek(ESeekStart, pos);
+	}
+
+TInt CTestAgentContent::OpenContainer(const TDesC& aUniqueId)
+	{
+	if(!iDummyContainerOpen && aUniqueId == KDummyContainer())
+		{
+		iDummyContainerOpen = ETrue;
+		return KErrNone;
+		}
+	return KErrNotFound;
+	}
+
+TInt CTestAgentContent::CloseContainer()
+	{
+	if(iDummyContainerOpen)
+		{
+		iDummyContainerOpen = EFalse;
+		return KErrNone;
+		}
+	return KErrNotFound;
+	}
+
+void CTestAgentContent::GetEmbeddedObjectsL(RStreamablePtrArray<CEmbeddedObject>& aArray)
+	{
+	if(!iDummyContainerOpen)
+		{
+		// The content object
+		CEmbeddedObject *embeddedObject = CEmbeddedObject::NewL(KDefaultContentObject(), *iURI, iTestDrmContent->ContentMimeType(), EContentObject);
+		CleanupStack::PushL(embeddedObject);
+		aArray.AppendL(embeddedObject);
+		// Now owned by the array so do not destroy
+		CleanupStack::Pop(embeddedObject);
+		embeddedObject = NULL;
+
+		// the file itself
+		embeddedObject = CEmbeddedObject::NewL(KNullDesC(), *iURI, iTestFile->ContentMimeType(), EContentObject);
+		CleanupStack::PushL(embeddedObject);
+		aArray.AppendL(embeddedObject);
+		// Now owned by the array so do not destroy
+		CleanupStack::Pop(embeddedObject);
+		embeddedObject = NULL;
+		
+		// The dummy container
+		embeddedObject = CEmbeddedObject::NewL(KDummyContainer(), KDummyContainer(), KNullDesC8(), EContainerObject);
+		CleanupStack::PushL(embeddedObject);
+		aArray.AppendL(embeddedObject);
+		// Now owned by the array so do not destroy
+		CleanupStack::Pop(embeddedObject);
+		embeddedObject = NULL;
+		}
+	}
+
+void CTestAgentContent::GetEmbeddedObjectsL(RStreamablePtrArray<CEmbeddedObject>& aArray, TEmbeddedType aType)
+	{
+	CEmbeddedObject *embeddedObject = NULL;
+	if(!iDummyContainerOpen)
+		{
+		// the only embedded object is the file itself
+		if(aType == EContentObject)
+			{
+			// The content object
+			embeddedObject = CEmbeddedObject::NewL(KDefaultContentObject(), *iURI, iTestDrmContent->ContentMimeType(), EContentObject);
+			CleanupStack::PushL(embeddedObject);
+			aArray.AppendL(embeddedObject);
+			// Now owned by the array so do not destroy
+			CleanupStack::Pop(embeddedObject);
+			embeddedObject = NULL;
+
+			// the file itself
+			embeddedObject = CEmbeddedObject::NewL(KNullDesC(), *iURI, iTestFile->ContentMimeType(), EContentObject);
+			CleanupStack::PushL(embeddedObject);
+			aArray.AppendL(embeddedObject);
+			// Now owned by the array so do not destroy
+			CleanupStack::Pop(embeddedObject);
+			embeddedObject = NULL;
+			}
+		else
+			{
+			// The dummy container
+			embeddedObject = CEmbeddedObject::NewL(KDummyContainer(), KDummyContainer(), KNullDesC8(), EContainerObject);
+			CleanupStack::PushL(embeddedObject);
+			aArray.AppendL(embeddedObject);
+			// Now owned by the array so do not destroy
+			CleanupStack::Pop(embeddedObject);
+			embeddedObject = NULL;
+			}
+		}
+	}
+
+TInt CTestAgentContent::Search(RStreamablePtrArray<CEmbeddedObject>& aArray, const TDesC8& aMimeType, TBool aRecursive)
+	{
+	TRAPD(err, SearchL(aArray, aMimeType, aRecursive));
+	return err;
+	}
+
+void CTestAgentContent::SearchL(RStreamablePtrArray<CEmbeddedObject>& aArray, const TDesC8& aMimeType, TBool )
+	{
+	CEmbeddedObject *embeddedObject = NULL;
+	if(iTestDrmContent->ContentMimeType() == aMimeType)
+		{
+		// content object matches required mime type
+		embeddedObject = CEmbeddedObject::NewL(KDefaultContentObject(), *iURI, iTestDrmContent->ContentMimeType(), EContentObject);
+		}
+	else if(aMimeType == iTestFile->ContentMimeType())
+		{
+		// matches the file itself
+		embeddedObject = CEmbeddedObject::NewL(KNullDesC(), *iURI, iTestFile->ContentMimeType(), EContentObject);
+		}
+	else
+		{
+		User::Leave(KErrNotFound);
+		}
+	
+	CleanupStack::PushL(embeddedObject);
+	aArray.AppendL(embeddedObject);
+	// Now owned by the array so do not destroy
+	CleanupStack::Pop(embeddedObject);
+	}
+
+TInt CTestAgentContent::GetAttribute(TInt aAttribute, TInt& aValue, const TDesC& aUniqueId)
+	{
+	// check that the unique Id exists
+	if(TTestAgentAttributes::CheckUniqueId(aUniqueId) != KErrNone)
+		{
+		return KErrNotFound;	
+		}
+
+	if(aUniqueId.Length() == 0)
+		{
+		// If it's the entire file
+		return iTestFile->GetAttribute(aAttribute, aValue);
+		}
+	else if(aUniqueId == KDefaultContentObject())
+		{
+		// If it's the embedded content
+		return iTestDrmContent->GetAttribute(aAttribute, aValue);
+		}
+	return KErrNotFound;
+	}
+
+TInt CTestAgentContent::GetAttributeSet(RAttributeSet& aAttributeSet, const TDesC& aUniqueId)
+	{
+	// check that the unique Id exists
+	if(TTestAgentAttributes::CheckUniqueId(aUniqueId) != KErrNone)
+		{
+		return KErrNotFound;	
+		}
+	
+	if(aUniqueId.Length() == 0)	
+		{
+		// The entire file
+		return TTestAgentAttributes::GetAttributeSet(*iTestFile, aAttributeSet);
+		}
+	else if(aUniqueId == KDefaultContentObject())
+		{
+		// the embedded content
+		return TTestAgentAttributes::GetAttributeSet(*iTestDrmContent, aAttributeSet);	
+		}
+	return KErrNotFound;
+	}
+
+TInt CTestAgentContent::GetStringAttribute(TInt aAttribute, TDes& aValue, const TDesC& aUniqueId)
+	{
+	// check that the unique Id exists
+	if(TTestAgentAttributes::CheckUniqueId(aUniqueId) != KErrNone)
+		{
+		return KErrNotFound;	
+		}
+		
+	if(aUniqueId.Length() == 0)
+		{
+		// If it's the entire file
+		return iTestFile->GetStringAttribute(aAttribute, aValue);
+		}
+	else 
+		{
+		// If it's the embedded content
+		return iTestDrmContent->GetStringAttribute(aAttribute, aValue);
+		}
+	}
+
+TInt CTestAgentContent::GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet, const TDesC& aUniqueId)
+	{
+	// check that the unique Id exists
+	if(TTestAgentAttributes::CheckUniqueId(aUniqueId) != KErrNone)
+		{
+		return KErrNotFound;	
+		}
+
+	if(aUniqueId.Length() == 0)	
+		{
+		// The entire file
+		return TTestAgentAttributes::GetStringAttributeSet(*iTestFile, aStringAttributeSet);
+		}
+	else
+		{
+		// the embedded content
+		return TTestAgentAttributes::GetStringAttributeSet(*iTestDrmContent, aStringAttributeSet);	
+		}
+	}
+
+_LIT(KAgentSpecificCommandResponse, "output");
+
+TInt CTestAgentContent::AgentSpecificCommand(TInt aCommand, const TDesC8&, TDes8& aOutputBuffer)
+	{
+	if(aCommand == 1)
+		{
+		aOutputBuffer.Copy(KAgentSpecificCommandResponse());
+		return KErrNone;
+		}
+	return KErrCANotSupported;
+	}
+
+void CTestAgentContent::AgentSpecificCommand(TInt aCommand, const TDesC8& aInputBuffer, TDes8& aOutputBuffer, TRequestStatus& aStatus)
+	{
+	TRequestStatus *ptr = &aStatus;
+	User::RequestComplete(ptr, AgentSpecificCommand(aCommand, aInputBuffer, aOutputBuffer));
+	}
+
+void CTestAgentContent::NotifyStatusChange(TEventMask , TRequestStatus& aStatus, const TDesC& )
+	{
+	TRequestStatus *ptr = &aStatus;
+	User::RequestComplete(ptr, KErrCANotSupported);
+	}
+
+TInt CTestAgentContent::CancelNotifyStatusChange(TRequestStatus& , const TDesC& )
+	{
+	return KErrCANotSupported;
+	}
+
+void CTestAgentContent::RequestRights(TRequestStatus& aStatus , const TDesC& )
+	{
+	TRequestStatus *ptr = &aStatus;
+	User::RequestComplete(ptr, KErrCANotSupported);
+	}
+
+TInt CTestAgentContent::CancelRequestRights(TRequestStatus& , const TDesC& )
+	{
+	return KErrCANotSupported;
+	}
+
+void CTestAgentContent::DisplayInfoL(TDisplayInfo , const TDesC& )
+	{
+	User::Leave(KErrCANotSupported);
+	}
+
+TInt CTestAgentContent::SetProperty(TAgentProperty /*aProperty*/, TInt /*aValue*/)
+	{
+	return KErrNone;
+	}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/testagentcontent.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,88 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#ifndef __TESTAGENTCONTENT_H__
+#define __TESTAGENTCONTENT_H__
+
+#include <f32file.h>
+#include <caf/agentinterface.h>
+#include "TestAgentFile.h"
+#include "TestAgentDrmContent.h"
+
+/**
+Test agent implementation of the CAgentContent class used to browse
+DCF files
+
+*/
+class CTestAgentContent : public ContentAccess::CAgentContent
+	{
+public:
+	// Two phase constructor used when the file is opened 
+	// using a file name
+	static CTestAgentContent* NewL(const TDesC& aURI, ContentAccess::TContentShareMode aShareMode);
+	static CTestAgentContent* NewLC(const TDesC& aURI, ContentAccess::TContentShareMode aShareMode);
+		
+	// Two phase constructor used when the file is opened with 
+	// a file handle
+	static CTestAgentContent* NewL(RFile& aFile);
+	static CTestAgentContent* NewLC(RFile& aFile);
+
+	virtual ~CTestAgentContent();
+
+public: 
+	// From CAgentContent
+	virtual TInt OpenContainer(const TDesC& aUniqueId);
+	virtual TInt CloseContainer();
+	virtual void GetEmbeddedObjectsL(ContentAccess::RStreamablePtrArray<ContentAccess::CEmbeddedObject>& aArray);
+	virtual void GetEmbeddedObjectsL(ContentAccess::RStreamablePtrArray<ContentAccess::CEmbeddedObject>& aArray, ContentAccess::TEmbeddedType aType);
+	virtual TInt Search(ContentAccess::RStreamablePtrArray<ContentAccess::CEmbeddedObject>& aArray, const TDesC8& aMimeType, TBool aRecursive);
+	virtual TInt GetAttribute(TInt aAttribute, TInt& aValue, const TDesC& aUniqueId);
+	virtual TInt GetAttributeSet(ContentAccess::RAttributeSet& aAttributeSet, const TDesC& aUniqueId);
+	virtual TInt GetStringAttribute(TInt aAttribute, TDes& aValue, const TDesC& aUniqueId);
+	virtual TInt GetStringAttributeSet(ContentAccess::RStringAttributeSet& aStringAttributeSet, const TDesC& aUniqueId);
+	virtual TInt AgentSpecificCommand(TInt aCommand, const TDesC8& aInputBuffer, TDes8& aOutputBuffer);
+	virtual void AgentSpecificCommand(TInt aCommand, const TDesC8& aInputBuffer, TDes8& aOutputBuffer, TRequestStatus& aStatus);
+	virtual void NotifyStatusChange(ContentAccess::TEventMask aMask, TRequestStatus& aStatus, const TDesC& aUniqueId);
+	virtual TInt CancelNotifyStatusChange(TRequestStatus& aStatus, const TDesC& aUniqueId);
+	virtual void RequestRights(TRequestStatus& aStatus, const TDesC& aUniqueId);
+	virtual TInt CancelRequestRights(TRequestStatus& aStatus, const TDesC& aUniqueId);
+	virtual void DisplayInfoL(ContentAccess::TDisplayInfo aInfo, const TDesC& aUniqueId);
+	virtual TInt SetProperty(ContentAccess::TAgentProperty aProperty, TInt aValue);
+
+private:
+	CTestAgentContent();
+	void ConstructL(const TDesC& aURI, ContentAccess::TContentShareMode aShareMode);
+	void ConstructL(RFile& aFile);
+	void SearchL(ContentAccess::RStreamablePtrArray<ContentAccess::CEmbeddedObject>& aArray, const TDesC8& aMimeType, TBool aRecursive);
+		
+private:
+	/** Handle to the filesystem */
+	RFs iFs;
+		
+	/** File handle used to browse the DCF file*/
+	RFile iFile;
+
+	CTestAgentFile *iTestFile;
+	CTestAgentDrmContent *iTestDrmContent;
+
+	HBufC *iURI;
+	ContentAccess::TContentShareMode iShareMode;
+	TBool ConstructedWithFileHandle;
+	TBool iDummyContainerOpen;
+	};
+#endif // __TestAgentContent_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/testagentdata.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,237 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* testagentconsumer.cpp
+* implements some of OMA DRM for testing purposes
+*
+*/
+
+
+
+#include <caf/caf.h>
+#include "testagentdata.h"
+#include "testagentattributes.h"
+#include "TestAgentFile.h"
+#include "TestAgentDrmContent.h"
+
+using namespace ContentAccess;
+
+CTestAgentData* CTestAgentData::NewL(const TVirtualPathPtr& aVirtualPath, TContentShareMode aShareMode)
+	{
+	CTestAgentData* self = NewLC(aVirtualPath, aShareMode);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+CTestAgentData* CTestAgentData::NewLC(const TVirtualPathPtr& aVirtualPath, TContentShareMode aShareMode)
+	{
+	CTestAgentData* self=new(ELeave) CTestAgentData();
+	CleanupStack::PushL(self);
+	self->ConstructL(aVirtualPath, aShareMode);
+	return self;
+	}
+
+CTestAgentData* CTestAgentData::NewL(RFile& aFile, const TDesC& aUniqueId)
+	{	
+	CTestAgentData* self = NewLC(aFile, aUniqueId);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+CTestAgentData* CTestAgentData::NewLC(RFile& aFile, const TDesC& aUniqueId)
+	{
+	CTestAgentData* self=new(ELeave) CTestAgentData();
+	CleanupStack::PushL(self);
+	self->ConstructL(aFile, aUniqueId);
+	return self;
+	}
+
+CTestAgentData::CTestAgentData()
+	{
+	}
+
+CTestAgentData::~CTestAgentData()
+	{
+	delete iVirtualPath;
+	delete iTestFileObject;
+
+	iFile.Close();
+	iFs.Close();
+	}
+  
+void CTestAgentData::ConstructL(const TVirtualPathPtr& aVirtualPath, TContentShareMode aShareMode)
+	{
+	// It is at this point that the agent can open the target content
+	// and cache the size. Evaluation of intent will be left until the
+	// CData object is created.
+
+	// default share mode of EFileShareReadersOnly
+	TUint mode = EFileStream | EFileRead;
+
+	if(aShareMode == EContentShareReadWrite)
+		{
+		mode |= EFileShareReadersOrWriters;
+		}
+	else if (aShareMode == EContentShareExclusive)
+		{
+		mode |= EFileShareExclusive;
+		}
+	else
+		{
+		mode |= EFileShareReadersOnly;
+		}
+
+	TFileName dummyFileName;
+	TTestAgentAttributes::GetDummyFileName(aVirtualPath.URI(), dummyFileName);
+	
+	// open the file with the correct mode
+	User::LeaveIfError(iFs.Connect());
+	User::LeaveIfError(iFs.ShareAuto());
+	User::LeaveIfError(iFile.Open(iFs, dummyFileName, mode));
+
+	// remember the location of the file
+	iVirtualPath = CVirtualPath::NewL(dummyFileName, aVirtualPath.UniqueId());
+
+	// Parse the structure of the DCF file if asked to open default content
+	if(aVirtualPath.UniqueId().Length() == 0)
+		{
+		iTestFileObject = CTestAgentFile::NewL(iFile);
+		}
+	else
+		{
+		iTestFileObject = CTestAgentDrmContent::NewL(iFile);
+		}
+
+	// seek to start of data in the file, ready to "read"
+	TInt Pos = 0;
+	Seek(ESeekStart, Pos);
+	}
+
+
+void CTestAgentData::ConstructL(RFile& aFile, const TDesC& aUniqueId)
+	{
+	User::LeaveIfError(iFile.Duplicate(aFile));
+
+	User::LeaveIfError(iFs.Connect());
+	User::LeaveIfError(iFs.ShareAuto());	
+	
+	// only parse the drm content if requested to open it
+	if(aUniqueId.Length() == 0)
+		{
+		iTestFileObject = CTestAgentFile::NewL(iFile);
+		}
+	else
+		{
+		iTestFileObject = CTestAgentDrmContent::NewL(iFile);
+		}
+		
+
+	// seek to start of data in the file, ready to "read"
+	TInt Pos = 0;
+	Seek(ESeekStart, Pos);
+	}
+
+void CTestAgentData::DataSizeL(TInt &aSize)
+	{
+	iTestFileObject->DataSizeL(aSize);
+	}
+
+TInt CTestAgentData::EvaluateIntent(TIntent /*aIntent*/)
+	{
+	return KErrNone;
+	}
+
+TInt CTestAgentData::ExecuteIntent(TIntent /*aIntent*/)
+	{
+	return KErrNone;
+	}
+
+TInt CTestAgentData::Read(TDes8& aDes) 
+	{
+	return iTestFileObject->Read(aDes,aDes.MaxLength());
+	}
+
+TInt CTestAgentData::Read(TDes8& aDes,TInt aLength) 
+	{
+	return iTestFileObject->Read(aDes,aLength);
+	}
+
+void CTestAgentData::Read(TDes8& aDes,TRequestStatus& aStatus) 
+	{
+	iTestFileObject->Read(aDes, aDes.MaxLength(), aStatus);
+	}
+
+void CTestAgentData::Read(TDes8& aDes, TInt aLength, TRequestStatus& aStatus) 
+	{
+	iTestFileObject->Read(aDes, aLength, aStatus);
+	}
+
+TInt CTestAgentData::Read(TInt aPos, TDes8& aDes, TInt aLength, TRequestStatus& aStatus) 
+	{
+	iTestFileObject->Read(aPos, aDes, aLength, aStatus);
+	return KErrNone;
+	}
+	
+void CTestAgentData::ReadCancel(TRequestStatus& aStatus)
+{
+	iTestFileObject->ReadCancel(aStatus);
+}		
+	
+TInt CTestAgentData::Seek(TSeek aMode, TInt& aPos) 
+	{
+	return iTestFileObject->Seek(aMode, aPos);
+	}
+
+TInt CTestAgentData::SetProperty(TAgentProperty /*aProperty*/, TInt /*aValue*/)
+	{
+	return KErrCANotSupported;
+	}
+
+TInt CTestAgentData::GetAttribute(TInt aAttribute, TInt& aValue)
+	{
+	return iTestFileObject->GetAttribute(aAttribute, aValue);
+	}
+
+TInt CTestAgentData::GetAttributeSet(RAttributeSet& aAttributeSet)
+	{
+	return TTestAgentAttributes::GetAttributeSet(*iTestFileObject, aAttributeSet);
+	}
+
+TInt CTestAgentData::GetStringAttribute(TInt aAttribute, TDes& aValue)
+	{
+	return iTestFileObject->GetStringAttribute(aAttribute, aValue);
+	}
+
+TInt CTestAgentData::GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet)
+	{
+	return TTestAgentAttributes::GetStringAttributeSet(*iTestFileObject, aStringAttributeSet);
+	}
+
+#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+TInt CTestAgentData::Read64(TInt64 /* aPos */, TDes8& /* aDes */, TInt /* aLength */, TRequestStatus& /* aStatus */)
+	{
+	return KErrCANotSupported;
+	}
+
+void CTestAgentData::DataSize64L(TInt64& /*aSize*/)
+	{
+	User::Leave(KErrCANotSupported);
+	}
+
+TInt CTestAgentData::Seek64(TSeek /*aMode*/, TInt64& /*aPos*/)
+	{
+	return KErrCANotSupported;
+	}
+#endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/testagentdata.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,93 @@
+/*
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* testagentconsumer.h
+* Test agent implementation of the CAgentConsumer class
+*
+*/
+
+
+
+
+#ifndef __TESTAGENTDATA_H__
+#define __TESTAGENTDATA_H__
+
+#include <caf/caf.h>
+#include "agentinterface.h"
+#include "TestAgentFileInterface.h"
+
+class CTestAgentData : public ContentAccess::CAgentData
+		{
+	public:
+		static CTestAgentData* NewL(const ContentAccess::TVirtualPathPtr& aVirtualPath, ContentAccess::TContentShareMode aShareMode);
+		static CTestAgentData* NewLC(const ContentAccess::TVirtualPathPtr& aVirtualPath, ContentAccess::TContentShareMode aShareMode);
+
+		static CTestAgentData* NewL(RFile& aFile, const TDesC& aUniqueId);
+		static CTestAgentData* NewLC(RFile& aFile, const TDesC& aUniqueId);
+
+		virtual ~CTestAgentData();
+
+	public: // From CAgentConsumer
+		virtual TInt Read(TDes8& aDes);
+		virtual TInt Read(TDes8& aDes,TInt aLength);
+		virtual void Read(TDes8& aDes, TRequestStatus& aStatus);
+		virtual void Read(TDes8& aDes, TInt aLength, TRequestStatus& aStatus);
+		virtual void ReadCancel(TRequestStatus& aStatus);
+		virtual void DataSizeL(TInt& aSize);
+		virtual TInt Seek(TSeek aMode,TInt& aPos);
+		virtual TInt SetProperty(ContentAccess::TAgentProperty aProperty, TInt aValue);
+		virtual TInt EvaluateIntent(ContentAccess::TIntent aIntent);
+		virtual TInt ExecuteIntent(ContentAccess::TIntent aIntent);
+		virtual TInt GetAttribute(TInt aAttribute, TInt& aValue);
+		virtual TInt GetAttributeSet(ContentAccess::RAttributeSet& aAttributeSet);
+		virtual TInt GetStringAttribute(TInt aAttribute, TDes& aValue);
+		virtual TInt GetStringAttributeSet(ContentAccess::RStringAttributeSet& aStringAttributeSet);
+		virtual TInt Read(TInt aPos, TDes8& aDes, TInt aLength, TRequestStatus& aStatus);
+
+#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+		virtual void DataSize64L(TInt64 &aSize);
+		virtual TInt Seek64(TSeek aMode, TInt64& aPos);
+		virtual TInt Read64(TInt64 aPos, TDes8& aDes, TInt aLength, TRequestStatus& aStatus);
+#endif //SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+
+	private:
+		CTestAgentData();
+		void ConstructL(const ContentAccess::TVirtualPathPtr& aVirtualPath, ContentAccess::TContentShareMode aShareMode);
+		void ConstructL(RFile& aFile, const TDesC& aUniqueId);
+		
+	private:
+		/* Calculate Data Size and Data offset */
+		void CalculateDataSizeAndOffsetL();
+
+		/* Format of a TUintvar is defined by the Open Mobile alliance in 
+		*   Wireless Session Protocol OMA-WAP-WSP-v1_0-20020920-C
+		*   @param aBuffer [in] buffer containing a TUintvar
+		*   @param Offset [in] location of the first byte of the TUintvar within the buffer
+		*   @param aNumBytes [out] number of bytes read from the buffer to decode the the TUintvar
+		*   @return the value of the TUnitvar
+		*/  
+		TInt ReadTUintvarL(TDes8& aBuffer, TInt Offset, TInt& aNumBytes) const;
+
+		// encapsulates and parses a DCF file
+		CTestAgentFileInterface *iTestFileObject;
+
+		// File session used when checking attributes
+		RFs iFs;
+		// File handle
+		RFile iFile;
+
+		ContentAccess::CVirtualPath *iVirtualPath;
+		};
+
+#endif // __TESTAGENTCONSUMER_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/testagentfactory.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,73 @@
+/*
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <caf/caf.h>
+#include "testagentfactory.h"
+#include "testagentcontent.h"
+#include "testagentdata.h"
+#include "testagentmanager.h"
+#include "testagentimportfile.h"
+#include "testagentrightsmanager.h"
+
+using namespace ContentAccess;
+
+CAgentFactory* CTestAgentFactory::NewL()
+	{
+	return new (ELeave) CTestAgentFactory();
+	}
+
+CAgentContent* CTestAgentFactory::CreateContentBrowserL(const TDesC& aURI, TContentShareMode aShareMode)
+	{
+	return CTestAgentContent::NewL(aURI, aShareMode);
+	}
+
+CAgentContent* CTestAgentFactory::CreateContentBrowserL(RFile& aFile)
+	{
+	return CTestAgentContent::NewL(aFile);
+	}
+
+CAgentData* CTestAgentFactory::CreateDataConsumerL(const TVirtualPathPtr& aVirtualPath, TContentShareMode aShareMode)
+	{
+	return CTestAgentData::NewL(aVirtualPath, aShareMode);
+	}
+
+CAgentData* CTestAgentFactory::CreateDataConsumerL(RFile& aFile, const TDesC& aUniqueId)
+	{
+	return CTestAgentData::NewL(aFile, aUniqueId);
+	}
+
+CAgentManager*  CTestAgentFactory::CreateManagerL()
+	{
+	return CTestAgentManager::NewL();
+	}
+
+CAgentImportFile* CTestAgentFactory::CreateImporterL(const TDesC8& aMimeType, const CMetaDataArray& aMetaDataArray, const TDesC& aOutputDirectory, const TDesC& aSuggestedFileName)
+	{
+	return CTestAgentImportFile::NewL(aMimeType, aMetaDataArray, aOutputDirectory, aSuggestedFileName);
+	}
+
+CAgentImportFile* CTestAgentFactory::CreateImporterL(const TDesC8& aMimeType, const CMetaDataArray& aMetaDataArray)
+	{
+	return CTestAgentImportFile::NewL(aMimeType, aMetaDataArray);
+	}
+
+CAgentRightsManager* CTestAgentFactory::CreateRightsManagerL()
+	{
+	return CTestAgentRightsManager::NewL();
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/testagentfactory.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+#ifndef __TESTAGENTFACTORY_H__
+#define __TESTAGENTFACTORY_H__
+
+#include <caf/caf.h>
+#include "agentfactory.h"
+
+	class CTestAgentFactory : public ContentAccess::CAgentFactory
+		{
+	public:
+		static CAgentFactory* NewL();
+		
+		// From CAgentFactory
+		virtual ContentAccess::CAgentContent* CreateContentBrowserL(const TDesC& aURI, ContentAccess::TContentShareMode aShareMode);	
+		virtual ContentAccess::CAgentContent* CreateContentBrowserL(RFile& aFile);
+		virtual ContentAccess::CAgentData* CreateDataConsumerL(const ContentAccess::TVirtualPathPtr& aVirtualPath, ContentAccess::TContentShareMode aShareMode);
+		virtual ContentAccess::CAgentData* CreateDataConsumerL(RFile& aFile, const TDesC& aUniqueId);
+		virtual ContentAccess::CAgentManager*  CreateManagerL();
+		virtual ContentAccess::CAgentImportFile* CreateImporterL(const TDesC8& aMimeType, const ContentAccess::CMetaDataArray& aMetaDataArray, const TDesC& aOutputDirectory, const TDesC& aSuggestedFileName);
+		virtual ContentAccess::CAgentImportFile* CreateImporterL(const TDesC8& aMimeType, const ContentAccess::CMetaDataArray& aMetaDataArray);
+		virtual ContentAccess::CAgentRightsManager* CreateRightsManagerL();	
+		};
+
+#endif // __TESTAGENTFACTORY_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/testagentimportfile.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,332 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <e32std.h>
+#include <f32file.h>
+#include <s32file.h>
+#include <caf/caferr.h>
+#include <caf/supplieroutputfile.h>
+#include "testagentimportfile.h"
+
+
+
+using namespace ContentAccess;
+
+CTestAgentImportFile* CTestAgentImportFile::NewL(const TDesC8& aMimeType, const CMetaDataArray& aMetaDataArray, const TDesC& aOutputDirectory, const TDesC& aSuggestedFileName)
+	{
+	CTestAgentImportFile* self=new(ELeave) CTestAgentImportFile(ETrue);
+	CleanupStack::PushL(self);
+	self->ConstructL(aMimeType, aMetaDataArray, aOutputDirectory, aSuggestedFileName);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+CTestAgentImportFile* CTestAgentImportFile::NewL(const TDesC8& aMimeType, const CMetaDataArray& aMetaDataArray)
+	{
+	CTestAgentImportFile* self=new(ELeave) CTestAgentImportFile(EFalse);
+	CleanupStack::PushL(self);
+	self->ConstructL(aMimeType, aMetaDataArray, KNullDesC(), KNullDesC());
+	CleanupStack::Pop(self);
+	return self;
+	}
+	
+CTestAgentImportFile::CTestAgentImportFile(TBool aAgentCreatesOutputFiles) : iAgentCreatesOutputFiles(aAgentCreatesOutputFiles)
+	{
+	iImportStatus = EInProgress;
+	}
+
+CTestAgentImportFile::~CTestAgentImportFile()
+	{
+	if(iFileOpen)
+		{
+		iFile.Close();
+		iFileOpen = EFalse;
+		}
+	if(iOutputFileName)
+		{
+		iFs.Delete(iOutputFileName->Des());
+		delete iOutputFileName;
+		}
+	iFs.Close();
+	delete iOutputDirectory;
+	delete iSuggestedFileName;
+	delete iLastWriteData;
+	iOutputFiles.ResetAndDestroy();
+	}
+  
+void CTestAgentImportFile::ConstructL(const TDesC8& aMimeType, const CMetaDataArray& /*aMetaDataArray*/, const TDesC& aOutputDirectory, const TDesC& aSuggestedFileName)
+	{
+	_LIT8(KDrmMimeType, "application/testagent.drm");
+	TBuf8 <KMaxDataTypeLength> mimeType;
+	mimeType.Copy(aMimeType);
+	mimeType.LowerCase();
+	if(mimeType != KDrmMimeType())
+		{
+		User::Leave(KErrCANotSupported);
+		}
+
+	// create buffer to store any output path and filename supplied by the client
+	iOutputDirectory = aOutputDirectory.AllocL();
+	iSuggestedFileName = aSuggestedFileName.AllocL();
+
+	User::LeaveIfError(iFs.Connect());
+	}
+
+TInt CTestAgentImportFile::OpenOutputFile()
+	{
+	TInt err = KErrNone;
+	if(iOutputFileName)
+		{
+		return KErrInUse;
+		}
+
+	if(iAgentCreatesOutputFiles)
+		{
+		// Figure out a name including full path for the output file
+		TRAP(err, iOutputFileName = HBufC::NewL(iOutputDirectory->Des().Length() + iSuggestedFileName->Des().Length()));
+		if(err == KErrNone)
+			{
+			TPtr fileNamePtr = iOutputFileName->Des();
+			fileNamePtr.Copy(*iOutputDirectory);
+			fileNamePtr.Append(*iSuggestedFileName);
+
+			// create output file
+			err = iFile.Create(iFs, fileNamePtr, EFileShareAny  | EFileStream | EFileWrite);
+			if(err == KErrNone)
+				{
+				iFileOpen = ETrue;
+				}
+			}
+		return err;
+		}
+	else
+		{
+		// The application must supply a new file handle for us to adopt
+		return KErrCANewFileHandleRequired;
+		}
+	}
+
+TInt CTestAgentImportFile::WriteData(const TDesC8& aData)
+	{
+	TInt err = KErrNone;
+
+	if(!iFileOpen)
+		{
+		err = OpenOutputFile();
+		}
+	if(err == KErrNone)
+		{
+		err = iFile.Write(aData);
+		}
+
+	// check if the output file creation or file writing needs a new file handle
+	if(err == KErrCANewFileHandleRequired)
+		{
+		// save write parameters
+
+		delete iLastWriteData;
+		iLastWriteData = aData.Alloc();
+		if (NULL == iLastWriteData)
+			{
+			err = KErrNoMemory;
+			}
+		}
+	return err;
+	}
+
+TInt CTestAgentImportFile::WriteDataComplete()
+	{
+	TRAPD(err, WriteDataCompleteL());
+	return err;
+	}
+
+void CTestAgentImportFile::WriteDataCompleteL()
+	{
+	CSupplierOutputFile *temp = NULL; 
+	if(iFileOpen)
+		{	
+		iFile.Close();
+		iFileOpen = EFalse;
+		}
+
+	// add a new entry to the array of output files
+	if(iOutputFileName)
+		{
+		temp = CSupplierOutputFile::NewL(iOutputFileName->Des(), EContent, _L8("application/testagent.drm"));
+
+		CleanupStack::PushL(temp);
+		iOutputFiles.AppendL(temp);
+		CleanupStack::Pop(temp);
+
+		delete iOutputFileName;
+		iOutputFileName = NULL;
+		}
+
+	if(!iAgentCreatesOutputFiles)
+		{
+		iWaitingForReceiptHandle = ETrue;
+		User::Leave(KErrCANewFileHandleRequired);
+		}
+	else
+		{
+		// Figure out receipt name including full path for the output file
+		iOutputFileName = HBufC::NewL(KMaxFileName);
+		TPtr fileNamePtr = iOutputFileName->Des();
+		fileNamePtr.Copy(*iOutputDirectory);
+		fileNamePtr.Append(_L("receipt.txt"));
+
+		// create output file
+		User::LeaveIfError(iFile.Create(iFs, fileNamePtr, EFileShareAny  | EFileStream | EFileWrite));
+		CleanupClosePushL(iFile);
+
+		RFileWriteStream stream(iFile);
+		CleanupClosePushL(stream);
+
+		stream.WriteL(_L("This is a receipt"));
+		stream.CommitL();
+
+		CleanupStack::PopAndDestroy(2, &iFile);  // stream, file
+		
+		// Add to list of output files
+		temp = CSupplierOutputFile::NewL(iOutputFileName->Des(), EReceipt, _L8("text/plain"));
+
+		CleanupStack::PushL(temp);
+		iOutputFiles.AppendL(temp);
+		CleanupStack::Pop(temp);
+
+		delete iOutputFileName;
+		iOutputFileName = NULL;	
+		}
+	}
+		
+void CTestAgentImportFile::WriteData(const TDesC8& aData, TRequestStatus &aStatus)
+	{
+	TRequestStatus *ptr = &aStatus;
+	
+	// call synchronous WriteData
+	TInt rVal = WriteData(aData);
+	
+	// complete the request
+	User::RequestComplete(ptr,rVal);
+	}
+
+void CTestAgentImportFile::WriteDataComplete(TRequestStatus &aStatus)
+	{
+	TRequestStatus *ptr = &aStatus;
+	// call synchronous WriteDataComplete
+	TInt rVal = WriteDataComplete();
+	
+	// complete the request
+	User::RequestComplete(ptr,rVal);
+	}
+	
+TInt CTestAgentImportFile::OutputFileCountL() const
+	{
+	return iOutputFiles.Count();
+	}
+
+CSupplierOutputFile& CTestAgentImportFile::OutputFileL(TInt aIndex)
+	{
+	return *iOutputFiles[aIndex];
+	}
+
+TImportStatus CTestAgentImportFile::GetImportStatus() const
+	{
+	return iImportStatus;
+	}	
+
+TInt CTestAgentImportFile::GetSuggestedOutputFileExtension(TDes& aFileExtension)
+	{
+	if(iWaitingForReceiptHandle)
+		{
+		aFileExtension.Copy(_L(".TXT"));		
+		}
+	else
+		{
+		aFileExtension.Copy(_L(".DRM"));		
+		}
+	return KErrNone;
+	}
+
+TInt CTestAgentImportFile::GetSuggestedOutputFileName(TDes& aFileName)
+	{
+	if(iWaitingForReceiptHandle)
+		{
+		aFileName.Copy(_L("RECEIPT.TXT"));
+		}
+	else
+		{
+		aFileName.Copy(_L("OUTPUTFILE.DRM"));
+		}
+	return KErrNone;
+	}
+
+TInt CTestAgentImportFile::ContinueWithNewOutputFile(RFile& aFile, const TDesC& aFileName)
+	{
+	TRAPD(err, ContinueWithNewOutputFileL(aFile, aFileName));
+	return err;
+	}
+
+void CTestAgentImportFile::ContinueWithNewOutputFileL(RFile& aFile, const TDesC& aFileName)
+	{
+	User::LeaveIfError( iFile.Duplicate(aFile) );
+
+	if(iWaitingForReceiptHandle)
+		{
+		RFileWriteStream stream(iFile);
+		stream.WriteL(_L("This is a receipt"));
+		stream.CommitL();
+		stream.Close();
+		iFile.Close();
+		
+		CSupplierOutputFile *temp =
+			CSupplierOutputFile::NewL(aFileName, EReceipt, _L8("text/plain"));
+		CleanupStack::PushL(temp);
+		iOutputFiles.AppendL(temp);
+		CleanupStack::Pop(temp);
+		}
+	else
+		{
+		iFileOpen = ETrue;
+		iOutputFileName = aFileName.AllocL();
+		User::LeaveIfError(WriteData(*iLastWriteData));
+		}
+	}
+
+void CTestAgentImportFile::ContinueWithNewOutputFile(RFile& aFile, const TDesC& aFileName, TRequestStatus& aStatus)
+	{
+	TRequestStatus *ptr = &aStatus;
+	// call synchronous WriteDataComplete
+	TInt rVal = ContinueWithNewOutputFile(aFile, aFileName);
+	
+	// complete the request
+	User::RequestComplete(ptr,rVal);
+	}
+
+
+TBool CTestAgentImportFile::ContentMimeTypeL(TDes8& aContentMime)
+	{
+	//Just set aContentMime to text/plain
+	//Real agent should implement this function for discovering content type based on available buffer
+	//Please refer to reftestagent as an example.
+	_LIT8(KPlainText, "text/plain");
+	aContentMime.Copy(KPlainText);
+	
+	return ETrue;
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/testagentimportfile.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+
+#ifndef __TESTAGENTIMPORTFILE_H__
+#define __TESTAGENTIMPORTFILE_H__
+
+#include "agentinterface.h"
+
+class CTestAgentImportFile : public ContentAccess::CAgentImportFile
+		{
+	public:
+		static CTestAgentImportFile* NewL(const TDesC8& aMimeType, const ContentAccess::CMetaDataArray& aMetaDataArray, const TDesC& aOutputDirectory, const TDesC& aSuggestedFileName);
+		static CTestAgentImportFile* NewL(const TDesC8& aMimeType, const ContentAccess::CMetaDataArray& aMetaDataArray);
+		virtual ~CTestAgentImportFile();
+
+	public:
+		// From CAgentImportFile
+		virtual TInt WriteData(const TDesC8& aData);
+		virtual void WriteData(const TDesC8& aData, TRequestStatus& aStatus);
+		virtual TInt WriteDataComplete();
+		virtual void WriteDataComplete(TRequestStatus& aStatus);
+		virtual TInt OutputFileCountL() const;
+		virtual ContentAccess::CSupplierOutputFile& OutputFileL(TInt aIndex);
+		virtual ContentAccess::TImportStatus GetImportStatus() const;
+		virtual TInt GetSuggestedOutputFileExtension(TDes& aFileExtension);
+		virtual TInt GetSuggestedOutputFileName(TDes& aFileName);
+		virtual TInt ContinueWithNewOutputFile(RFile& aFile, const TDesC& aFileName);
+		virtual void ContinueWithNewOutputFile(RFile& aFile, const TDesC& aFileName, TRequestStatus& aStatus);
+		virtual TBool ContentMimeTypeL(TDes8& aContentMime); 
+	private:
+		CTestAgentImportFile(TBool aAgentCreatesOutputFiles);
+		void ConstructL(const TDesC8& aMimeType, const ContentAccess::CMetaDataArray& aMetaDataArray, const TDesC& aOutputDirectory, const TDesC& aSuggestedFileName);
+
+		TInt OpenOutputFile();
+		void WriteDataCompleteL();
+		void ContinueWithNewOutputFileL(RFile& aFile, const TDesC& aFileName);
+
+	private:
+
+		HBufC *iOutputDirectory;
+		HBufC *iSuggestedFileName;
+		HBufC *iOutputFileName;
+		HBufC8 *iLastWriteData;
+		RFs iFs;
+		RFile iFile;
+		RPointerArray <ContentAccess::CSupplierOutputFile> iOutputFiles;
+		ContentAccess::TImportStatus iImportStatus;
+		TBool iAgentCreatesOutputFiles;
+		TBool iFileOpen;
+		TBool iWaitingForReceiptHandle;
+		};
+#endif // __TESTAGENTIMPORTFILE_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/testagentmanager.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,423 @@
+/*
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <caf/caf.h>
+#include <caf/dirstreamable.h>
+#include "testagentmanager.h"
+#include "testagentattributes.h"
+#include "TestAgentFile.h"
+#include "TestAgentDrmContent.h"
+#include <stringpool.h>
+#include <http.h>
+#include <http/rhttpheaders.h>
+#include <stringpool.h>
+using namespace ContentAccess;
+
+_LIT(KDrmContentExtension,".DRM");
+// Do not change the case of KDrmMimeType as it is needed for case testing.
+_LIT(KDrmMimeType, "APPLICATION/TESTAGENT.DRM");
+
+CTestAgentManager* CTestAgentManager::NewL()
+	{
+	CTestAgentManager* self = NewLC();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+CTestAgentManager* CTestAgentManager::NewLC()
+	{
+	CTestAgentManager* self=new(ELeave) CTestAgentManager();
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestAgentManager::CTestAgentManager()
+	{
+	}
+
+CTestAgentManager::~CTestAgentManager()
+	{
+	delete iFileMan;
+	iFs.Close();
+	}
+  
+void CTestAgentManager::ConstructL()
+	{
+	User::LeaveIfError(iFs.Connect());
+	iFileMan = CFileMan::NewL(iFs);
+	}
+
+
+TInt CTestAgentManager::DeleteFile(const TDesC &aFileName)	
+	{
+	// Most likely would have some kind of rights check here to determine if it can be
+	// deleted
+	return iFs.Delete(aFileName);
+	}
+
+TInt CTestAgentManager::CopyFile(const TDesC& /*aSource*/, const TDesC& /*aDestination*/)
+	{
+	return KErrCANotSupported;
+	}
+
+TInt CTestAgentManager::CopyFile(RFile& /*aSource*/, const TDesC& /*aDestination*/)
+	{
+	return KErrCANotSupported;
+	}
+
+TInt CTestAgentManager::RenameFile(const TDesC& /*aSource*/, const TDesC& /*aDestination*/)
+	{
+	return KErrCANotSupported;
+	}
+
+TInt CTestAgentManager::MkDir(const TDesC& /*aPath*/)
+	{
+	return KErrCANotSupported;
+	}
+
+TInt CTestAgentManager::MkDirAll(const TDesC& /*aPath*/)
+	{
+	return KErrCANotSupported;
+	}	
+
+TInt CTestAgentManager::RmDir(const TDesC& /*aPath*/)
+	{
+	return KErrCANotSupported;
+	}	
+
+TInt CTestAgentManager::GetDir(const TDesC& /*aName*/,TUint /*aEntryAttMask*/,TUint /*aEntrySortKey*/, CDir*& /*aEntryList*/) const 
+	{
+	return KErrCANotSupported;
+	}
+
+TInt CTestAgentManager::GetDir(const TDesC& /*aName*/,TUint /*aEntryAttMask*/,TUint /*aEntrySortKey*/, CDir*& /*aEntryList*/,CDir*& /*aDirList*/) const
+	{
+	return KErrCANotSupported;
+	}
+
+TInt CTestAgentManager::GetDir(const TDesC& /*aName*/,const TUidType& /*aEntryUid*/,TUint /*aEntrySortKey*/, CDir*& /*aFileList*/) const
+	{
+	return KErrCANotSupported;
+	}
+
+TInt CTestAgentManager::GetAttribute(TInt aAttribute, TInt& aValue, const TVirtualPathPtr& aVirtualPath)
+	{
+	TRAPD(err, GetAttributeL(aAttribute, aValue, aVirtualPath));
+	return err;
+	}
+
+void CTestAgentManager::GetAttributeL(TInt aAttribute, TInt& aValue, const TVirtualPathPtr& aVirtualPath)
+	{
+	RFile file;
+	CTestAgentFileInterface *fileObject = NULL;
+
+	// check virtual path here to see it's ok
+	if(TTestAgentAttributes::CheckVirtualPath(aVirtualPath) != KErrNone)
+		{
+		User::Leave( KErrNotFound );	
+		}
+
+	// open file in order to retrieve an attribute from it
+	User::LeaveIfError(file.Open(iFs, aVirtualPath.URI(), EFileStream | EFileRead | EFileShareReadersOnly));
+	CleanupClosePushL(file);
+
+	if(aVirtualPath.UniqueId().Length() == 0)
+		{
+		fileObject = CTestAgentFile::NewL(file);
+		}
+	else
+		{
+		fileObject = CTestAgentDrmContent::NewL(file);
+		}
+	CleanupStack::PushL(fileObject);
+
+	User::LeaveIfError(fileObject->GetAttribute(aAttribute, aValue));
+	CleanupStack::PopAndDestroy(2, &file);
+	}
+
+TInt CTestAgentManager::GetAttributeSet(RAttributeSet& aAttributeSet, const TVirtualPathPtr& aVirtualPath)
+	{
+	TRAPD(err, GetAttributeSetL(aAttributeSet, aVirtualPath));
+	return err;
+	}
+
+void CTestAgentManager::GetAttributeSetL(RAttributeSet& aAttributeSet, const TVirtualPathPtr& aVirtualPath)
+	{
+	RFile file;
+	CTestAgentFileInterface *fileObject = NULL;	
+
+	// check virtual path here to see it's ok
+	if(TTestAgentAttributes::CheckVirtualPath(aVirtualPath) != KErrNone)
+		{
+		User::Leave( KErrNotFound );	
+		}
+
+	// open file in order to retrieve an attribute from it
+	User::LeaveIfError(file.Open(iFs, aVirtualPath.URI(), EFileStream | EFileRead | EFileShareReadersOnly));
+	CleanupClosePushL(file);
+
+	if(aVirtualPath.UniqueId().Length() == 0)
+		{
+		fileObject = CTestAgentFile::NewL(file);
+		}
+	else
+		{
+		fileObject = CTestAgentDrmContent::NewL(file);
+		}
+	CleanupStack::PushL(fileObject);
+	User::LeaveIfError(TTestAgentAttributes::GetAttributeSet(*fileObject, aAttributeSet));
+	CleanupStack::PopAndDestroy(2, &file);
+	}
+
+TInt CTestAgentManager::GetStringAttributeSet(RStringAttributeSet& aAttributeSet, const TVirtualPathPtr& aVirtualPath)
+	{
+	TRAPD(err, GetStringAttributeSetL(aAttributeSet, aVirtualPath));
+	return err;
+	}
+
+void CTestAgentManager::GetStringAttributeSetL(RStringAttributeSet& aAttributeSet, const TVirtualPathPtr& aVirtualPath)
+	{
+	RFile file;
+	CTestAgentFileInterface *fileObject = NULL;
+	
+	// check virtual path here to see it's ok
+	if(TTestAgentAttributes::CheckVirtualPath(aVirtualPath) != KErrNone)
+		{
+		User::Leave(KErrNotFound);	
+		}
+
+	// open file in order to retrieve an attribute from it
+	User::LeaveIfError(file.Open(iFs, aVirtualPath.URI(), EFileStream | EFileRead | EFileShareReadersOnly));
+
+	CleanupClosePushL(file);
+
+	if(aVirtualPath.UniqueId().Length() == 0)
+		{
+		fileObject = CTestAgentFile::NewL(file);
+		}
+	else
+		{
+		fileObject = CTestAgentDrmContent::NewL(file);
+		}
+
+	CleanupStack::PushL(fileObject);
+	User::LeaveIfError(TTestAgentAttributes::GetStringAttributeSet(*fileObject, aAttributeSet));
+	CleanupStack::PopAndDestroy(2, &file);
+	}
+
+TInt CTestAgentManager::GetStringAttribute(TInt aAttribute, TDes& aValue, const TVirtualPathPtr& aVirtualPath)
+	{
+	TRAPD(err, GetStringAttributeL(aAttribute, aValue, aVirtualPath));
+	return err;
+	}
+
+void CTestAgentManager::GetStringAttributeL(TInt aAttribute, TDes& aValue, const TVirtualPathPtr& aVirtualPath)
+	{
+	RFile file;
+	CTestAgentFileInterface *fileObject = NULL;
+	
+	// check virtual path here to see it's ok
+	if(TTestAgentAttributes::CheckVirtualPath(aVirtualPath) != KErrNone)
+		{
+		User::Leave( KErrNotFound );	
+		}
+
+	// open file in order to retrieve an attribute from it
+	User::LeaveIfError(file.Open(iFs, aVirtualPath.URI(), EFileStream | EFileRead | EFileShareReadersOnly));
+	CleanupClosePushL(file);
+
+	if(aVirtualPath.UniqueId().Length() == 0)
+		{
+		fileObject = CTestAgentFile::NewL(file);
+		}
+	else
+		{
+		fileObject = CTestAgentDrmContent::NewL(file);
+		}
+	CleanupStack::PushL(fileObject);
+
+	User::LeaveIfError(fileObject->GetStringAttribute(aAttribute, aValue));
+	CleanupStack::PopAndDestroy(2, &file);
+	}
+
+void CTestAgentManager::NotifyStatusChange(const TDesC& /*aURI*/, TEventMask /*aMask*/, TRequestStatus& aStatus)
+	{
+	TRequestStatus *ptr = &aStatus;
+	User::RequestComplete(ptr, KErrCANotSupported);
+	}
+
+TInt CTestAgentManager::CancelNotifyStatusChange(const TDesC& /*aURI*/, TRequestStatus& /*aStatus*/)
+	{
+	return KErrCANotSupported;
+	}
+
+TInt CTestAgentManager::SetProperty(TAgentProperty /*aProperty*/, TInt /*aValue*/)
+	{
+	return KErrNone;
+	}
+
+void CTestAgentManager::DisplayInfoL(TDisplayInfo /*aInfo*/, const TVirtualPathPtr& /*aVirtualPath*/)
+	{
+	User::Leave(KErrCANotSupported);
+	}	
+
+TBool CTestAgentManager::IsRecognizedL(const TDesC& aUri, TContentShareMode /*aShareMode*/) const
+	{
+	// This is a test implementation of IsRecognizedL
+	// For testing purposes it only recognizes DCF content files
+
+	TInt result;
+	
+	// Convert URI to uppercase
+	HBufC *uriUpper = aUri.AllocLC();
+	TPtr uriPtr(uriUpper->Des());
+	uriPtr.UpperCase();
+
+	// Check that the file extension is .DRM
+	TPtrC extension = uriPtr.Right(KDrmContentExtension().Length());
+	result = extension.Compare(KDrmContentExtension);
+	CleanupStack::PopAndDestroy(uriUpper);
+	
+	if(result == 0)
+		{
+		return ETrue;
+		}
+	else 
+		{
+		return EFalse;
+		}
+	}
+
+TBool CTestAgentManager::IsRecognizedL(RFile& aFile) const
+	{
+	// This is a test implementation of IsRecognizedL
+	// For testing purposes it only recognizes DCF content files
+
+	TInt result;
+	
+	// Convert URI to uppercase
+	HBufC *uriUpper = HBufC::NewLC(KMaxFileName);
+	TPtr uriPtr(uriUpper->Des());
+	aFile.Name(uriPtr);
+	uriPtr.UpperCase();
+
+	// Check that the file extension is .DRM
+	TPtrC extension = uriPtr.Right(KDrmContentExtension().Length());
+	result = extension.Compare(KDrmContentExtension);
+	CleanupStack::PopAndDestroy(uriUpper);
+	
+	if(result == 0)
+		{
+		return ETrue;
+		}
+	else 
+		{
+		return EFalse;
+		}
+	}
+
+TBool CTestAgentManager::RecognizeFileL(const TDesC& aFileName, const TDesC8& aBuffer, TDes8& aFileMimeType, TDes8& aContentMimeType) const
+	{
+	// This is a test implementation of DoRecognizeL
+	// For testing purposes it only recognizes DCF content files
+	TInt result;
+
+	// Convert filename to uppercase
+	HBufC *FileNameUpper = aFileName.AllocLC();
+	TPtr FileNamePtr(FileNameUpper->Des());
+	FileNamePtr.UpperCase();
+
+	// Check filename extension
+	TPtrC extension = FileNamePtr.Right(KDrmContentExtension().Length());
+	result = extension.Compare(KDrmContentExtension);
+	CleanupStack::PopAndDestroy(); // FileNameUpper
+
+	if(result == 0)
+		{
+		// It's a .DRM file
+		aFileMimeType.Copy(KDrmMimeType);
+	
+		if(aBuffer.Length() > 3)
+			{
+			// Find content type 
+			// content-type length is a single byte, stored at offset 0 in the DRM file
+			TUint8 length = aBuffer[0];
+
+			// find out if the file has been processed through supplier
+			// interface yet
+			if(aBuffer[length + 1] == (TUint8)'T')
+				{
+				// content type always starts at offset 1 in the DCF file
+				aContentMimeType.Copy(aBuffer.Mid(1,length));
+				}
+			}
+		return ETrue;
+		}
+	else
+		{
+		return EFalse;
+		}
+	}
+
+
+_LIT(KAgentSpecificCommandResponse, "output");
+
+TInt CTestAgentManager::AgentSpecificCommand(TInt aCommand, const TDesC8& /*aInputBuffer*/, TDes8& aOutputBuffer)
+	{
+	if(aCommand == 1)
+		{
+		aOutputBuffer.Copy(KAgentSpecificCommandResponse());
+		return KErrNone;
+		}
+	return KErrCANotSupported;
+	}
+
+void CTestAgentManager::AgentSpecificCommand(TInt aCommand, const TDesC8& aInputBuffer, TDes8& aOutputBuffer, TRequestStatus& aStatus)
+	{
+	TRequestStatus *ptr = &aStatus;
+	User::RequestComplete(ptr, AgentSpecificCommand(aCommand, aInputBuffer, aOutputBuffer));
+	}
+
+void CTestAgentManager::DisplayManagementInfoL()
+	{
+	User::Leave(KErrCANotSupported);
+	}
+
+//
+// This API is non-leaving and returns void. If we want to
+// make leavescan happy, the options are: 1. TRAP leave calls
+// and ignore the errors. 2. Panic. Both options could potentially
+// break RTA clients' testcases. Hence just leave it the way it is.
+#ifndef SYMBIAN_DISABLE_UPWARD_DEPENDENCY
+void CTestAgentManager::PrepareHTTPRequestHeaders(RStringPool& aStringPool, RHTTPHeaders& aRequestHeaders) const
+	{
+	TBuf8 <KMaxDataTypeLength> mimeType;
+	mimeType.Copy(KDrmMimeType());
+	RStringF valStr = aStringPool.OpenFStringL(mimeType);
+	CleanupClosePushL(valStr);
+	THTTPHdrVal val(valStr);
+	aRequestHeaders.SetFieldL(aStringPool.StringF(HTTP::EAccept, RHTTPSession::GetTable()), val);
+	CleanupStack::PopAndDestroy(&valStr);
+	}
+#else
+void CTestAgentManager::PrepareHTTPRequestHeaders(RStringPool& /*aStringPool*/, RHTTPHeaders& /*aRequestHeaders*/) const
+	{
+	}
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/testagentmanager.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,83 @@
+/*
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#ifndef __TESTAGENTMANAGER_H__
+#define __TESTAGENTMANAGER_H__
+
+#include <caf/caf.h>
+#include "agentinterface.h"
+
+
+class RHTTPHeaders;
+class RStringPool;
+
+/** A simple agent implementing a dummy DRM file format
+
+Several of the functions such as Copy, Rename and GetDir are not supported
+by this agent.
+
+ */
+class CTestAgentManager : public ContentAccess::CAgentManager
+		{
+	public:
+		static CTestAgentManager* NewL();
+		static CTestAgentManager* NewLC();
+
+		~CTestAgentManager(void);
+
+	public:
+		// From CAgentManager
+		virtual TInt DeleteFile(const TDesC &aFileName);
+		virtual TInt CopyFile(const TDesC& aSource, const TDesC& aDestination);
+		virtual TInt CopyFile(RFile& aSource, const TDesC& aDestination);
+		virtual TInt RenameFile(const TDesC& aSource, const TDesC& aDestination);
+		virtual TInt MkDir(const TDesC& aPath);
+		virtual TInt MkDirAll(const TDesC& aPath);
+		virtual TInt RmDir(const TDesC& aPath);
+		virtual TInt GetDir(const TDesC& aName,TUint aEntryAttMask,TUint aEntrySortKey, CDir*& aEntryList) const;
+		virtual TInt GetDir(const TDesC& aName,TUint aEntryAttMask,TUint aEntrySortKey, CDir*& aEntryList,CDir*& aDirList) const;
+		virtual TInt GetDir(const TDesC& aName,const TUidType& aEntryUid,TUint aEntrySortKey, CDir*& aFileList) const;
+		virtual TInt GetAttribute(TInt aAttribute, TInt& aValue, const ContentAccess::TVirtualPathPtr& aVirtualPath);
+		virtual TInt GetAttributeSet(ContentAccess::RAttributeSet& aAttributeSet, const ContentAccess::TVirtualPathPtr& aVirtualPath);
+		virtual TInt GetStringAttributeSet(ContentAccess::RStringAttributeSet& aAttributeSet, const ContentAccess::TVirtualPathPtr& aVirtualPath);
+		virtual TInt GetStringAttribute(TInt aAttribute, TDes& aValue, const ContentAccess::TVirtualPathPtr& aVirtualPath);
+		virtual void NotifyStatusChange(const TDesC& aURI, ContentAccess::TEventMask aMask, TRequestStatus& aStatus);
+		virtual TInt CancelNotifyStatusChange(const TDesC& aURI, TRequestStatus& aStatus);
+		virtual TInt SetProperty(ContentAccess::TAgentProperty aProperty, TInt aValue);
+		virtual void DisplayInfoL(ContentAccess::TDisplayInfo aInfo, const ContentAccess::TVirtualPathPtr& aVirtualPath);
+		virtual TBool IsRecognizedL(const TDesC& aURI, ContentAccess::TContentShareMode aShareMode) const;
+		virtual TBool IsRecognizedL(RFile& aFile) const;
+		virtual TBool RecognizeFileL(const TDesC& aFileName, const TDesC8& aBuffer, TDes8& aFileMimeType, TDes8& aContentMimeType) const;
+		virtual TInt AgentSpecificCommand(TInt aCommand, const TDesC8& aInputBuffer, TDes8& aOutputBuffer);
+		virtual void AgentSpecificCommand(TInt aCommand, const TDesC8& aInputBuffer, TDes8& aOutputBuffer, TRequestStatus& aStatus);
+		virtual void DisplayManagementInfoL();
+		virtual void PrepareHTTPRequestHeaders(RStringPool& aStringPool, RHTTPHeaders& aRequestHeaders) const;
+	private:
+		CTestAgentManager();
+		void ConstructL();
+		void GetAttributeL(TInt aAttribute, TInt& aValue, const ContentAccess::TVirtualPathPtr& aVirtualPath);
+		void GetAttributeSetL(ContentAccess::RAttributeSet& aAttributeSet, const ContentAccess::TVirtualPathPtr& aVirtualPath);
+		void GetStringAttributeSetL(ContentAccess::RStringAttributeSet& aAttributeSet, const ContentAccess::TVirtualPathPtr& aVirtualPath);
+		void GetStringAttributeL(TInt aAttribute, TDes& aValue, const ContentAccess::TVirtualPathPtr& aVirtualPath);
+		
+	private:
+		RFs iFs;
+		CFileMan *iFileMan;
+		};
+
+#endif // __TESTAGENTMANAGER_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/testagentrightsmanager.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,93 @@
+/*
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <caf/caf.h>
+#include "testagentrightsmanager.h"
+
+using namespace ContentAccess;
+
+_LIT(KRightsDescription,"Rights");
+_LIT(KRightsUniqueId, "UniqueId");
+
+CTestAgentRightsManager* CTestAgentRightsManager::NewL()
+	{
+	CTestAgentRightsManager* self=new(ELeave) CTestAgentRightsManager();
+	return self;
+	}
+
+CTestAgentRightsManager::CTestAgentRightsManager()
+	{
+	}
+
+CTestAgentRightsManager::~CTestAgentRightsManager()
+	{
+	}
+  
+void  CTestAgentRightsManager::ListAllRightsL (RStreamablePtrArray< CRightsInfo > &aArray) const
+	{
+	TRightsStatus rightsStatus= ERightsStatusNone;
+	CRightsInfo *rightsInfo = CRightsInfo::NewL(KRightsDescription(), KRightsUniqueId(), ERightsTypeConsumable , rightsStatus);
+	aArray.AppendL(rightsInfo);
+	}
+	
+void  CTestAgentRightsManager::ListRightsL (RStreamablePtrArray< CRightsInfo > &aArray, const TDesC &) const
+	{
+	TRightsStatus rightsStatus= ERightsStatusNone;
+	CRightsInfo *rightsInfo = CRightsInfo::NewL(KRightsDescription(), KRightsUniqueId(), ERightsTypeConsumable , rightsStatus);
+	aArray.AppendL(rightsInfo);
+	}
+	
+void  CTestAgentRightsManager::ListRightsL (RStreamablePtrArray< CRightsInfo > &aArray, TVirtualPathPtr& /*aVirtualPath*/) const
+	{
+	TRightsStatus rightsStatus= ERightsStatusNone;
+	CRightsInfo *rightsInfo = CRightsInfo::NewL(KRightsDescription(), KRightsUniqueId(), ERightsTypeConsumable , rightsStatus);
+	aArray.AppendL(rightsInfo);
+	}
+	
+void  CTestAgentRightsManager::ListContentL (RStreamablePtrArray< CVirtualPath > &aArray, CRightsInfo &aRightsInfo) const
+	{
+	CVirtualPath *virtualPath= CVirtualPath::NewL(aRightsInfo.Description());
+	aArray.AppendL(virtualPath);
+	}
+	
+MAgentRightsBase *CTestAgentRightsManager::GetRightsDataL (const CRightsInfo& /*aRightsInfo*/) const
+	{
+	return NULL;
+	}
+	
+TInt CTestAgentRightsManager::DeleteRightsObject (const CRightsInfo &aRightsInfo)
+	{
+	if(aRightsInfo.RightsType() == ERightsTypeConsumable)
+		{
+		return KErrAccessDenied;
+		}
+	else
+		{	
+		return KErrNone;
+		}
+	}
+	
+TInt CTestAgentRightsManager::DeleteAllRightsObjects (const TVirtualPathPtr& /*aVirtualPath*/)
+	{
+	return KErrNone;
+	}
+
+TInt CTestAgentRightsManager::SetProperty(TAgentProperty , TInt)
+	{
+	return KErrNotSupported;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/testagentrightsmanager.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,53 @@
+/*
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#ifndef __TESTAGENTRIGHTSMANAGER_H__
+#define __TESTAGENTRIGHTSMANAGER_H__
+
+#include <caf/caf.h>
+#include "agentinterface.h"
+
+/** A simple agent implementing a small part of OMA DRM v1.0
+
+Several of the functions such as Copy, Rename and GetDir are not supported
+by this agent.
+
+ */
+class CTestAgentRightsManager : public ContentAccess::CAgentRightsManager
+		{
+	public:
+		static CTestAgentRightsManager* NewL();
+		static CTestAgentRightsManager* NewLC();
+
+		~CTestAgentRightsManager();
+
+	public:
+		// From CAgentRightsManager
+		virtual void  ListAllRightsL (ContentAccess::RStreamablePtrArray< ContentAccess::CRightsInfo > &aArray) const; 
+		virtual void  ListRightsL (ContentAccess::RStreamablePtrArray< ContentAccess::CRightsInfo > &aArray, const TDesC &aUri) const;  
+		virtual void  ListRightsL (ContentAccess::RStreamablePtrArray< ContentAccess::CRightsInfo > &aArray, ContentAccess::TVirtualPathPtr &aVirtualPath) const;
+		virtual void  ListContentL (ContentAccess::RStreamablePtrArray< ContentAccess::CVirtualPath > &aArray, ContentAccess::CRightsInfo &aRightsInfo) const;
+		virtual ContentAccess::MAgentRightsBase *  GetRightsDataL (const ContentAccess::CRightsInfo &aRightsInfo) const;
+		virtual TInt  DeleteRightsObject (const ContentAccess::CRightsInfo &aRightsInfo);
+		virtual TInt  DeleteAllRightsObjects (const ContentAccess::TVirtualPathPtr &aVirtualPath);
+		virtual TInt SetProperty(ContentAccess::TAgentProperty aProperty, TInt aValue);
+	private:
+		CTestAgentRightsManager();
+		};
+
+#endif // __TESTAGENTMANAGER_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/contentiterator/ContentIteratorInterface.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,48 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#ifndef __CONTENTITERATORINTERFACE_H__
+#define __CONTENTITERATORINTERFACE_H__
+
+#include <e32base.h>
+
+namespace ContentAccess 
+	{
+	/**
+	@internalComponent
+	@released
+	*/
+	class MContentIterator :public CBase
+		{
+	public:
+		/** The location of the current content object 
+		*/
+		virtual const TDesC& FileName() const = 0;
+		virtual const TDesC& UniqueId() const = 0;
+		virtual const TDesC& Name() const = 0;
+		virtual const TDesC8& MimeType() const = 0;
+		
+	
+		/** Move iterator to the next content object 
+
+		@return KErrNone if successful, KErrNotFound if there are no more content objects in the specified search
+		*/
+		virtual TInt Next() = 0;
+		};
+	}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/contentiterator/EmbeddedcontentIterator.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,87 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+/**
+ @file
+ @internalComponent
+ @released
+*/
+
+
+#ifndef __CAF_EMBEDDEDCONTENTITERATOR_H__
+#define __CAF_EMBEDDEDCONTENTITERATOR_H__
+
+#include <e32base.h>
+
+#include "streamableptrarray.h"
+#include <caf/virtualpathptr.h>
+#include "ContentIteratorInterface.h"
+
+namespace ContentAccess 
+	{
+	class CContent;
+	class CEmbeddedObject;
+	class CEmbeddedContentIteratorBase;
+
+	/** Recursively iterate over all content objects within a file
+
+	Can be used to find the all content objects inside a given file. A mimetype
+	can be specified to return only those objects with the correct mime type
+
+	@internalComponent
+	@released
+	*/
+	NONSHARABLE_CLASS(CEmbeddedContentIterator): public MContentIterator
+		{	
+	public:
+		/** Create a content iterator for a particular path in the file system
+		@param aVirtualPath The file to search inside
+		@param aRecursive Whether to explore sub-containers under the given path
+		@param aMimeType The mime type to search for. Finds content objects of any mime types if this parameter is omitted
+		@leave KErrNotFound If no suitable content objects were found inside the given path
+		*/
+		static CEmbeddedContentIterator* NewL(const TVirtualPathPtr& aVirtualPath, TBool aRecursive, const TDesC8& aMimeType = KNullDesC8);
+
+		
+		virtual ~CEmbeddedContentIterator();
+
+		// MContentIterator
+		virtual const TDesC& FileName() const;
+		virtual const TDesC& UniqueId() const;
+		virtual const TDesC& Name() const;
+		virtual const TDesC8& MimeType() const;
+		virtual TInt Next();
+		
+		
+	private:
+		CEmbeddedContentIterator();
+		void ConstructL(const TVirtualPathPtr& aVirtualPath, TBool aRecursive, const TDesC8& aMimeType);
+
+		// Construction parameters (copies)
+		CContent* iContent;  // created from virtual path
+		TBool iRecursive;
+		HBufC8* iMimeType;
+		HBufC* iUri;
+			
+		// Iterator that actually does the work
+		CEmbeddedContentIteratorBase* iSubIterator;
+		};
+
+	}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/contentiterator/EmbeddedcontentIteratorBase.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,95 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+/**
+ @file
+ @internalComponent
+ @released
+*/
+
+
+#ifndef __CAF_EMBEDDEDCONTENTITERATORBASE_H__
+#define __CAF_EMBEDDEDCONTENTITERATORBASE_H__
+
+#include <e32base.h>
+
+#include "streamableptrarray.h"
+#include <caf/virtualpathptr.h>
+
+namespace ContentAccess 
+	{
+	class CContent;
+	class CEmbeddedObject;
+
+
+	/** Internal class for recursively searching through a particular content file
+
+	Only ever created by CContentIteratorBase, CEmbeddedContetnIterator or itself
+
+	@internalComponent
+	@released
+	*/
+	NONSHARABLE_CLASS(CEmbeddedContentIteratorBase) : public CBase
+		{
+	public:
+		virtual ~CEmbeddedContentIteratorBase();
+
+		CEmbeddedObject& EmbeddedObject();
+		TInt Next();
+
+	private:
+		// Only ever created by one of these two or itself
+		friend class CEmbeddedContentIterator;
+		friend class CContentIteratorBase;
+
+		/** Create a content iterator for a particular path in the file system
+		@param aContent Already set up to look at the container we are interested in
+		@param aRecursive Whether to explore sub-containers under the given path
+		@param aMimeType The mime type to search for. Finds content objects of any mime types if this parameter is omitted
+		@leave KErrNotFound If no suitable content objects were found inside the given path
+		*/
+		static CEmbeddedContentIteratorBase* NewL(CContent& aContent, TBool aRecursive, const TDesC8& aMimeType);
+
+		CEmbeddedContentIteratorBase(CContent& aContent, TBool aRecursive, const TDesC8& aMimeType );
+		void ConstructL();
+
+		// Construction parameters
+		CContent& iContent;
+		TBool iRecursive;
+		const TDesC8& iMimeType;
+
+		// Index into the list of embedded content objects
+		TInt iContentIndex;
+		
+		// Index into the list of embedded container objects
+		TInt iContainerIndex;
+		
+		// Objects inside the current container within the specificed file
+		RStreamablePtrArray<CEmbeddedObject> iEmbeddedContentObjects;
+
+		// Container Objects inside the current container within the specified file
+		RStreamablePtrArray<CEmbeddedObject> iEmbeddedContainerObjects;
+
+		// Used for looking inside sub-containers
+		CEmbeddedContentIteratorBase* iSubIterator;
+		};
+
+
+	}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/contentiterator/FileContentIterator.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,96 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+#include <f32file.h>
+#include <apmstd.h>
+
+#include "contentIterator.h"
+#include "virtualpath.h"
+#include "content.h"
+#include "manager.h"
+#include "embeddedobject.h"
+#include "FileContentIterator.h"
+#include "FileContentIteratorBase.h"
+
+using namespace ContentAccess;
+
+CFileContentIterator* CFileContentIterator::NewL(const TDesC& aPath, TBool aRecursive, const TDesC8& aMimeType)
+	{
+	CFileContentIterator* self = new (ELeave) CFileContentIterator();
+	CleanupStack::PushL(self);
+	self->ConstructL(aPath, aRecursive, aMimeType);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CFileContentIterator::ConstructL(const TDesC& aPath, TBool aRecursive, const TDesC8& aMimeType)
+	{
+	if(aPath.Length() == 0)
+		{
+		User::Leave(KErrPathNotFound);
+		}
+
+	iPath = aPath.AllocL();
+	iRecursive = aRecursive;
+	iMimeType = aMimeType.AllocL();
+
+	iManager = CManager::NewL();
+
+	// Find the first content object
+	iSubIterator = CFileContentIteratorBase::NewL(*iManager, *iPath, iRecursive, *iMimeType);
+	}
+
+CFileContentIterator::CFileContentIterator()
+	{
+
+	}
+CFileContentIterator::~CFileContentIterator()
+	{
+	delete iSubIterator;
+	delete iManager;
+	delete iPath;
+	delete iMimeType;
+	}	
+
+
+const TDesC& CFileContentIterator::FileName() const
+	{
+	return iSubIterator->FileName();
+	}
+
+const TDesC& CFileContentIterator::UniqueId() const
+	{
+	return iSubIterator->UniqueId();
+	}
+
+const TDesC& CFileContentIterator::Name() const
+	{
+	return iSubIterator->Name();
+	}
+
+const TDesC8& CFileContentIterator::MimeType() const
+	{
+	return iSubIterator->MimeType();
+	}
+
+TInt CFileContentIterator::Next()		
+	{
+	return iSubIterator->Next();
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/contentiterator/FileContentIterator.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,84 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+/**
+ @file
+ @internalComponent
+ @released
+*/
+
+
+#ifndef __CAF_FILECONTENTITERATOR_H__
+#define __CAF_FILECONTENTITERATOR_H__
+
+#include <e32base.h>
+
+#include "streamableptrarray.h"
+#include <caf/virtualpathptr.h>
+#include "ContentIteratorInterface.h"
+
+namespace ContentAccess 
+	{
+	class CManager;
+	class CFileContentIteratorBase;
+
+	/** Recursively iterates over all files and then into each file to determine the content
+	objects inside 
+
+	@internalComponent
+	@released
+	*/
+	NONSHARABLE_CLASS(CFileContentIterator): public MContentIterator
+		{
+	public:
+		/** Create a content iterator for a particular path in the file system
+		@param aPath The path to search under
+		@param aRecursive Whether to explore sub-directories under the given path
+		@param aMimeType The mime type to search for. Finds content objects of any mime types if this parameter is omitted
+		@leave KErrNotFound If no suitable content objects were found inside the given path
+		*/
+		static CFileContentIterator* NewL(const TDesC& aPath, TBool aRecursive, const TDesC8& aMimeType);
+
+		virtual ~CFileContentIterator();
+
+		// MContentIterator
+		virtual const TDesC& FileName() const;
+		virtual const TDesC& UniqueId() const;
+		virtual const TDesC& Name() const;
+		virtual const TDesC8& MimeType() const; 
+		virtual TInt Next();
+		
+
+	private:
+		CFileContentIterator();
+		void ConstructL(const TDesC& aPath, TBool aRecursive, const TDesC8& aMimeType);
+
+		// Manager for doing GetDir()
+		CManager* iManager;
+
+		// Construction Parameters
+		HBufC* iPath;
+		TBool iRecursive;
+		HBufC8* iMimeType;
+
+		CFileContentIteratorBase* iSubIterator;
+		};
+
+	}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/contentiterator/FileContentIteratorBase.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,97 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+/**
+ @file
+ @internalComponent
+ @released
+*/
+
+
+#ifndef __FILECONTENTITERATORBASE_H__
+#define __FILECONTENTITERATORBASE_H__
+
+#include <e32base.h>
+
+#include "streamableptrarray.h"
+#include "ContentIteratorInterface.h"
+#include <caf/virtualpathptr.h>
+
+class CDir;
+
+namespace ContentAccess 
+	{
+	class CContent;
+	class CManager;
+	class CEmbeddedObject;
+
+	/** Internal class used to recursively iterate over all files in a path and then
+	iterate into all content objects inside each file
+
+	@internalComponent
+	@released
+	*/
+	NONSHARABLE_CLASS(CFileContentIteratorBase) : public MContentIterator
+		{
+	public:
+		virtual ~CFileContentIteratorBase();
+		
+		// MContentIterator
+		virtual const TDesC& FileName() const;
+		virtual const TDesC& UniqueId() const;
+		virtual const TDesC& Name() const;
+		virtual const TDesC8& MimeType() const;
+		virtual TInt Next();
+		
+	private:
+		// Only ever created by CFileContentIterator
+		friend class CFileContentIterator;
+
+		/** Create a content iterator for a particular path in the file system
+		@param aPath The path to search under
+		@param aRecursive Whether to explore sub-directories under the given path
+		@param aMimeType The mime type to search for. Finds content objects of any mime types if this parameter is omitted
+		@leave KErrNotFound If no suitable content objects were found inside the given path
+		*/
+		static CFileContentIteratorBase* NewL(CManager &aManager, const TDesC& aPath, TBool aRecursive, const TDesC8& aMimeType = KNullDesC8);
+
+		CFileContentIteratorBase(CManager& aManager, const TDesC& aPath, TBool aRecursive, const TDesC8& aMimeType);
+		void ConstructL();
+
+		// Construction parameters
+		CManager& iManager;
+		const TDesC& iPath;
+		TBool iRecursive;
+		const TDesC8& iMimeType;
+
+		MContentIterator* iSubIterator;
+		
+		// Index into the directory list
+		TInt iDirIndex;
+		TInt iFileIndex;
+
+		// List of files and directories inside (iPath)
+		CDir* iCurrentDirectoryList;
+		CDir* iCurrentFileList;
+		
+		// Used to store the path of the subdirectory we are exploring
+		HBufC* iNewPath;
+		};
+	}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/contentiterator/FileContentIteratorbase.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,204 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+#include <f32file.h>
+#include <apmstd.h>
+
+#include "contentIterator.h"
+#include "virtualpath.h"
+#include "content.h"
+#include "manager.h"
+#include "embeddedobject.h"
+#include "FileContentIteratorBase.h"
+#include "EmbeddedcontentIterator.h"
+
+using namespace ContentAccess;
+
+_LIT(KCAFBackSlashCharacter, "\\");
+
+
+CFileContentIteratorBase* CFileContentIteratorBase::NewL(CManager &aManager, const TDesC& aPath, TBool aRecursive, const TDesC8& aMimeType)
+	{
+	CFileContentIteratorBase* self = new (ELeave) CFileContentIteratorBase(aManager, aPath, aRecursive, aMimeType);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+CFileContentIteratorBase::CFileContentIteratorBase(CManager& aManager, const TDesC& aPath, TBool aRecursive, const TDesC8& aMimeType) :
+		iManager(aManager), iPath(aPath), iRecursive(aRecursive), iMimeType(aMimeType)
+	{
+	iDirIndex = 0;
+	iFileIndex = 0;
+	}
+
+void CFileContentIteratorBase::ConstructL()
+	{
+	// Get our list of files and directories
+	User::LeaveIfError(iManager.GetDir(iPath, ESortByName, KEntryAttNormal, iCurrentFileList, iCurrentDirectoryList));
+
+	if(!iRecursive)
+		{
+		// Won't be needing the list of directories
+		delete iCurrentDirectoryList;
+		iCurrentDirectoryList = NULL;
+		}
+
+	// Find the Next,  (ie. first content object) inside this directory
+	// This will leave if nothing was found
+	User::LeaveIfError(Next());
+	}
+
+CFileContentIteratorBase::~CFileContentIteratorBase()
+	{
+	delete iSubIterator;
+	delete iCurrentDirectoryList;
+	delete iCurrentFileList;
+	delete iNewPath;
+	}
+
+const TDesC& CFileContentIteratorBase::FileName() const
+	{
+	return iSubIterator->FileName();
+	}
+
+const TDesC& CFileContentIteratorBase::UniqueId() const
+	{
+	return iSubIterator->UniqueId();
+	}
+
+const TDesC& CFileContentIteratorBase::Name() const
+	{
+	return iSubIterator->Name();
+	}
+	
+const TDesC8& CFileContentIteratorBase::MimeType() const
+	{
+	return iSubIterator->MimeType();
+	}
+		
+TInt CFileContentIteratorBase::Next()
+	{	
+	_LIT(KSysDirEntry, "sys");
+	
+	TInt ret = KErrNotFound;
+
+	// If we are already looking into some sub container, try finding the next in there
+	if(iSubIterator)
+		{
+		ret = iSubIterator->Next();
+		if(ret == KErrNone)
+			{
+			return ret;
+			}
+		else 
+			{
+			// Delete sub-iterator
+			delete iSubIterator;
+			iSubIterator = NULL;
+			delete iNewPath;
+			iNewPath = NULL;
+			}
+		}
+
+
+	// Search files in our directory first
+	// this allows us to free memory used by iCurrentFileList
+	// before recursing into sub-directories
+	if(iCurrentFileList)
+		{
+		for ( ; iFileIndex < iCurrentFileList->Count(); iFileIndex++)
+			{
+			// Get a reference to the file we are interested in
+			const TEntry &entry = (*iCurrentFileList)[iFileIndex];
+		
+			// create a new path string for the sub directory
+			TRAP(ret, iNewPath = HBufC::NewL(iPath.Length() + entry.iName.Length()));
+			if(ret != KErrNone)
+				{
+				return ret;
+				}
+			iNewPath->Des().Append(iPath);
+			iNewPath->Des().Append(entry.iName);
+		
+			// Look inside the file
+			TRAP(ret, iSubIterator = CEmbeddedContentIterator::NewL(TVirtualPathPtr(*iNewPath, KNullDesC()), iRecursive, iMimeType));
+		
+			if(ret == KErrNone)
+				{	
+				// must have found something in the file
+				// make sure next time we look at the next item in our list
+				iFileIndex++;
+				return KErrNone;
+				}
+			// next iteration
+			delete iNewPath;
+			iNewPath = NULL;
+			}
+		delete iCurrentFileList;
+		iCurrentFileList = NULL;
+		}
+
+
+	if(iRecursive)
+		{
+		// Search sub directories
+		for ( ; iDirIndex < iCurrentDirectoryList->Count(); iDirIndex++)
+			{
+			// Get a reference to the directory we are interested in
+			const TEntry &entry = (*iCurrentDirectoryList)[iDirIndex];
+
+			// make sure it's not the sys directory
+			if(KSysDirEntry().CompareF(entry.iName) == 0 && iPath.Length() == 3)
+				{
+				// go to the next iteration, skip the sys directory
+				continue;
+				}
+
+			// create a new path string for the sub directory
+			TRAP(ret, iNewPath = HBufC::NewL(iPath.Length() + 1 + entry.iName.Length()));
+			if(ret != KErrNone)
+				{
+				return ret;
+				}
+			iNewPath->Des().Append(iPath);
+			iNewPath->Des().Append(entry.iName);
+			iNewPath->Des().Append(KCAFBackSlashCharacter);
+		
+
+			// lets look inside the directory
+			TRAP(ret, iSubIterator = CFileContentIteratorBase::NewL(iManager, *iNewPath, iRecursive, iMimeType));
+
+			if(ret == KErrNone)
+				{	
+				// must have found something in the sub-iterator
+				// make sure next time we look at the next item in our list
+				iDirIndex++;
+				return KErrNone;
+				}
+			// next iteration
+			delete iNewPath;
+			iNewPath = NULL;
+			}
+		}
+	
+	// reached the end of our list of directories and list of files
+	return KErrNotFound;	
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/contentiterator/contentIterator.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,123 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+/**
+ @file
+ @publishedPartner
+ @released
+*/
+
+
+#ifndef __CAF_CONTENTITERATOR_H__
+#define __CAF_CONTENTITERATOR_H__
+
+#include <e32base.h>
+#include <apmstd.h>
+#include <caf/caftypes.h>
+
+namespace ContentAccess 
+	{
+	class CContentIteratorData;
+	class TVirtualPathPtr;
+	
+	/** This class can be used to asynchronously search through directories
+	on the files system to find content with a particular mime type
+	
+	This class creates a thread that is used to search recursively. It uses
+	a considerable amount of memory and should be destroyed as soon as it
+	is no longer needed.
+	 
+	It must work in a thread rather than as a server so the CAF agents can
+	perform capability checking against the client process. It uses a thread
+	because it is recursive and could lead to a stack overflow if the recursion
+	occurred in the client thread
+	
+	Since CContentIterator is an active object clients should not 
+	use the User::WaitForRequest() API since it will not give 
+	CContentIterator::RunL() a chance to run.
+	
+	@publishedPartner
+	@released
+	*/
+	class CContentIterator : public CActive
+		{
+	public:
+	
+		/** Create a CContentIterator
+		
+		@param aPath The path to search for content
+		@param aRecursive ETrue to recursively search within directories
+		@param aMimeType The mime type to search for, a zero length descriptor can be used as a wildcard to find all content
+		@return a new CContentIterator
+		*/
+		IMPORT_C static CContentIterator* NewL(const TDesC& aPath, TBool aRecursive, const TDesC8& aMimeType);
+
+		/** Destructor */
+		virtual ~CContentIterator();
+
+		/** Find the next content object
+		
+		Clients should not use the User::WaitForRequest() API when calling 
+		the Next() function since it will not give CContentIterator's RunL() 
+		a chance to run.
+		
+		@param aStatus Request to complete when the next content item is found or KErrNotFound if no further content was found
+		*/
+		IMPORT_C void Next(TRequestStatus &aStatus);
+
+		/** The name of the file containing the content object found in the most recent call to Next()
+	
+		@return The name of the file
+		*/
+		IMPORT_C TVirtualPathPtr VirtualPath();
+
+		/** The mime type of the content object found in the most recent call to Next()
+	
+		@return The name of the file
+		*/
+		IMPORT_C const TDesC8& MimeType();
+
+		/** The name of the content object found in the most recent call to Next()
+	
+		@return The name of the content object
+		*/
+		IMPORT_C const TDesC& Name();
+
+
+	protected:
+		virtual void DoCancel();
+		virtual void RunL();
+			
+	private:
+		CContentIterator();
+		void ConstructL(const TDesC& aPath, TBool aRecursive, const TDesC8& aMimeType);
+		
+		static TInt ThreadEntry(TAny* aAny);
+	
+	private:
+		TBuf8 <KMaxDataTypeLength> iMimeType;
+		TFileName iFileName;
+		TBuf <KMaxCafContentName> iName;
+		TBuf <KMaxCafUniqueId> iUniqueId;
+	
+		RThread iWorkerThread;	
+		CContentIteratorData* info;
+		};
+	}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/contentiterator/contentiterator.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,188 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+#include "cafpanic.h"
+#include "contentIterator.h"
+#include "FileContentIterator.h"
+#include "contentiteratordata.h"
+
+using ContentAccess::CContentIterator;
+using ContentAccess::TVirtualPathPtr;
+
+_LIT(KIteratorThread,"ContentIterator");
+EXPORT_C CContentIterator* CContentIterator::NewL(const TDesC& aPath, TBool aRecursive, const TDesC8& aMimeType) 
+	{  
+	CContentIterator* self = new (ELeave) CContentIterator();
+	CleanupStack::PushL(self);
+	self->ConstructL(aPath, aRecursive, aMimeType);
+	CleanupStack::Pop();
+	return self;
+	}
+
+CContentIterator::CContentIterator() : CActive(EPriorityStandard)
+	{
+	}
+
+CContentIterator::~CContentIterator()
+	{
+	// tell thread to cancel and shutdown
+	Cancel();
+	
+	// close thread handle
+	iWorkerThread.Close();
+	delete info; 
+	}
+
+void CContentIterator::ConstructL(const TDesC& aPath, TBool aRecursive, const TDesC8& aMimeType)
+	{	
+	// This data buffer will be shared between the client and the worker thread
+	info = CContentIteratorData::NewL(aPath,aRecursive,aMimeType);
+	
+	// create the thread, need a big heap and stack for recursively searching through directories
+	User::LeaveIfError(iWorkerThread.Create(KIteratorThread(),CContentIterator::ThreadEntry,32768, KMinHeapSize, 131072, (void *) info , EOwnerProcess));
+
+	// add ourselves to active scheduler
+	CActiveScheduler::Add(this);
+
+	// Set up notification in case the thread panics etc
+	iStatus = KRequestPending;
+	iWorkerThread.Logon(iStatus);
+	SetActive();
+	
+	// start the thread
+	iWorkerThread.Resume();
+	}
+
+
+void CContentIterator::DoCancel()
+	{
+	// Wait until thread finishes whatever it's doing
+	info->Lock();
+	 
+	// Signal for the thread to close
+	info->RunThreadFunction(EIteratorShutdownThread);
+	}
+
+void CContentIterator::RunL()
+	{
+	// Thread must have completed
+	if(iWorkerThread.ExitType() == EExitPanic)
+		{
+		// Thread panicd, better panic our thread
+		User::Panic(KCafPanicString, ECafPanicContentIteratorThreadPanic);
+		}
+	}
+
+EXPORT_C TVirtualPathPtr CContentIterator::VirtualPath()
+	{
+	// Wait until thread finishes whatever it's doing
+	info->Lock(); 
+	iFileName.Copy(info->Path());	
+	iUniqueId.Copy(info->UniqueId());	
+	info->Unlock(); 
+	return TVirtualPathPtr(iFileName, iUniqueId);
+	}
+
+EXPORT_C const TDesC&  CContentIterator::Name()
+	{
+	// Wait until thread finishes whatever it's doing
+	info->Lock(); 
+	iName.Copy(info->Name());	
+	info->Unlock(); 
+	return iName;
+	}
+
+EXPORT_C const TDesC8& CContentIterator::MimeType()
+	{
+	// Wait until thread finishes whatever it's doing
+	info->Lock(); 
+	iMimeType.Copy(info->MimeType());
+	info->Unlock(); 
+	return iMimeType;
+	}
+
+EXPORT_C void CContentIterator::Next(TRequestStatus &aStatus)
+	{
+	// Wait until thread finishes whatever it's doing
+	info->Lock(); 
+
+	// Remember which thread and TRequestStatus to notify
+	TThreadId id = RThread().Id();
+	info->SetClientRequest(id, aStatus);
+	
+	// Tell it to find the next iteration
+	info->RunThreadFunction(EIteratorFindNextContentObject); 
+	}
+	
+
+TInt CContentIterator::ThreadEntry(TAny* aAny) 
+	{
+	TBool exitNow = EFalse;
+	TInt err;
+	CFileContentIterator* iterator = NULL;
+	RThread clientThread;
+	CContentIteratorData* info = reinterpret_cast <CContentIteratorData *> (aAny);
+	
+	// create a trap handler
+	CTrapCleanup* cleanup = CTrapCleanup::New();
+	
+	while(!exitNow)
+		{
+		// Thread will wait here until signaled by other CContentIterator functions
+		switch(info->ThreadWait())
+			{
+		// Client thread has asked us to shutdown, exit loop
+		case EIteratorShutdownThread:
+			exitNow = ETrue;
+			break;
+		// Client thread is asking us to find the next object	
+		case EIteratorFindNextContentObject:
+			if(!iterator)
+				{
+				TRAP(err, iterator = CFileContentIterator::NewL(info->Path(), info->IsRecursive(), info->MimeType()));
+				info->SetData(KNullDesC(), KNullDesC(), KNullDesC(), KNullDesC8());
+				}
+			else
+				{
+				err = iterator->Next();
+				}
+	
+			if(err == KErrNone)
+				{
+				// If a content object was found, write the value back 
+				// into the other thread while the info is still locked
+				info->SetData(iterator->FileName(),iterator->UniqueId(), iterator->Name(), iterator->MimeType());
+				}
+
+			// Complete the clients asynchronous request
+			info->CompleteClientRequest(err);
+			break;
+		default:
+			User::Panic(KCafPanicString, ECafPanicContentIteratorUnknownRequest);
+			break;
+			};
+
+		// Allow the client to post a new request
+		info->Unlock(); 
+		}
+	delete iterator;
+	delete cleanup;
+	return KErrNone;
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/contentiterator/contentiteratordata.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,136 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include "contentiteratordata.h"
+
+using namespace ContentAccess;
+
+CContentIteratorData* CContentIteratorData::NewL(const TDesC& aSearchPath, TBool aRecursive, const TDesC8& aMimeType)
+	{
+	CContentIteratorData* self = new (ELeave) CContentIteratorData();
+	CleanupStack::PushL(self);
+	self->ConstructL(aSearchPath, aRecursive, aMimeType);
+	CleanupStack::Pop(self);
+	return self;
+	}
+	
+CContentIteratorData::CContentIteratorData()
+	{
+	}
+	
+CContentIteratorData::~CContentIteratorData()
+	{
+	// release semaphore 
+	iThreadSemaphore.Signal();
+	
+	iDataLockSemaphore.Close();
+	iThreadSemaphore.Close();
+	}
+
+void CContentIteratorData::ConstructL(const TDesC& aSearchPath, TBool aRecursive, const TDesC8& aMimeType)
+	{
+	// Remember search parameters, the CContentIterator::ThreadEntry() 
+	// will ask for these later
+	iPath.Copy(aSearchPath);
+	iRecursive = aRecursive;
+	iMimeType.Copy(aMimeType);
+	
+	
+	// Create semaphores
+	User::LeaveIfError(iDataLockSemaphore.CreateLocal(1, EOwnerProcess));	
+	User::LeaveIfError(iThreadSemaphore.CreateLocal(1, EOwnerProcess));
+	
+	// Grab semaphore so CContentIterator::ThreadEntry function can't enter the loop yet
+	iThreadSemaphore.Wait();
+	}
+
+				
+void CContentIteratorData::Lock()
+	{
+	iDataLockSemaphore.Wait();
+	}
+
+void CContentIteratorData::Unlock()
+	{
+	iDataLockSemaphore.Signal();
+	}
+		
+void CContentIteratorData::CompleteClientRequest(TInt aError)
+	{
+	RThread clientThread;
+	clientThread.Open(iClientThreadId);
+	clientThread.RequestComplete(iClientRequest, aError);
+	clientThread.Close();
+	}
+	
+	
+void CContentIteratorData::SetClientRequest(TThreadId& aClientThreadId, TRequestStatus& aStatus)
+	{
+	// Remember the thread and TRequestStatus that must be completed later
+	iClientThreadId = aClientThreadId;
+	iClientRequest = &aStatus;
+	}
+	
+void CContentIteratorData::RunThreadFunction(TFileIteratorOperation aFunction)
+	{
+	// Unblock the CContentIterator::ThreadEntry() function and allow it to run
+	iFunction = aFunction;
+	iThreadSemaphore.Signal();
+	}
+
+TFileIteratorOperation CContentIteratorData::ThreadWait()
+	{
+	// Called by CContentIterator::ThreadEntry() to block execution until RunThreadFunction() is called
+	iThreadSemaphore.Wait();
+	return iFunction;
+	}
+
+		
+void CContentIteratorData::SetData(const TDesC& aPath, const TDesC& aUniqueId, const TDesC& aName, const TDesC8& aMimeType)
+	{
+	// Set the results found in the search
+	iPath.Copy(aPath);
+	iMimeType.Copy(aMimeType);
+	iUniqueId.Copy(aUniqueId);
+	iName.Copy(aName);
+	}
+
+const TDesC& CContentIteratorData::Path() const
+	{
+	return iPath; 
+	}
+
+const TDesC8& CContentIteratorData::MimeType() const
+	{
+	return iMimeType; 
+	}
+	
+const TDesC& CContentIteratorData::UniqueId() const
+	{
+	return iUniqueId;
+	}
+
+const TDesC& CContentIteratorData::Name() const
+	{
+	return iName;
+	}
+	
+TBool CContentIteratorData::IsRecursive() const
+	{
+	return iRecursive;	
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/contentiterator/contentiteratordata.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,159 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+/**
+ @file
+ @internalComponent
+ @released
+*/
+
+
+#ifndef __CAF_CONTENTITERATORDATA_H__
+#define __CAF_CONTENTITERATORDATA_H__
+
+#include <e32base.h>
+#include <apmstd.h>
+#include <caf/caftypes.h>
+
+namespace ContentAccess
+	{
+	/** Operations that can be performed by the thread owned by CContentIterator
+	
+	@internalComponent
+	@released
+	*/
+	enum TFileIteratorOperation
+		{
+		EIteratorShutdownThread			= 1,	///< The iterator thread must be shut down
+		EIteratorFindNextContentObject	= 2		///< Find the next content object matching the requested mime type
+		};
+
+	/** Manages data shared between CContentIterator and the thread it uses to
+	search for content.
+	
+	This class also includes a locking mechanism to ensure the data is thread-safe
+
+	@internalComponent
+	@released
+	*/
+	NONSHARABLE_CLASS(CContentIteratorData) : public CBase
+		{
+	public:
+		/** Create a new CContentIteratorData object
+		
+		@param aSearchPath The path to search for content
+		@param aRecursive ETrue to recursively search within directories
+		@param aMimeType The mime type of content to search for, zero length indicates a wildcard
+		@return a newCContentIteratorData object 
+		*/
+		static CContentIteratorData* NewL(const TDesC& aSearchPath, TBool aRecursive, const TDesC8& aMimeType);
+		
+		/** Destructor 
+		*/
+		virtual ~CContentIteratorData();
+		
+		/** Lock member data within this class. 
+		
+		Obtains a mutex lock representing the data within the class. If the data
+		is already locked this function will wait until the lock is released
+		before continuing.
+		*/
+		void Lock();
+
+		/** Releases the mutex lock for the data within the class
+
+		ie. enables another Lock() function to continue
+		*/
+		void Unlock();
+		
+		/** Complete a request in a client thread 
+		
+		@param aError The error code to complete the client
+		*/
+		void CompleteClientRequest(TInt aError);
+		
+		/** Set the thread Id and client request to complete when 
+		content is found
+		
+		@param aClientThreadId The thread making the request
+		@param aStatus The TRequestStatus to signal when content is found
+		*/
+		void SetClientRequest(TThreadId& aClientThreadId, TRequestStatus& aStatus);
+		
+		/** Allow the CContentIterator thread function to run
+		
+		@param aFunction The operation for the CContentIterator thread function to perform
+		*/
+		void RunThreadFunction(TFileIteratorOperation aFunction);		
+		
+		
+		/** Wait for a call to RunThreadFunction()
+		
+		@return The function to execute in CContentIterators thread function 
+		*/
+		TFileIteratorOperation ThreadWait();		
+		
+		/** Set data relating to the content that was found 
+		@param aFileName The name of the file where the content was found
+		@param aUniqueId The uniqueId of the content within the file
+		@param aName The name of the content object
+		@param aMimeType The mime type of the content
+		*/
+		void SetData(const TDesC& aPath, const TDesC& aUniqueId, const TDesC& aName, const TDesC8& aMimeType);
+		
+		/** The path of the file containing content
+		*/
+		const TDesC& Path() const;
+		
+		/** The uniqueId of the content within the file found using Next()
+		*/
+		const TDesC& UniqueId() const;
+		
+		/** The name of the content object 
+		*/
+		const TDesC& Name() const;
+
+		/** The mime type of the content
+		*/
+		const TDesC8& MimeType() const;
+		
+		/** Whether to perform a recursive search
+		*/
+		TBool IsRecursive() const;
+		
+	private:
+	
+		void ConstructL(const TDesC& aSearchPath, TBool aRecursive, const TDesC8& aMimeType);
+		CContentIteratorData();
+		
+		TThreadId iClientThreadId;
+		TRequestStatus* iClientRequest;
+		
+		RSemaphore iDataLockSemaphore;
+		RSemaphore iThreadSemaphore;
+		
+		TFileIteratorOperation iFunction;
+		TFileName iPath;
+		TBuf8 <KMaxDataTypeLength> iMimeType;
+		TBuf <KMaxCafUniqueId> iUniqueId;		
+		TBuf <KMaxCafContentName> iName;		
+		TBool iRecursive;
+		};
+	}
+	
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/contentiterator/embeddedcontentiterator.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,93 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <f32file.h>
+#include <apmstd.h>
+
+#include "contentIterator.h"
+#include "virtualpath.h"
+#include "content.h"
+#include "manager.h"
+#include "embeddedobject.h"
+#include "EmbeddedcontentIterator.h"
+#include "EmbeddedcontentIteratorBase.h"
+
+using namespace ContentAccess;
+
+CEmbeddedContentIterator* CEmbeddedContentIterator::NewL(const TVirtualPathPtr& aVirtualPath, TBool aRecursive, const TDesC8& aMimeType)
+	{
+	CEmbeddedContentIterator* self = new (ELeave) CEmbeddedContentIterator;
+	CleanupStack::PushL(self);
+	self->ConstructL(aVirtualPath, aRecursive, aMimeType);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+CEmbeddedContentIterator::CEmbeddedContentIterator() 
+	{
+	}
+
+CEmbeddedContentIterator::~CEmbeddedContentIterator()
+	{	
+	delete iSubIterator;
+	delete iContent;
+	delete iUri;
+	delete iMimeType;
+	}
+
+void CEmbeddedContentIterator::ConstructL(const TVirtualPathPtr& aVirtualPath, TBool aRecursive, const TDesC8& aMimeType)
+	{
+	iUri = aVirtualPath.URI().AllocL();
+	iContent = CContent::NewL(*iUri);
+	iRecursive = aRecursive;
+	iMimeType = aMimeType.AllocL();
+	
+	if(aVirtualPath.UniqueId().Length() > 0)
+		{
+		iContent->OpenContainer(aVirtualPath.UniqueId());
+		}
+	
+	// Find the first content object
+	iSubIterator = CEmbeddedContentIteratorBase::NewL(*iContent, iRecursive, *iMimeType);
+	}
+
+const TDesC& CEmbeddedContentIterator::FileName() const
+	{
+	return *iUri;
+	}
+
+const TDesC& CEmbeddedContentIterator::UniqueId() const
+	{
+	return iSubIterator->EmbeddedObject().UniqueId();
+	}
+
+const TDesC& CEmbeddedContentIterator::Name() const
+	{
+	return iSubIterator->EmbeddedObject().Name();
+	}
+
+const TDesC8& CEmbeddedContentIterator::MimeType() const
+	{
+	return iSubIterator->EmbeddedObject().MimeType();
+	}
+
+TInt CEmbeddedContentIterator::Next()
+	{
+	return iSubIterator->Next();
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/contentiterator/embeddedcontentiteratorbase.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,155 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <f32file.h>
+#include <apmstd.h>
+
+#include "contentIterator.h"
+#include "virtualpath.h"
+#include "content.h"
+#include "EmbeddedcontentIteratorBase.h"
+#include "embeddedobject.h"
+
+using namespace ContentAccess;
+
+
+CEmbeddedContentIteratorBase* CEmbeddedContentIteratorBase ::NewL(CContent& aContent, TBool aRecursive, const TDesC8& aMimeType)
+	{
+	CEmbeddedContentIteratorBase* self = new (ELeave) CEmbeddedContentIteratorBase(aContent, aRecursive, aMimeType);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CEmbeddedContentIteratorBase::ConstructL()
+	{
+	// populate the array with the items at this level of the content file
+	iContent.GetEmbeddedObjectsL(iEmbeddedContentObjects, EContentObject);
+	iContent.GetEmbeddedObjectsL(iEmbeddedContainerObjects, EContainerObject);
+
+	// Find the Next,  (ie. first content object)
+	// This will leave if there is no object
+	User::LeaveIfError(Next());
+	}
+
+CEmbeddedContentIteratorBase::CEmbeddedContentIteratorBase(CContent& aContent, TBool aRecursive, const TDesC8& aMimeType) 
+	: iContent(aContent), iRecursive(aRecursive), iMimeType(aMimeType)
+	{
+	iContentIndex = 0;
+	iContainerIndex = 0;
+	}
+
+CEmbeddedContentIteratorBase::~CEmbeddedContentIteratorBase()
+	{
+	delete iSubIterator;
+
+	// Clear array 
+	iEmbeddedContainerObjects.Close();
+	iEmbeddedContentObjects.Close();
+	}	
+
+CEmbeddedObject& CEmbeddedContentIteratorBase::EmbeddedObject()
+	{
+	// The next pointer is currently on an object inside the subiterator
+	if(iSubIterator)
+		{
+		return iSubIterator->EmbeddedObject();
+		}
+	else
+		{	
+		return *iEmbeddedContentObjects[iContentIndex - 1];
+		}
+	}
+		
+TInt CEmbeddedContentIteratorBase::Next()
+	{
+	// Must figure out if there's a constant for this
+	TBuf8 <KMaxDataTypeLength> mimeType;
+	TInt ret = KErrNotFound;
+
+	// If we are already looking into a container, try finding the next in there
+	if(iSubIterator)
+		{
+		ret = iSubIterator->Next();
+		if(ret == KErrNone)
+			{
+			return ret;
+			}
+		else 
+			{
+			// come back to our level
+			iContent.CloseContainer();
+
+			// Delete sub-iterator
+			delete iSubIterator;
+			iSubIterator = NULL;
+			}
+		}
+	
+
+	// Find content objects inside this container
+	for( ; iContentIndex < iEmbeddedContentObjects.Count(); iContentIndex++)
+		{
+		// if we don't care about mime type, this content object will do
+		if(iMimeType.Length() == 0)
+			{
+			// make sure next time we look at the next item in our array
+			iContentIndex++;
+			return KErrNone;
+			}
+
+		// See if the content object has the right mime type that we are looking for
+		mimeType.Copy(iEmbeddedContentObjects[iContentIndex]->MimeType());
+		if(iMimeType == mimeType)
+			{
+			// make sure next time we look at the next item in our array
+			iContentIndex++;
+			return KErrNone;
+			}
+		// otherwise continue to next iteration, for loop incrementes iContentIndex		
+		}		
+	
+	// Free memory allocated for content objects
+	if(iContentIndex)
+		{
+		iEmbeddedContentObjects.ResetAndDestroy();
+		iContentIndex = 0;
+		}
+
+	// Find content objects within nested containers
+	for( ; iContainerIndex < iEmbeddedContainerObjects.Count(); iContainerIndex++)
+		{
+		// If it's a container look inside 
+		iContent.OpenContainer(iEmbeddedContainerObjects[iContainerIndex]->UniqueId());
+		TRAPD(err, iSubIterator = CEmbeddedContentIteratorBase::NewL(iContent, iRecursive, iMimeType));
+		if(err == KErrNone)
+			{
+			// must have found something inside
+			// make sure next time we search at the next item in our array
+			iContainerIndex++;
+			return KErrNone;
+			}
+		// otherwise continue to next iteration
+		}
+
+	// must be at the end of the array, ie. can't find any more content objects
+	return KErrNotFound;
+	}
+
+	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/refcafhelper/bwins/cafhelperu.def	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,7 @@
+EXPORTS
+	?NewCafHelperImplL@CReferenceCafHelper@@QAEPAVMCAFHelperInterface@ContentAccess@@XZ @ 1 NONAME ; class ContentAccess::MCAFHelperInterface * CReferenceCafHelper::NewCafHelperImplL(void)
+	?HandleCAFErrorL@CReferenceCafHelper@@UAEHHABVTDesC16@@@Z @ 2 NONAME ; int CReferenceCafHelper::HandleCAFErrorL(int, class TDesC16 const &)
+	?HandleCAFErrorL@CReferenceCafHelper@@UAEHHAAVRFile@@@Z @ 3 NONAME ; int CReferenceCafHelper::HandleCAFErrorL(int, class RFile &)
+	?HandleCAFErrorL@CReferenceCafHelper@@UAEHHABVTDesC8@@@Z @ 4 NONAME ; int CReferenceCafHelper::HandleCAFErrorL(int, class TDesC8 const &)
+	?Release@CReferenceCafHelper@@UAEXXZ @ 5 NONAME ; void CReferenceCafHelper::Release(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/refcafhelper/eabi/cafhelperu.def	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,11 @@
+EXPORTS
+	_ZN19CReferenceCafHelper17NewCafHelperImplLEv @ 1 NONAME
+	_ZN19CReferenceCafHelper15HandleCAFErrorLEiRK7TDesC16 @ 2 NONAME
+	_ZThn4_N19CReferenceCafHelper15HandleCAFErrorLEiRK7TDesC16 @ 3 NONAME
+	_ZN19CReferenceCafHelper15HandleCAFErrorLEiR5RFile @ 4 NONAME
+	_ZThn4_N19CReferenceCafHelper15HandleCAFErrorLEiR5RFile @ 5 NONAME
+	_ZN19CReferenceCafHelper15HandleCAFErrorLEiRK6TDesC8 @ 6 NONAME
+	_ZThn4_N19CReferenceCafHelper15HandleCAFErrorLEiRK6TDesC8 @ 7 NONAME
+	_ZN19CReferenceCafHelper7ReleaseEv @ 8 NONAME
+	_ZThn4_N19CReferenceCafHelper7ReleaseEv @ 9 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/refcafhelper/group/bld.inf	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Reference CafHelper implementation for Content Access Framework
+*
+*/
+
+
+/**
+ @file
+*/
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_TESTMMPFILES
+
+#ifndef TOOLS
+#ifndef TOOLS2
+refcafhelper.mmp
+#endif // TOOLS2
+#endif // TOOLS
+
+PRJ_TESTEXPORTS
+
+../inc/refcafhelper.h		/epoc32/include/test/refcafhelper.h
+
+// ROM test iby
+../inc/refcafhelper.iby /epoc32/rom/include/refcafhelper.iby
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/refcafhelper/group/refcafhelper.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Reference implementation of polymorphic interface defined by KCAFHelperInterfaceUID.
+*
+*/
+
+
+/**
+ @file
+*/
+
+TARGET		cafhelper.dll
+CAPABILITY	All -Tcb
+TARGETTYPE	DLL
+
+UID			0x20024480 0x2002551D
+VENDORID	0x70000001
+
+UNPAGED
+
+SOURCEPATH	../source
+SOURCE		refcafhelper.cpp
+
+USERINCLUDE	../inc
+
+SYSTEMINCLUDE	/epoc32/include 
+SYSTEMINCLUDE	/epoc32/include/caf
+
+LIBRARY		euser.lib
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/refcafhelper/inc/refcafhelper.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,86 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+/** 
+@file 
+
+@test
+@internalComponent
+*/
+
+#ifndef __REFCAFHELPER_H__
+#define __REFCAFHELPER_H__
+
+#include <e32base.h>
+#include <caf/cafhelperinterface.h>
+
+using namespace ContentAccess;
+/**
+ This is a reference implementation of the polymorphic interface defined by 
+ UID KCAFHelperInterfaceUID.
+ 
+ @file 
+ @test
+ @internalComponent
+*/
+	 	
+NONSHARABLE_CLASS(CReferenceCafHelper) : public CBase, public MCAFHelperInterface
+	{
+	public:
+		
+		IMPORT_C MCAFHelperInterface* NewCafHelperImplL();
+		
+		CReferenceCafHelper();
+		
+		/**  
+		 This method handles the CAF error received for a given file.
+		 @param aError		One of the CAF errors. 
+		 @param aFileName 	File name or file URI for which the error is received
+		 @return 			KErrNone if the error is handled successfully.Otherwise one of the other system-wide
+							errors.
+		 @capability DRM 	Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted 
+		*/
+		IMPORT_C virtual TInt HandleCAFErrorL(TInt aError, const TDesC& aFileName);
+		
+		/**  
+		 This method handles the CAF error received for a given file .
+		 @param aError		One of the CAF errors. 
+		 @param aFileHandle File handle for which the error is received
+		 @return 			KErrNone if the error is handled successfully.Otherwise one of the other system-wide
+							errors.
+		 @capability DRM 	Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted 
+		*/	
+		IMPORT_C virtual TInt HandleCAFErrorL(TInt aError, RFile& aFileHandle);
+		
+		/**  
+		 This method handles the CAF error received for WMDRM content .
+		 @param aError		One of the CAF errors. 
+		 @param aHeaderData The header data of the content for which the error is received
+		 @return 			KErrNone if the error is handled successfully.Otherwise one of the other system-wide
+							errors.
+		 @capability DRM 	Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted 
+		*/
+		IMPORT_C virtual TInt HandleCAFErrorL(TInt aError, const TDesC8& aHeaderData);
+		
+		IMPORT_C virtual void Release();
+		
+		virtual ~CReferenceCafHelper();
+		};
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/refcafhelper/inc/refcafhelper.iby	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,26 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#ifndef __REFCAFHELPER_IBY__
+#define __REFCAFHELPER_IBY__
+
+#include <testexecute.iby>
+
+file=ABI_DIR\BUILD_DIR\cafhelper.dll		System\Libs\cafhelper.dll
+
+#endif // __REFCAFHELPER_IBY__
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/refcafhelper/source/refcafhelper.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <e32base.h>
+#include "refcafhelper.h"
+#include <caferr.h>
+
+
+EXPORT_C MCAFHelperInterface* CReferenceCafHelper::NewCafHelperImplL()
+    {
+    return new (ELeave) CReferenceCafHelper;
+    }
+
+CReferenceCafHelper::CReferenceCafHelper()
+	{
+	}
+
+EXPORT_C TInt CReferenceCafHelper::HandleCAFErrorL(TInt /*aError*/, const TDesC& /*aFileName*/)
+	{
+	return KErrNotSupported;
+	}
+
+EXPORT_C TInt CReferenceCafHelper::HandleCAFErrorL(TInt /*aError*/, RFile& /*aFileHandle*/)
+	{
+	return KErrNotSupported;
+	}
+
+EXPORT_C TInt CReferenceCafHelper::HandleCAFErrorL(TInt /*aError*/, const TDesC8& /*aHeaderData*/)
+	{
+	return KErrNotSupported;
+	}
+	
+EXPORT_C void CReferenceCafHelper::Release()
+	{
+	delete this;
+	}
+
+CReferenceCafHelper::~CReferenceCafHelper()
+	{
+	}
+	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/run_tests.bat	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,25 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+
+@ECHO OFF
+rem Runs this component's tests for udeb and cleans up afterwards, results stored in \logs\winscw\.  
+rem This script requires ExecTimeOut.exe to be downloaded through Perforce from //PR/share/DABSRelease/buildscripts/ and the environment variable SECURITYSOURCEDIR to be set (though this should have been set prior to a build) to the root of the security source tree.
+rem See test_launcher.pl -help for more information.
+IF (%SECURITYSOURCEDIR%)==() (
+ECHO ERROR: Environment variable SECURITYSOURCEDIR has not been set.  This should point to the root of your Security source tree.
+) ELSE (
+%SECURITYSOURCEDIR%\os\security\cryptomgmtlibs\securitytestfw\test\autotesting\test_launcher.pl -components caf2 -testreleases udeb -exectimeout \ExecTimeOut.exe -resultsoutput \logs\winscw
+)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/Consumerstep.script	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,477 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+LOAD_SUITE tcaf
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0001
+//! @SYMTestCaseDesc 		Get an attribute for a content object within a file
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Get a single attribute for a content object within a file
+//! @SYMTestExpectedResults	Should return KErrNone
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0001
+RUN_TEST_STEP 100 tcaf CAFDataAttributeStep c:\tcaf\attributes.ini Attribute
+END_TESTCASE SEC-CAF-CONS-0001
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0002
+//! @SYMTestCaseDesc 		Get a set of attributes for a content object within a file
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Get a set of attributes for a content object within a file
+//! @SYMTestExpectedResults	Should return KErrNone
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0002
+RUN_TEST_STEP 100 tcaf CAFDataAttributeSetStep c:\tcaf\attributes.ini AttributeSet
+END_TESTCASE SEC-CAF-CONS-0002
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0003
+//! @SYMTestCaseDesc 		Get a string attribute for a content object within a file
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Get a single string attribute for a content object within a file
+//! @SYMTestExpectedResults	Should return KErrNone
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0003
+RUN_TEST_STEP 100 tcaf CAFDataStringAttributeStep c:\tcaf\attributes.ini StringAttribute
+END_TESTCASE SEC-CAF-CONS-0003
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0004
+//! @SYMTestCaseDesc 		Get a string attribute for a content object within a file
+//! @SYMREQ			CR1440
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Get a single string attribute for a content object within a file
+//! @SYMTestExpectedResults	Should return KErrCANotSupported
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0004
+RUN_TEST_STEP 100 tcaf CAFDataStringAttributeStep c:\tcaf\attributes.ini StringAttributeECoverURI
+END_TESTCASE SEC-CAF-CONS-0004
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-3443
+//! @SYMTestCaseDesc 		Get a string attribute for a data object within a valid gif file
+//! @SYMDEF			PDEF104571
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Get a single string attribute for a data object within a valid gif file
+//! @SYMTestExpectedResults	A string attribute should successfully be returned
+//! @SYMTestType		CT
+START_TESTCASE SEC-CAF-CONS-3443
+RUN_TEST_STEP 100 tcaf CAFDataStringAttributeStep c:\tcaf\attributes.ini StringAttributeGoodGif
+END_TESTCASE SEC-CAF-CONS-3443
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-3444
+//! @SYMTestCaseDesc 		Failure to return a string attribute for a data object within an invalid gif file
+//! @SYMDEF			PDEF104571
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Attempt to get a single string attribute for a data object within an invalid gif file
+//! @SYMTestExpectedResults	An  error should be returned
+//! @SYMTestType		CT
+START_TESTCASE SEC-CAF-CONS-3444
+RUN_TEST_STEP 100 tcaf CAFDataStringAttributeStep c:\tcaf\attributes.ini StringAttributeErrorGif
+END_TESTCASE SEC-CAF-CONS-3444
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0005
+//! @SYMTestCaseDesc 		Get a set of string attributes for a content object within a file
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Get a set of string attributes for a content object within a file
+//! @SYMTestExpectedResults	Should return KErrNone
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0005
+RUN_TEST_STEP 100 tcaf CAFDataStringAttributeSetStep c:\tcaf\attributes.ini StringAttributeSet
+END_TESTCASE SEC-CAF-CONS-0005
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-3445
+//! @SYMTestCaseDesc 		Get a set of string attributes for a data object within a valid gif file
+//! @SYMDEF			PDEF104571
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Get a set of string attributes for a data object within a valid gif file
+//! @SYMTestExpectedResults	A set of string attributes should successfully be returned
+//! @SYMTestType		CT
+START_TESTCASE SEC-CAF-CONS-3445
+RUN_TEST_STEP 100 tcaf CAFDataStringAttributeSetStep c:\tcaf\attributes.ini StringAttributeSetGoodGif
+END_TESTCASE SEC-CAF-CONS-3445
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-3446
+//! @SYMTestCaseDesc 		Get a set of string attributes for a data object within an invalid gif file
+//! @SYMDEF			PDEF104571
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Get a set of string attributes for a data object within an invalid gif file
+//! @SYMTestExpectedResults	An  error should be returned for the invalid gif file within the set
+//! @SYMTestType		CT
+START_TESTCASE SEC-CAF-CONS-3446
+RUN_TEST_STEP 100 tcaf CAFDataStringAttributeSetStep c:\tcaf\attributes.ini StringAttributeSetErrorGif
+END_TESTCASE SEC-CAF-CONS-3446
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0006
+//! @SYMTestCaseDesc 		Plaintext File Size 
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Checks that the size of the file reported by RFile is the same as the size reported by CAF (F32Agent). CAF opens the file using the given filename
+//! @SYMTestExpectedResults	Sizes are equal
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0006
+RUN_TEST_STEP 100 tcaf CAFSizeStep c:\tcaf\consumerstep.ini CompareContentF32Agent
+END_TESTCASE SEC-CAF-CONS-0006
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0007
+//! @SYMTestCaseDesc 		Plaintext File Size  
+//! @SYMREQ			REQ0000
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Checks that the size of the file reported by RFile is the same as the size reported by CAF (F32Agent). CAF opens the file using the given filename, split the construction and evaluation of CData
+//! @SYMTestExpectedResults	Sizes are equal
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0007
+RUN_TEST_STEP 100 tcaf CAFSizeStep c:\tcaf\consumerstep.ini CompareContentF32AgentWithoutIntent
+END_TESTCASE SEC-CAF-CONS-0007
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0008
+//! @SYMTestCaseDesc 		Plaintext File Read and Seek 
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Checks that the data read from an RFile is the same as the data read from CAF (F32Agent). Caf opens the file using the given filename.
+//! @SYMTestExpectedResults	Data read is the same for both
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0008
+RUN_TEST_STEP 100 tcaf CAFSeekReadStep c:\tcaf\consumerstep.ini CompareContentF32Agent
+END_TESTCASE SEC-CAF-CONS-0008
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0009
+//! @SYMTestCaseDesc 		Plaintext File Handle Size 
+//! @SYMPREQ			PREQ280
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Checks that the size of the file reported by RFile is the same as the size reported by CAF (F32Agent). CAF is supplied with a handle to the open file.
+//! @SYMTestExpectedResults	Sizes are equal
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0009
+RUN_TEST_STEP 100 tcaf CAFHandleSizeStep c:\tcaf\consumerstep.ini CompareContentF32Agent
+END_TESTCASE SEC-CAF-CONS-0009
+
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0010
+//! @SYMTestCaseDesc 		Plaintext File Handle Read and Seek 
+//! @SYMPREQ			PREQ280
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Checks that the data read from an RFile is the same as the data read from CAF (F32Agent). Caf is supplied with a handle to an open file.
+//! @SYMTestExpectedResults	Data read is the same for both
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0010
+RUN_TEST_STEP 100 tcaf CAFHandleSeekReadStep c:\tcaf\consumerstep.ini CompareContentF32Agent
+END_TESTCASE SEC-CAF-CONS-0010
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0011
+//! @SYMTestCaseDesc 		DRM File Size 
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Checks that the size of a plaintext file reported by RFile is the same as the size of the content within a DRM file reported by CAF (TestAgent). CAF opens the file using the given filename
+//! @SYMTestExpectedResults	Sizes are equal
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0011
+RUN_TEST_STEP 100 tcaf CAFSizeStep c:\tcaf\consumerstep.ini CompareContentTestAgent
+END_TESTCASE SEC-CAF-CONS-0011
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0012
+//! @SYMTestCaseDesc 		DRM File Read and Seek
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Checks that data read from a plaintext file by RFile is the same as data read from the content within a DRM file by CAF (TestAgent). CAF opens the file using the given filename
+//! @SYMTestExpectedResults	data read is the same for both
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0012
+RUN_TEST_STEP 100 tcaf CAFSeekReadStep c:\tcaf\consumerstep.ini CompareContentTestAgent
+END_TESTCASE SEC-CAF-CONS-0012
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0013
+//! @SYMTestCaseDesc 		DRM File Size with file handle
+//! @SYMPREQ			PREQ280
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Checks that the size of a plaintext file reported by RFile is the same as the size of the content within a DRM file reported by CAF (TestAgent). CAF opens is passed an open file handle
+//! @SYMTestExpectedResults	Sizes are equal
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0013
+RUN_TEST_STEP 100 tcaf CAFHandleSizeStep c:\tcaf\consumerstep.ini CompareContentTestAgent
+END_TESTCASE SEC-CAF-CONS-0013
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0014
+//! @SYMTestCaseDesc 		DRM File Read and Seek with file handle
+//! @SYMPREQ			PREQ280
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Checks that data read from a plaintext file by RFile is the same as data read from the content within a DRM file by CAF (TestAgent). CAF is passed an open file handle
+//! @SYMTestExpectedResults	Data read is the same for both
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0014
+RUN_TEST_STEP 100 tcaf CAFHandleSeekReadStep c:\tcaf\consumerstep.ini CompareContentTestAgent
+END_TESTCASE SEC-CAF-CONS-0014
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0015
+//! @SYMTestCaseDesc 		Compare the size of the entire file opened with TestAgent vs RFile entire file
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Checks that the size of the file reported by RFile is the same as the size reported by CAF (F32Agent). Caf opens the file using a concatenated URI and UniqueId
+//! @SYMTestExpectedResults	Sizes are equal
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0015
+RUN_TEST_STEP 100 tcaf CAFSizeStep c:\tcaf\consumerstep.ini CompareContentCombinedURI
+END_TESTCASE SEC-CAF-CONS-0015
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0016
+//! @SYMTestCaseDesc 		Read and Seek through the entire file opened with TestAgent vs RFile entire file
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Checks that the data read from an RFile is the same as the data read from CAF (TestAgent). Caf opens the file using a concatenated URI and UniqueId
+//! @SYMTestExpectedResults	Data read is the same for both
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0016
+RUN_TEST_STEP 100 tcaf CAFSeekReadStep c:\tcaf\consumerstep.ini CompareContentCombinedURI
+END_TESTCASE SEC-CAF-CONS-0016
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0017
+//! @SYMTestCaseDesc 		Plaintext multithread read
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Checks that a CAF session can be shared between multiple threads 
+//! @SYMTestExpectedResults	Data read sucessfully
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0017
+RUN_TEST_STEP 100 tcaf CAFMultiThreadCDataStep c:\tcaf\consumerstep.ini F32AgentThreadSharing
+END_TESTCASE SEC-CAF-CONS-0017
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0018
+//! @SYMTestCaseDesc 		Plaintext multithread read from handle
+//! @SYMPREQ			PREQ280
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Checks that a CAF session can be shared between multiple threads, open file handle is supplied to CAF
+//! @SYMTestExpectedResults	Data read sucessfully
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0018
+RUN_TEST_STEP 100 tcaf CAFHandleMultiThreadCDataStep c:\tcaf\consumerstep.ini F32AgentThreadSharing
+END_TESTCASE SEC-CAF-CONS-0018
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0019
+//! @SYMTestCaseDesc 		DRM multithread read
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Checks that a CAF session can be shared between multiple threads 
+//! @SYMTestExpectedResults	Data read sucessfully
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0019
+RUN_TEST_STEP 100 tcaf CAFMultiThreadCDataStep c:\tcaf\consumerstep.ini TestAgentThreadSharing
+END_TESTCASE SEC-CAF-CONS-0019
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0020
+//! @SYMTestCaseDesc 		DRM multithread read
+//! @SYMPREQ			PREQ280
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Checks that a CAF session can be shared between multiple threads, open file handle is supplied to CAF
+//! @SYMTestExpectedResults	Data read sucessfully
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0020
+RUN_TEST_STEP 100 tcaf CAFHandleMultiThreadCDataStep c:\tcaf\consumerstep.ini TestAgentThreadSharing
+END_TESTCASE SEC-CAF-CONS-0020
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0021
+//! @SYMTestCaseDesc 		Plaintext mime type
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Asks CAF for the mime type of a file handled by F32Agent
+//! @SYMTestExpectedResults	F32Agent uses Apparc to find out the mime type
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0021
+RUN_TEST_STEP 100 tcaf CAFMimeTypeCDataStep c:\tcaf\consumerstep.ini UnprotectedContentMimeType
+END_TESTCASE SEC-CAF-CONS-0021
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0022
+//! @SYMTestCaseDesc 		DRM mime type
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Asks CAF for the mime type of a file handled by TestAgent
+//! @SYMTestExpectedResults	TestAgent returns the mimetype of the content
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0022
+RUN_TEST_STEP 100 tcaf CAFMimeTypeCDataStep c:\tcaf\consumerstep.ini ProtectedContentMimeType
+END_TESTCASE SEC-CAF-CONS-0022
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0023
+//! @SYMTestCaseDesc 		DRM ShareMode
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Opens a DRM file using all share modes 
+//! @SYMTestExpectedResults	TestAgent sucessfully opens the file using all share modes
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0023
+RUN_UTILS MAKEREADWRITE C:\TCAF\testdata\TEST.DRM
+RUN_TEST_STEP 100 tcaf CAFShareModeStep c:\tcaf\consumerstep.ini TestAgentShareMode
+END_TESTCASE SEC-CAF-CONS-0023
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0024
+//! @SYMTestCaseDesc 		Plaintext ShareMode
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Opens a plaintext file using all share modes 
+//! @SYMTestExpectedResults	F32Agent sucessfully opens the file using all share modes
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0024
+RUN_UTILS MAKEREADWRITE C:\tcaf\testdata\dummydata.txt
+RUN_TEST_STEP 100 tcaf CAFShareModeStep c:\tcaf\consumerstep.ini F32AgentShareMode
+END_TESTCASE SEC-CAF-CONS-0024
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0025
+//! @SYMTestCaseDesc 		Checks that implemented attributes are returned correctly 
+//! @SYMPREQ			CR1184
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Requests EIsMediaPlayerOnly for an unprotected file
+//! @SYMTestExpectedResults	EFalse is returned
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0025
+RUN_TEST_STEP 100 tcaf CAFDataAttributeStep c:\tcaf\attributes.ini IsMediaPlayerOnlyAttribute
+END_TESTCASE SEC-CAF-CONS-0025
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0026
+//! @SYMTestCaseDesc 		Checks that implemented attributes are returned correctly 
+//! @SYMPREQ			CR1184
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Requests EIsAutomated for an unprotected file
+//! @SYMTestExpectedResults	EFalse is returned
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0026
+RUN_TEST_STEP 100 tcaf CAFDataAttributeStep c:\tcaf\attributes.ini IsAutomatedOnlyAttribute
+END_TESTCASE SEC-CAF-CONS-0026
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0027
+//! @SYMTestCaseDesc 		Checks that for non-implemented attributes a correct error code is returned
+//! @SYMPREQ			CR1184
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Requests EObjectNumber for an unprotected file
+//! @SYMTestExpectedResults	KErrCaNotSupported is returned
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0027
+RUN_TEST_STEP !Result=-17450 100 tcaf CAFDataAttributeStep c:\tcaf\attributes.ini TrackNumberAttribute
+END_TESTCASE SEC-CAF-CONS-0027
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0028
+//! @SYMTestCaseDesc 		Checks that for non-implemented attributes a correct error code is returned
+//! @SYMPREQ			CR1184
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Requests EGenre for an unprotected file
+//! @SYMTestExpectedResults	KErrCaNotSupported is returned
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0028
+RUN_TEST_STEP 100 tcaf CAFDataStringAttributeStep c:\tcaf\attributes.ini GenreStringAttribute
+END_TESTCASE SEC-CAF-CONS-0028
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0029
+//! @SYMTestCaseDesc 		Checks that for non-implemented attributes a correct error code is returned
+//! @SYMPREQ			CR1184
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Requests EUserRating for an unprotected file
+//! @SYMTestExpectedResults	KErrCaNotSupported is returned
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0029
+RUN_TEST_STEP 100 tcaf CAFDataStringAttributeStep c:\tcaf\attributes.ini UserRatingStringAttribute
+END_TESTCASE SEC-CAF-CONS-0029
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0030
+//! @SYMTestCaseDesc 		Checks that for non-implemented attributes a correct error code is returned
+//! @SYMPREQ			CR1184
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Requests EAuthoredDate for an unprotected file
+//! @SYMTestExpectedResults	KErrCaNotSupported is returned
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0030
+RUN_TEST_STEP 100 tcaf CAFDataStringAttributeStep c:\tcaf\attributes.ini AuthoredDateStringAttribute
+END_TESTCASE SEC-CAF-CONS-0030
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/ContentStep.script	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,425 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+LOAD_SUITE tcaf
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-0001
+//! @SYMTestCaseDesc 		Get an attribute for a content object within a file
+//! 				(Attribute)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Get a single attribute for a content object within a file
+//! @SYMTestExpectedResults	Should return KErrNone
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONT-0001
+RUN_TEST_STEP 100 tcaf CAFContentAttributeStep c:\tcaf\attributes.ini Attribute
+END_TESTCASE SEC-CAF-CONT-0001
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-0002
+//! @SYMTestCaseDesc 		Get a set of attributes for a content object within a file
+//! 				(AttributeSet)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Get a set of attributes for a content object within a file
+//! @SYMTestExpectedResults	Should return KErrNone
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONT-0002
+RUN_TEST_STEP 100 tcaf CAFContentAttributeSetStep c:\tcaf\attributes.ini AttributeSet
+END_TESTCASE SEC-CAF-CONT-0002
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-0003
+//! @SYMTestCaseDesc 		Get a string attribute for a content object within a file
+//! 				(String_Attribute)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Get a single string attribute for a content object within a file
+//! @SYMTestExpectedResults	Should return KErrNone
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONT-0003
+RUN_TEST_STEP 100 tcaf CAFContentStringAttributeStep c:\tcaf\attributes.ini StringAttribute
+END_TESTCASE SEC-CAF-CONT-0003
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-3447
+//! @SYMTestCaseDesc 		Get a string attribute for a content object within a valid gif file
+//! @SYMDEF			PDEF104571
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Get a single string attribute for a content object within a valid gif file
+//! @SYMTestExpectedResults	A string attribute should successfully be returned
+//! @SYMTestType		CT
+START_TESTCASE SEC-CAF-CONT-3447
+RUN_TEST_STEP 100 tcaf CAFContentStringAttributeStep c:\tcaf\attributes.ini StringAttributeGoodGif
+END_TESTCASE SEC-CAF-CONT-3447
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-3448
+//! @SYMTestCaseDesc 		Failure to return a string attribute for a content object within
+//! 				an invalid gif file
+//! @SYMDEF			PDEF104571
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Attempt to get a single string attribute for a content object within an invalid gif file
+//! @SYMTestExpectedResults	An  error should be returned
+//! @SYMTestType		CT
+START_TESTCASE SEC-CAF-CONT-3448
+RUN_TEST_STEP 100 tcaf CAFContentStringAttributeStep c:\tcaf\attributes.ini StringAttributeErrorGif
+END_TESTCASE SEC-CAF-CONT-3448
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-0004
+//! @SYMTestCaseDesc 		Get a set of string attributes for a content object within a file
+//! 				(String_AttributeSet)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Get a set of string attributes for a content object within a file
+//! @SYMTestExpectedResults	Should return KErrNone
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONT-0004
+RUN_TEST_STEP 100 tcaf CAFContentStringAttributeSetStep c:\tcaf\attributes.ini StringAttributeSet
+END_TESTCASE SEC-CAF-CONT-0004
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-3449
+//! @SYMTestCaseDesc 		Get a set of string attributes for a content object within a valid gif file
+//! @SYMDEF			PDEF104571
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Get a set of string attributes for a content object within a valid gif file
+//! @SYMTestExpectedResults	A set of string attributes should successfully be returned
+//! @SYMTestType		CT
+START_TESTCASE SEC-CAF-CONT-3449
+RUN_TEST_STEP 100 tcaf CAFContentStringAttributeSetStep c:\tcaf\attributes.ini StringAttributeSetGoodGif
+END_TESTCASE SEC-CAF-CONT-3449
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-3450
+//! @SYMTestCaseDesc 		Get a set of string attributes for a content object within an invalid gif file
+//! @SYMDEF			PDEF104571
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Get a set of string attributes for a content object within an invalid gif file
+//! @SYMTestExpectedResults	An  error should be returned for the invalid gif file within the set
+//! @SYMTestType		CT
+START_TESTCASE SEC-CAF-CONT-3450
+RUN_TEST_STEP 100 tcaf CAFContentStringAttributeSetStep c:\tcaf\attributes.ini StringAttributeSetErrorGif
+END_TESTCASE SEC-CAF-CONT-3450
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-0005
+//! @SYMTestCaseDesc 		Check attributes of a DRM file
+//! 				(DRM_Attributes)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Check CAF attributes are the values expected
+//! @SYMTestExpectedResults	Attributes should match expected values in INI file
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONT-0005
+RUN_TEST_STEP 100 tcaf CAFAttributesStep c:\tcaf\attributes.ini CAF1Attributes
+END_TESTCASE SEC-CAF-CONT-0005
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-0006
+//! @SYMTestCaseDesc 		Check for notification of a status change
+//! 				(NotifyStatusChange)
+//! @SYMPREQ			PREQ783
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Check status returned matches expected value
+//! @SYMTestExpectedResults	Status changes should match expected result
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONT-0006
+RUN_TEST_STEP 100 tcaf CAFContentNotifyStep c:\tcaf\ContentStep.ini NotifyStatusChange
+END_TESTCASE SEC-CAF-CONT-0006
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-0007
+//! @SYMTestCaseDesc 		Set a property within the test agent
+//! 				(SetProperty_TestAgent)
+//! @SYMPREQ			PREQ780
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Check error returned matches expected value
+//! @SYMTestExpectedResults	The property should be set correctly
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONT-0007
+RUN_TEST_STEP 100 tcaf CAFContentSetPropertyStep c:\tcaf\ContentStep.ini SetPropertyDrm
+END_TESTCASE SEC-CAF-CONT-0007
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-0008
+//! @SYMTestCaseDesc 		Set a property within the agent
+//! 				(SetProperty_F32Agent)
+//! @SYMPREQ			PREQ780
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Check error returned matches expected value
+//! @SYMTestExpectedResults	The property should be set correctly
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONT-0008
+RUN_TEST_STEP 100 tcaf CAFContentSetPropertyStep c:\tcaf\ContentStep.ini SetPropertyPlainText
+END_TESTCASE SEC-CAF-CONT-0008
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-0009
+//! @SYMTestCaseDesc 		Ask the agent to display information related to a content object
+//! 				(DisplayInfo)
+//! @SYMREQ			REQ3692
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Agent should display information or return an error if it doesn't support that API
+//! @SYMTestExpectedResults	Agent should return an error since information display is not supported
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONT-0009
+RUN_TEST_STEP 100 tcaf CAFContentDisplayInfoStep c:\tcaf\ContentStep.ini DisplayInfo
+END_TESTCASE SEC-CAF-CONT-0009
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-0010
+//! @SYMTestCaseDesc 		Attempt to perform an extended function on a particular CAF agent
+//! 				(AgentSpecific_Ok)
+//! @SYMPREQ			PREQ780
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Check error returned matches expected value
+//! @SYMTestExpectedResults	Error returned matches expected value
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONT-0010
+RUN_TEST_STEP 100 tcaf CAFContentAgentSpecificStep c:\tcaf\ContentStep.ini AgentSpecificDrm
+END_TESTCASE SEC-CAF-CONT-0010
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-0011
+//! @SYMTestCaseDesc 		Attempt to perform an extended function on the F32 Agent
+//! 				(AgentSpecific_Fails)
+//! @SYMPREQ			PREQ780
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Check error returned matches expected value
+//! @SYMTestExpectedResults	Error returned matches expected value
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONT-0011
+RUN_TEST_STEP 100 tcaf CAFContentAgentSpecificStep c:\tcaf\ContentStep.ini AgentSpecificPlainText
+END_TESTCASE SEC-CAF-CONT-0011
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-0012
+//! @SYMTestCaseDesc 		Request rights for a given content object
+//! 				(RequestRights)
+//! @SYMPREQ			PREQ783
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Check status returned matches expected value
+//! @SYMTestExpectedResults	Status changes should match expected result
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONT-0012
+RUN_TEST_STEP 100 tcaf CAFContentRequestRightsStep c:\tcaf\ContentStep.ini RequestRights
+END_TESTCASE SEC-CAF-CONT-0012
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-0013
+//! @SYMTestCaseDesc 		Find the embedded objects within a container in the file
+//! 				(EmbeddedObjects)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		List the embedded content objects within the file
+//! @SYMTestExpectedResults	Number of embedded objects found matches expected number
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONT-0013
+RUN_TEST_STEP 100 tcaf CAFContentEmbeddedObjectsStep c:\tcaf\ContentStep.ini EmbeddedObjects
+END_TESTCASE SEC-CAF-CONT-0013
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-3451
+//! @SYMTestCaseDesc 		Find the embedded objects within a valid gif file
+//! @SYMDEF			PDEF104571
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		List the embedded content objects within a valid gif file.
+//! @SYMTestExpectedResults	Returned error code matches that expected.
+//! 				Number of embedded objects found matches the expected number.
+//! @SYMTestType		CT
+START_TESTCASE SEC-CAF-CONT-3451
+RUN_TEST_STEP 100 tcaf CAFContentEmbeddedObjectsStep c:\tcaf\ContentStep.ini EmbeddedObjectsGoodGif
+END_TESTCASE SEC-CAF-CONT-3451
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-3452
+//! @SYMTestCaseDesc 		Find the embedded objects within an invalid gif file
+//! @SYMDEF			PDEF104571
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		List the embedded content objects within an invalid gif file.
+//! @SYMTestExpectedResults	Returned error code matches that expected.
+//! 				Number of embedded objects found matches the expected number.
+//! @SYMTestType		CT
+START_TESTCASE SEC-CAF-CONT-3452
+RUN_TEST_STEP 100 tcaf CAFContentEmbeddedObjectsStep c:\tcaf\ContentStep.ini EmbeddedObjectsErrorGif
+END_TESTCASE SEC-CAF-CONT-3452
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-0014
+//! @SYMTestCaseDesc 		List all embedded objects of a particular type
+//! 				(EmbeddedObjectType)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		List the embedded objects within a container that are of a certain type (content, containers etc)
+//! @SYMTestExpectedResults	Number of embedded objects found matches the expected number
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONT-0014
+RUN_TEST_STEP 100 tcaf CAFContentEmbeddedObjectTypeStep c:\tcaf\ContentStep.ini EmbeddedObjectType
+END_TESTCASE SEC-CAF-CONT-0014
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-3453
+//! @SYMTestCaseDesc 		List all embedded objects of a particular type for a valid gif file
+//! @SYMDEF			PDEF104571
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		List the embedded objects within a container that are of a certain type (content, containers etc)
+//! 				for a valid gif file.
+//! @SYMTestExpectedResults	Returned error code matches that expected.
+//! 				Number of embedded objects found matches the expected number.
+//! @SYMTestType		CT
+START_TESTCASE SEC-CAF-CONT-3453
+RUN_TEST_STEP 100 tcaf CAFContentEmbeddedObjectTypeStep c:\tcaf\ContentStep.ini EmbeddedObjectTypeGoodGif
+END_TESTCASE SEC-CAF-CONT-3453
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-3454
+//! @SYMTestCaseDesc 		List all embedded objects of a particular type for an invalid gif file
+//! @SYMDEF			PDEF104571
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		List the embedded objects within a container that are of a certain type (content, containers etc)
+//! 				for an invalid gif file.
+//! @SYMTestExpectedResults	Returned error code matches that expected.
+//! 				Number of embedded objects found matches the expected number.
+//! @SYMTestType		CT
+START_TESTCASE SEC-CAF-CONT-3454
+RUN_TEST_STEP 100 tcaf CAFContentEmbeddedObjectTypeStep c:\tcaf\ContentStep.ini EmbeddedObjectTypeErrorGif
+END_TESTCASE SEC-CAF-CONT-3454
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-0015
+//! @SYMTestCaseDesc 		Search for content objects of a particular type within the file
+//! 				(Search_TestAgent)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Search for content objects of a particular type within the file
+//! @SYMTestExpectedResults	Number of content objects found matches expected number
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONT-0015
+RUN_TEST_STEP 100 tcaf CAFContentSearchStep c:\tcaf\ContentStep.ini SearchTestAgent
+END_TESTCASE SEC-CAF-CONT-0015
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-0016
+//! @SYMTestCaseDesc 		Search for content objects of a particular type within the file
+//! 				(Search_F32Agent)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Search for content objects of a particular type within the file
+//! @SYMTestExpectedResults	Number of content objects found matches expected number
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONT-0016
+RUN_TEST_STEP 100 tcaf CAFContentSearchStep c:\tcaf\ContentStep.ini SearchF32Agent
+END_TESTCASE SEC-CAF-CONT-0016
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-3455
+//! @SYMTestCaseDesc 		Search for content objects of a particular type within a valid gif file
+//! @SYMDEF			PDEF104571
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Search for content objects of a particular type within the file
+//! @SYMTestExpectedResults	Number of content objects found matches expected number
+//! @SYMTestType		CT
+START_TESTCASE SEC-CAF-CONT-3455
+RUN_TEST_STEP 100 tcaf CAFContentSearchStep c:\tcaf\ContentStep.ini SearchF32AgentGoodGif
+END_TESTCASE SEC-CAF-CONT-3455
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-3456
+//! @SYMTestCaseDesc 		Search for content objects of a particular type within an invalid gif file
+//! @SYMDEF			PDEF104571
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Search for content objects of a particular type within the file
+//! @SYMTestExpectedResults	Number of content objects found matches expected number
+//! @SYMTestType		CT
+START_TESTCASE SEC-CAF-CONT-3456
+RUN_TEST_STEP 100 tcaf CAFContentSearchStep c:\tcaf\ContentStep.ini SearchF32AgentErrorGif
+END_TESTCASE SEC-CAF-CONT-3456
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-0017
+//! @SYMTestCaseDesc 		Open a container within a file
+//! 				(Container_Ok)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Open a container within a file
+//! @SYMTestExpectedResults	The container is opened successfully
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONT-0017
+RUN_TEST_STEP 100 tcaf CAFContentContainerStep c:\tcaf\ContentStep.ini ContainerDrm
+END_TESTCASE SEC-CAF-CONT-0017
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONT-0018
+//! @SYMTestCaseDesc 		Attempt to open and close a container that does not exist
+//! 				(Container_NotFound)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Open a container that does not exist
+//! @SYMTestExpectedResults	Returns with KErrNotFound
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONT-0018
+RUN_TEST_STEP 100 tcaf CAFContentContainerStep c:\tcaf\ContentStep.ini ContainerPlainText
+END_TESTCASE SEC-CAF-CONT-0018
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/attributes.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,149 @@
+[Attribute]
+uri	 =c:\tcaf\testdata\dummydata.txt
+uniqueid =DEFAULT
+attribute =0
+value	 =0
+
+[AttributeSet]
+uri	 =c:\tcaf\testdata\dummydata.txt
+uniqueid =DEFAULT
+attribute1 =0
+value1	 =0
+attribute2 =1
+value2	 =1
+
+[StringAttribute]
+uri	 =c:\tcaf\testdata\dummydata.txt
+uniqueid =DEFAULT
+attribute =1
+value	 =text/plain
+result	 =0
+
+[StringAttributeECoverURI]
+uri	 =c:\tcaf\testdata\dummydata.txt
+uniqueid =DEFAULT
+attribute =16
+value	 =
+result	 =-17450
+
+[StringAttributeGoodGif]
+uri	 =c:\tcaf\testdata\good.gif
+uniqueid =DEFAULT
+attribute =1
+value	 =image/gif
+result	 =0
+
+[StringAttributeErrorGif]
+uri	 =c:\tcaf\testdata\error.gif
+uniqueid =DEFAULT
+attribute =1
+value	 =
+result	 =-1
+
+[StringAttributeSet]
+uri	 =c:\tcaf\testdata\dummydata.txt
+uniqueid =DEFAULT
+attribute1 =1
+value1	 =text/plain
+attribute2 =0
+value2	 =
+result1	 =0
+result2  =-17450
+
+[StringAttributeSetGoodGif]
+uri	 =c:\tcaf\testdata\good.gif
+uniqueid =DEFAULT
+attribute1 =1
+value1	 =image/gif
+attribute2 =0
+value2	 =
+result1	 =0
+result2  =-17450
+
+[StringAttributeSetErrorGif]
+uri	 =c:\tcaf\testdata\error.gif
+uniqueid =DEFAULT
+attribute1 =1
+value1	 =
+attribute2 =0
+value2	 =
+result1	 =-1
+result2  =-17450
+
+[CAF1Attributes]
+filename = c:\tcaf\testdata\test.drm
+Protected = true
+Forwardable = false
+
+[IsMediaPlayerOnlyAttribute]
+uri	 =c:\tcaf\testdata\dummydata.txt
+attribute = 21
+value	 = 0
+
+[IsAutomatedOnlyAttribute]
+uri	 =c:\tcaf\testdata\dummydata.txt
+attribute = 22
+value	 = 0
+
+[TrackNumberAttribute]
+uri	 =c:\tcaf\testdata\dummydata.txt
+attribute = 23
+value	 = 0
+
+[GenreStringAttribute]
+uri	 =c:\tcaf\testdata\dummydata.txt
+attribute = 13
+value	 =
+result = -17450
+
+[UserRatingStringAttribute]
+uri	 =c:\tcaf\testdata\dummydata.txt
+attribute = 14
+value	 =
+result = -17450
+
+[AuthoredDateStringAttribute]
+uri	 =c:\tcaf\testdata\dummydata.txt
+attribute = 15
+value	 =
+result = -17450
+
+[AttributeByFileHandle_DRM_Content]
+uri	 =c:\tcaf\testdata\sample.content
+uniqueid =\sample.txt
+attribute =7
+value	 =3
+
+[AttributeSetByFileHandle_DRM_Content]
+uri	 =c:\tcaf\testdata\sample.content
+uniqueid =\sample.txt
+attribute1 =7
+value1	 =3
+attribute2 =14
+value2	 =6
+
+[StringAttributeByFileHandle_DRM_Content]
+uri	 =c:\tcaf\testdata\sample.content
+uniqueid =\sample.txt
+attribute =2
+value	 =CAF DRM FILE
+result	 =0
+
+[StringAttributeSetByFileHandle_DRM_Content]
+uri	 =c:\tcaf\testdata\sample.content
+uniqueid =\sample.txt
+attribute1 =1
+value1	 =text/plain
+attribute2 =2
+value2	 =CAF DRM FILE
+result1	 =0
+result2  =0
+
+[StringAttributeSet_PlainText]
+uri	 =c:\tcaf\testdata\dummydata.txt
+uniqueid =DEFAULT
+attribute1 =1
+value1	 =text/plain
+attribute2 =1
+value2	 =text/plain
+result	 =0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/cafutils.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,152 @@
+
+[Equality1]
+left-bitcount = 4
+left-bit0 = 1
+left-bit2 = 1
+right-bitcount = 4
+right-bit0 = 1
+right-bit2 = 1
+equal = 1
+
+[Equality2]
+left-bitcount = 6
+left-bit00 = 1
+left-bit02 = 1
+left-bit04 = 1
+right-bitcount = 4
+right-bit00 = 1
+right-bit02 = 1
+equal = 1
+
+[Equality3]
+left-bitcount = 10
+left-bit00 = 1
+left-bit09 = 1
+right-bitcount = 12
+right-bit00 = 1
+right-bit09 = 1
+right-bit11 = 1
+equal = 1
+
+[Inequality1]
+left-bitcount = 4
+left-bit00 = 1
+left-bit02 = 1
+left-bit03 = 1
+right-bitcount = 4
+right-bit00 = 1
+right-bit02 = 1
+equal = 0
+
+[Inequality2]
+left-bitcount = 10
+left-bit00 = 1
+left-bit09 = 1
+right-bitcount = 12
+right-bit00 = 1
+right-bit01 = 1
+right-bit09 = 1
+right-bit11 = 1
+equal = 0
+
+[Inequality3]
+left-bitcount = 12
+left-bit00 = 1
+left-bit09 = 1
+right-bitcount = 10
+right-bit00 = 1
+right-bit08 = 1
+equal = 0
+
+[Copy1]
+bitcount = 6
+bit00 = 1
+bit01 = 1
+bit03 = 1
+
+[Copy2]
+bitcount = 10
+bit00 = 1
+bit01 = 1
+bit03 = 1
+bit04 = 1
+bit07 = 1
+bit09 = 1
+
+[Copy3]
+bitcount = 16
+bit00 = 1
+bit01 = 1
+bit03 = 1
+bit04 = 1
+bit07 = 1
+bit09 = 1
+bit14 = 1
+bit15 = 1
+
+[Panic1]
+panic-bitcount = 6
+panictest = 1
+
+[Panic2]
+panic-bitcount = 6
+panictest = 2
+
+[Panic3]
+panic-bitcount = 6
+panictest = 3
+
+[Panic4]
+panic-bitcount = 6
+panictest = 4
+
+[Panic5]
+panic-bitcount = 6
+panictest = 5
+
+[Panic6]
+panic-bitcount = 6
+panictest = 6
+
+[virtualpath0]
+uri=test!for!virtual!path!seperator
+uniqueID=DEFAULT
+combined=test!for!virtual!path!seperator|DEFAULT
+expecteduri=test!for!virtual!path!seperator
+expecteduniqueid=DEFAULT
+
+[virtualpath1]
+uri=file\.,Z¬`¦£$%^&*()_+-=[]{}@~;'#?
+uniqueID=DEFAULT
+combined=file\.,Z¬`¦£$%^&*()_+-=[]{}@~;'#?|DEFAULT
+expecteduri=file\.,Z¬`¦£$%^&*()_+-=[]{}@~;'#?
+expecteduniqueid=DEFAULT
+
+[virtualpath2]
+uri=thisISok
+uniqueID=12345678
+combined=thisISok|12345678
+expecteduri=thisISok
+expecteduniqueid=12345678
+
+[virtualpath3]
+uri=isthisok¬`¦!£$%^&*()€-=_+{}[];'@~#?.,\0123456789
+uniqueID=shouldBEok!!¬`¦!£$%^&*()€-=_+{}[];'@~#?.,\0123456789
+combined=isthisok¬`¦!£$%^&*()€-=_+{}[];'@~#?.,\0123456789|shouldBEok!!¬`¦!£$%^&*()€-=_+{}[];'@~#?.,\0123456789
+expecteduri=isthisok¬`¦!£$%^&*()€-=_+{}[];'@~#?.,\0123456789
+expecteduniqueid=shouldBEok!!¬`¦!£$%^&*()€-=_+{}[];'@~#?.,\0123456789
+
+[virtualpath4]
+uri=afilename
+uniqueID=uniqueID12345678789\.,Z¬`¦£$%^&*()_+-=[]{}@~;'#?
+combined=afilename|uniqueID12345678789\.,Z¬`¦£$%^&*()_+-=[]{}@~;'#?
+expecteduri=afilename
+expecteduniqueid=uniqueID12345678789\.,Z¬`¦£$%^&*()_+-=[]{}@~;'#?
+
+[virtualpath5]
+uri=filename{}!@~?,.\£$%^&*()_-=+¬`¦€
+uniqueID=HASAPL!NG
+combined=filename{}!@~?,.\£$%^&*()_-=+¬`¦€|HASAPL!NG
+expecteduri=filename{}!@~?,.\£$%^&*()_-=+¬`¦€
+expecteduniqueid=HASAPL!NG
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/cafutils.script	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,423 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+LOAD_SUITE tcaf
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0001
+//! @SYMTestCaseDesc 		Basic Bitset Test
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Constructs a bitset, sets some bits then check they are set properly
+//! @SYMTestExpectedResults	Bitset construction is successful, set, unset works as expected
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0001
+RUN_TEST_STEP 100 tcaf BasicBitsetStep
+END_TESTCASE SEC-CAF-UTILS-0001
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0002
+//! @SYMTestCaseDesc 		Bitset List Test
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Constructs a bitset, uses the setlist to set a list of bits
+//! @SYMTestExpectedResults	Bitset construction is successful, setlist works as expected
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0002
+RUN_TEST_STEP 100 tcaf BitsetListStep 
+END_TESTCASE SEC-CAF-UTILS-0002
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0003
+//! @SYMTestCaseDesc 		Bitset equality 1
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Constructs two bitset, sets some bits checks the bitsets are equal
+//! @SYMTestExpectedResults	Bitset construction is successful, bitsets are equal
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0003
+RUN_TEST_STEP 100 tcaf BitsetEqualityStep c:\tcaf\cafutils.ini Equality1
+END_TESTCASE SEC-CAF-UTILS-0003
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0004
+//! @SYMTestCaseDesc 		Bitset equality 2
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Constructs two bitset, sets some bits checks the bitsets are equal
+//! @SYMTestExpectedResults	Bitset construction is successful, bitsets are equal
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0004
+RUN_TEST_STEP 100 tcaf BitsetEqualityStep c:\tcaf\cafutils.ini Equality2
+END_TESTCASE SEC-CAF-UTILS-0004
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0005
+//! @SYMTestCaseDesc 		Bitset equality 3
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Constructs two bitset, sets some bits checks the bitsets are equal
+//! @SYMTestExpectedResults	Bitset construction is successful, bitsets are equal
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0005
+RUN_TEST_STEP 100 tcaf BitsetEqualityStep c:\tcaf\cafutils.ini Equality3
+END_TESTCASE SEC-CAF-UTILS-0005
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0006
+//! @SYMTestCaseDesc 		Bitset Inequality 1
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Constructs two bitset, sets some bits checks the bitsets are not equal
+//! @SYMTestExpectedResults	Bitset construction is successful, bitsets are not equal
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0006
+RUN_TEST_STEP 100 tcaf BitsetEqualityStep c:\tcaf\cafutils.ini Inequality1
+END_TESTCASE SEC-CAF-UTILS-0006
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0007
+//! @SYMTestCaseDesc 		Bitset Inequality 2
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Constructs two bitset, sets some bits checks the bitsets are not equal
+//! @SYMTestExpectedResults	Bitset construction is successful, bitsets are not equal
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0007
+RUN_TEST_STEP 100 tcaf BitsetEqualityStep c:\tcaf\cafutils.ini Inequality2
+END_TESTCASE SEC-CAF-UTILS-0007
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0008
+//! @SYMTestCaseDesc 		Bitset Inequality 3
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Constructs two bitset, sets some bits checks the bitsets are not equal
+//! @SYMTestExpectedResults	Bitset construction is successful, bitsets are not equal
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0008
+RUN_TEST_STEP 100 tcaf BitsetEqualityStep c:\tcaf\cafutils.ini Inequality3
+END_TESTCASE SEC-CAF-UTILS-0008
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0009
+//! @SYMTestCaseDesc 		Bitset Copy 1
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Constructs a bitset, copies it to another bitset, checks the bitsets are equal
+//! @SYMTestExpectedResults	Bitset copying is successful, bitsets are equal
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0009
+RUN_TEST_STEP 100 tcaf BitsetCopyStep c:\tcaf\cafutils.ini Copy1
+END_TESTCASE SEC-CAF-UTILS-0009
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0010
+//! @SYMTestCaseDesc 		Bitset Copy 2
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Constructs a bitset, copies it to another bitset, checks the bitsets are equal
+//! @SYMTestExpectedResults	Bitset copying is successful, bitsets are equal
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0010
+RUN_TEST_STEP 100 tcaf BitsetCopyStep c:\tcaf\cafutils.ini Copy2
+END_TESTCASE SEC-CAF-UTILS-0010
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0011
+//! @SYMTestCaseDesc 		Bitset Copy 3
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Constructs a bitset, copies it to another bitset, checks the bitsets are equal
+//! @SYMTestExpectedResults	Bitset copying is successful, bitsets are equal
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0011
+RUN_TEST_STEP 100 tcaf BitsetCopyStep c:\tcaf\cafutils.ini Copy3
+END_TESTCASE SEC-CAF-UTILS-0011
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0012
+//! @SYMTestCaseDesc 		Bitset Serialise 1
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Constructs a bitset, writes it to a stream and read it back to another bitset, check the bitsets are equal
+//! @SYMTestExpectedResults	Bitsets are equal
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0012
+RUN_TEST_STEP 100 tcaf BitsetSerialiseStep c:\tcaf\cafutils.ini Copy1
+END_TESTCASE SEC-CAF-UTILS-0012
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0013
+//! @SYMTestCaseDesc 		Bitset Serialise 2
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Constructs a bitset, writes it to a stream and read it back to another bitset, check the bitsets are equal
+//! @SYMTestExpectedResults	Bitsets are equal
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0013
+RUN_TEST_STEP 100 tcaf BitsetSerialiseStep c:\tcaf\cafutils.ini Copy2
+END_TESTCASE SEC-CAF-UTILS-0013
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0014
+//! @SYMTestCaseDesc 		Bitset Serialise 3
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Constructs a bitset, writes it to a stream and read it back to another bitset, check the bitsets are equal
+//! @SYMTestExpectedResults	Bitsets are equal
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0014
+RUN_TEST_STEP 100 tcaf BitsetSerialiseStep c:\tcaf\cafutils.ini Copy3
+END_TESTCASE SEC-CAF-UTILS-0014
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0015
+//! @SYMTestCaseDesc 		Bitset Panic 1
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Attempts to access an out of range bit, should cause a panic
+//! @SYMTestExpectedResults	Causes a CAFUTILS panic
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0015
+RUN_PANIC_STEP_RESULT 0 CafUtils 100 tcaf BitsetPanicStep c:\tcaf\cafutils.ini Panic1
+END_TESTCASE SEC-CAF-UTILS-0015
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0016
+//! @SYMTestCaseDesc 		Bitset Panic 2
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Attempts to access an out of range bit, should cause a panic
+//! @SYMTestExpectedResults	Causes a CAFUTILS panic
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0016
+RUN_PANIC_STEP_RESULT 0 CafUtils 100 tcaf BitsetPanicStep c:\tcaf\cafutils.ini Panic2
+END_TESTCASE SEC-CAF-UTILS-0016
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0017
+//! @SYMTestCaseDesc 		Bitset Panic 3
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Attempts to access an out of range bit, should cause a panic
+//! @SYMTestExpectedResults	Causes a CAFUTILS panic
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0017
+RUN_PANIC_STEP_RESULT 0 CafUtils 100 tcaf BitsetPanicStep c:\tcaf\cafutils.ini Panic3
+END_TESTCASE SEC-CAF-UTILS-0017
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0018
+//! @SYMTestCaseDesc 		Bitset Panic 4
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Attempts to access an out of range bit, should cause a panic
+//! @SYMTestExpectedResults	Causes a CAFUTILS panic
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0018
+RUN_PANIC_STEP_RESULT 0 CafUtils 100 tcaf BitsetPanicStep c:\tcaf\cafutils.ini Panic4
+END_TESTCASE SEC-CAF-UTILS-0018
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0019
+//! @SYMTestCaseDesc 		Bitset Panic 5
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Attempts to access an out of range bit, should cause a panic
+//! @SYMTestExpectedResults	Causes a CAFUTILS panic
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0019
+RUN_PANIC_STEP_RESULT 0 CafUtils 100 tcaf BitsetPanicStep c:\tcaf\cafutils.ini Panic5
+END_TESTCASE SEC-CAF-UTILS-0019
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0020
+//! @SYMTestCaseDesc 		Bitset Panic 6
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Attempts to access an out of range bit, should cause a panic
+//! @SYMTestExpectedResults	Causes a CAFUTILS panic
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0020
+RUN_PANIC_STEP_RESULT 0 CafUtils 100 tcaf BitsetPanicStep c:\tcaf\cafutils.ini Panic6
+END_TESTCASE SEC-CAF-UTILS-0020
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0021
+//! @SYMTestCaseDesc 		Check CCafMimeHeader can be serialized
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Create a CCafMimeHeader, write it to a stream and then read it back again
+//! @SYMTestExpectedResults	CCafMimeHeader can be serialised
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0021
+RUN_TEST_STEP 100 tcaf CAFSupplierSerializeStep
+END_TESTCASE SEC-CAF-UTILS-0021
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0022
+//! @SYMTestCaseDesc 		Check that CDirStreamable can be serialised
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Create a CDirStreamable, write it to a stream and then read it back again
+//! @SYMTestExpectedResults	CDirStreamable can be serialised
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0022
+RUN_TEST_STEP 100 tcaf CAFCDirStreamStep
+END_TESTCASE SEC-CAF-UTILS-0022
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0023
+//! @SYMTestCaseDesc 		Check that RAttributeSet can be serialised
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Create a RAttributeSet, write it to a stream and then read it back again
+//! @SYMTestExpectedResults	RAttributeSet can be serialised
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0023
+RUN_TEST_STEP 100 tcaf CAFRAttributeSetStreamStep 
+END_TESTCASE SEC-CAF-UTILS-0023
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0024
+//! @SYMTestCaseDesc 		Check that RStringAttributeSet can be serialised
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Create a RStringAttributeSet, write it to a stream and then read it back again
+//! @SYMTestExpectedResults	RStringAttributeSet can be serialised
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0024
+RUN_TEST_STEP 100 tcaf CAFRStringAttributeSetStreamStep
+END_TESTCASE SEC-CAF-UTILS-0024
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0025
+//! @SYMTestCaseDesc 		Check that CSupplierOutputFile can be serialised
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Create a CSupplierOutputFile, write it to a stream and then read it back again
+//! @SYMTestExpectedResults	CSupplierOutputFile can be serialised
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0025
+RUN_TEST_STEP 100 tcaf CAFSupplierOutputFileStreamStep 
+END_TESTCASE SEC-CAF-UTILS-0025
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0026
+//! @SYMTestCaseDesc 		Check that CMetaDataArray can be serialised
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Create a CMetaDataArray, write it to a stream and then read it back again
+//! @SYMTestExpectedResults	CMetaDataArray can be serialised
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0026
+RUN_TEST_STEP 100 tcaf CAFMetaDataArrayStep 
+END_TESTCASE SEC-CAF-UTILS-0026
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0027
+//! @SYMTestCaseDesc 		Check that CEmbeddedObject can be serialised
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Create a CEmbeddedObject, write it to a stream and then read it back again
+//! @SYMTestExpectedResults	CEmbeddedObject can be serialised
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0027
+RUN_TEST_STEP 100 tcaf CAFEmbeddedObjectStep
+END_TESTCASE SEC-CAF-UTILS-0027
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0028
+//! @SYMTestCaseDesc 		Check that CVirtualPath can be serialised
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Create a CVirtualPath, write it to a stream and then read it back again
+//! @SYMTestExpectedResults	CVirtualPath can be serialised
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0028
+RUN_TEST_STEP 100 tcaf CAFVirtualPathStep c:\tcaf\cafutils.ini
+END_TESTCASE SEC-CAF-UTILS-0028
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0029
+//! @SYMTestCaseDesc 		Check that CRightsInfo object can be serialised
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Create a CRightsInfo, write it to a stream and then read it back again
+//! @SYMTestExpectedResults	CRightsInfo can be serialised
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0029
+RUN_TEST_STEP 100 tcaf CAFRightsInfoStep
+END_TESTCASE SEC-CAF-UTILS-0029
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-UTILS-0030
+//! @SYMTestCaseDesc 		Check that CStreamablePointerArray can be serialised
+//! @SYMPREQ			PREQ780
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Create a CStreamablePtrArray, write it to a stream and then read it back again
+//! @SYMTestExpectedResults	CStreamablePtrArray can be serialised
+//! @SYMTestType		UT
+START_TESTCASE SEC-CAF-UTILS-0030
+RUN_TEST_STEP 100 tcaf CAFStreamablePtrArrayStep
+END_TESTCASE SEC-CAF-UTILS-0030
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/consumerstep.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,61 @@
+[CompareContentF32Agent]
+URI1 = c:\tcaf\testdata\dummydata.txt
+URI2 = c:\tcaf\testdata\dummydata.txt
+
+[Compare2GBContentF32Agent]
+URI1 = c:\tcaf\testdata\dummy2gbdata.txt
+URI2 = c:\tcaf\testdata\dummy2gbdata.txt
+
+[CompareContentTestAgent]
+URI1 = c:\tcaf\testdata\test.drm
+URI2 = c:\tcaf\testdata\test.txt
+
+[CompareContentCombinedURI]
+URI1 = c:\tcaf\testdata\test.drm|
+URI2 = c:\tcaf\testdata\test.drm.bin
+
+[F32AgentThreadSharing]
+URI = c:\tcaf\testdata\dummydata.txt
+EnableSharing = true
+
+[TestAgentThreadSharing]
+URI = c:\tcaf\testdata\test.drm
+EnableSharing = true
+
+[ProtectedContentMimeType]
+URI=c:\tcaf\testdata\test.drm
+ContentMimeType=text/plain
+Known=true
+
+[UnprotectedContentMimeType]
+URI=c:\tcaf\testdata\dummydata.txt
+ContentMimeType=
+Known=false
+
+[TestAgentShareMode]
+FileName = C:\TCAF\testdata\TEST.DRM
+
+[F32AgentShareMode]
+FileName = c:\tcaf\testdata\dummydata.txt
+
+[CompareContentF32AgentWithoutIntent]
+URI1 = c:\tcaf\testdata\dummydata.txt
+URI2 = c:\tcaf\testdata\dummydata.txt
+WITHOUTINTENT=true
+
+[DRMFileOpenPerformance]
+FileName = c:\tcaf\testdata\notes1.txt
+IterationCount = 5
+MaxTimeLimitInMS = 50	//Maximum time for the file open operation.Any time exceeding this leads to test failure.
+
+[DRMFileOpenPerformance_SingleRTAObject]
+FileName = c:\tcaf\testdata\audio.content
+IterationCount = 5
+MaxTimeLimitInMS = 140	//Maximum time for the file open operation.Any time exceeding this leads to test failure.
+
+
+[DRMFileOpenPerformance_MultipleRTAObject]
+FileName = c:\tcaf\testdata\audiomulti.content|\picture.jpg
+IterationCount = 5
+MaxTimeLimitInMS = 140	//Maximum time for the file open operation.Any time exceeding this leads to test failure.
+UniqueId = \picture.jpg
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/consumerstep_64bit.script	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,167 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+LOAD_SUITE tcaf
+
+RUN_UTILS MkDir c:\rta\
+RUN_UTILS MkDir c:\rta\testdata\
+RUN_UTILS MkDir c:\tcaf\
+RUN_UTILS MkDir c:\tcaf\testdata\
+RUN_UTILS MkDir c:\tcaf\testdata\TestAgentPrivateDir\
+
+RUN_UTILS CopyFile z:\rta\testdata\*.* c:\rta\testdata\*.*
+RUN_UTILS CopyFile z:\tcaf\testdata\*.* c:\tcaf\testdata\*.*
+RUN_UTILS CopyFile z:\tcaf\testdata\TestAgentPrivateDir\*.* c:\tcaf\testdata\TestAgentPrivateDir\*.*
+
+RUN_UTILS MakeReadWrite c:\tcaf\testdata\copyfile.txt
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0031
+//! @SYMTestCaseDesc 		Plaintext File Size 
+//!				(PlainText_File_Size_64bit)
+//! @SYMPREQ			PREQ1725
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Checks that the size of the file reported by RFile is the same as the size reported by CAF (F32Agent). CAF opens the file using the given filename
+//! @SYMTestExpectedResults	Sizes are equal
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0031
+RUN_TEST_STEP 100 tcaf CAFSizeStep64 c:\tcaf\consumerstep.ini CompareContentF32Agent
+END_TESTCASE SEC-CAF-CONS-0031
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0032
+//! @SYMTestCaseDesc 		Plaintext File Read and Seek 
+//!				(PlainText_File_Read_and_Seek_64bit)
+//! @SYMPREQ			PREQ1725
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Checks that the data read from an RFile is the same as the data read from CAF (F32Agent). Caf opens the file using the given filename.
+//! @SYMTestExpectedResults	Data read is the same for both
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0032
+RUN_TEST_STEP 100 tcaf CAFSeekReadStep64 c:\tcaf\consumerstep.ini CompareContentF32Agent
+END_TESTCASE SEC-CAF-CONS-0032
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0033
+//! @SYMTestCaseDesc 		64Bit DRM File Size 
+//!				(DRM_File_Size_64bit)
+//! @SYMPREQ			PREQ1725
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Checks that the size of a plaintext file reported by RFile is the same as the size of the content within a DRM file reported by CAF (TestAgent). CAF opens the file using the given filename
+//! @SYMTestExpectedResults	Sizes are equal
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0033
+RUN_TEST_STEP 100 tcaf CAFSizeStep64 c:\tcaf\consumerstep.ini CompareContentTestAgent
+END_TESTCASE SEC-CAF-CONS-0033
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0034
+//! @SYMTestCaseDesc 		64 bit DRM File Read and Seek
+//!				(DRM_File_Read_and_Seek_64bit)
+//! @SYMPREQ			PREQ1725
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Checks that data read from a plaintext file by RFile is the same as data read from the content within a DRM file by CAF (TestAgent). CAF opens the file using the given filename
+//! @SYMTestExpectedResults	data read is the same for both
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0034
+RUN_TEST_STEP 100 tcaf CAFSeekReadStep64 c:\tcaf\consumerstep.ini CompareContentTestAgent
+END_TESTCASE SEC-CAF-CONS-0034
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0035
+//! @SYMTestCaseDesc 		Compare the size of the entire file opened with TestAgent vs RFile entire file
+//!				(Specific_ContentObject_File_Size_64Bit)
+//! @SYMREQ			PREQ1725
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Checks that the size of the file reported by RFile is the same as the size reported by CAF (F32Agent). Caf opens the file using a concatenated URI and UniqueId
+//! @SYMTestExpectedResults	Sizes are equal
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0035
+RUN_TEST_STEP 100 tcaf CAFSizeStep64 c:\tcaf\consumerstep.ini CompareContentCombinedURI
+END_TESTCASE SEC-CAF-CONS-0035
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONS-0036
+//! @SYMTestCaseDesc 		Read and Seek through the entire file opened with TestAgent vs RFile entire file
+//!				(Specific_ContentObject_Read_and_Seek_64Bit)
+//! @SYMREQ			PREQ1725
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Checks that the data read from an RFile is the same as the data read from CAF (TestAgent). Caf opens the file using a concatenated URI and UniqueId
+//! @SYMTestExpectedResults	Data read is the same for both
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONS-0036
+RUN_TEST_STEP 100 tcaf CAFSeekReadStep64 c:\tcaf\consumerstep.ini CompareContentCombinedURI
+END_TESTCASE SEC-CAF-CONS-0036
+
+
+//!@file
+//!SYMTestCaseID 		SEC-CAF-CONS-0037
+//!SYMTestCaseDesc 		File with 2GB Size 
+//!SYMPREQ				PREQ1725
+//!SYMTestStatus		Implemented
+//!SYMTestPriority		High
+//!SYMTestActions		Checks that the size of the file(filesize is greater than 2GB) reported by RFile is the same as the size reported by CAF (F32Agent). CAF opens the file using the given filename
+//!SYMTestExpectedResults	Sizes are equal
+//!SYMTestType			CIT
+// Manual Test - Create relevant files before running this test
+//START_TESTCASE SEC-CAF-CONS-0037
+//RUN_TEST_STEP 100 tcaf CAFSizeStep64 c:\tcaf\consumerstep.ini Compare2GBContentF32Agent
+//START_TESTCASE SEC-CAF-CONS-0037
+
+
+//!@file
+//!SYMTestCaseID 		SEC-CAF-CONS-0038
+//!SYMTestCaseDesc 		Plaintext File (size greater than 2GB) Read and Seek 
+//!SYMPREQ				PREQ1725
+//!SYMTestStatus		Implemented
+//!SYMTestPriority		High
+//!SYMTestActions		Checks that the data read from an RFile is the same as the data read from CAF (F32Agent). Caf opens the file using the given filename.
+//!SYMTestExpectedResults	Data read is the same for both
+//!SYMTestType			CIT
+// Manual Test - Create relevant files before running this test
+//START_TESTCASE SEC-CAF-CONS-0038
+//RUN_TEST_STEP 100 tcaf CAFSeekReadStep64 c:\tcaf\consumerstep.ini Compare2GBContentF32Agent
+//START_TESTCASE SEC-CAF-CONS-0038
+
+
+RUN_UTILS Delete c:\supplied.drm
+RUN_UTILS Delete c:\receipt.txt
+RUN_UTILS Delete c:\OUTPUTFILE.DRM
+
+RUN_SCRIPT z:\tcaf\testcleanupstep.script
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/contentiteratorstep.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,3 @@
+[ContentIterator]
+path	=c:\
+mimetype =
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/contentiteratorstep.script	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,55 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+LOAD_SUITE tcaf
+
+
+//! @SYMTestCaseID 		SEC-CAF-CONTIT-0002
+//! @SYMTestCaseDesc 		CopyFile
+START_TESTCASE SEC-CAF-CONTIT-0002
+RUN_TEST_STEP 100 tcaf CAFCopyFileStep c:\tcaf\managerstep.ini PrivateCopyFileOk
+END_TESTCASE SEC-CAF-CONTIT-0002
+
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-CONTIT-0001
+//! @SYMTestCaseDesc 		Find all the content objects within a specified directory
+//! 				(ContentIterator)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Find all the content objects within a specified directory
+//! @SYMTestExpectedResults	Should return KErrNone
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-CONTIT-0001
+RUN_TEST_STEP 200 tcaf CAFContentIteratorStep c:\tcaf\contentiteratorstep.ini ContentIterator
+RUN_TEST_STEP 100 tcaf CAFDeleteStep c:\tcaf\managerstep.ini PrivateDeleteFileOk
+END_TESTCASE SEC-CAF-CONTIT-0001
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/contentstep.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,109 @@
+[NotifyStatusChange]
+uri	    =c:\tcaf\testdata\copyfile.txt
+Status1	    =-17450
+Cancel1	    =-17450
+Cancel2     =-17450
+
+[SetPropertyDrm]
+uri	    =c:\tcaf\testdata\test.drm
+result 	    =0
+
+[SetPropertyPlainText]
+uri	    =c:\tcaf\testdata\copyfile.txt
+result 	    =-17450
+
+[DisplayInfo]
+uri	    =c:\tcaf\testdata\copyfile.txt
+result 	    =-17450
+
+[AgentSpecificDrm]
+uri	    =c:\tcaf\testdata\test.drm
+input	    =input
+output	    =output
+command     =1
+result 	    =0
+
+[AgentSpecificPlainText]
+uri	    =c:\tcaf\testdata\copyfile.txt
+input	    =input
+output	    =
+command     =1
+result 	    =-17450
+
+[RequestRights]
+uri	    =c:\tcaf\testdata\copyfile.txt
+Status1	    =-17450
+Cancel1	    =-17450
+Cancel2     =-17450
+
+[EmbeddedObjects]
+uri	   =c:\tcaf\testdata\test.drm
+count      =3
+result      =0
+
+[EmbeddedObjectsGoodGif]
+uri	   =c:\tcaf\testdata\good.gif
+count      =1
+result      =0
+
+[EmbeddedObjectsErrorGif]
+uri	   =c:\tcaf\testdata\error.gif
+count      =
+result      =-1
+
+[EmbeddedObjectType]
+uri	        =c:\tcaf\testdata\test.drm
+contentcount 	=2
+containercount  =1
+contentresult      =0
+containerresult      =0
+
+[EmbeddedObjectTypeGoodGif]
+uri	        =c:\tcaf\testdata\good.gif
+contentcount 	=1
+containercount  =0
+contentresult      =0
+containerresult      =0
+
+[EmbeddedObjectTypeErrorGif]
+uri	        =c:\tcaf\testdata\error.gif
+contentcount 	=
+containercount  =0
+contentresult      =-1
+containerresult      =0
+
+[SearchTestAgent]
+uri	   =c:\tcaf\testdata\test.drm
+count      =1
+mimetype   =text/plain
+result     =0
+
+[SearchF32Agent]
+uri	   =c:\tcaf\testdata\copyfile.txt
+count      =1
+mimetype   =text/plain
+result     =0
+
+[SearchF32AgentGoodGif]
+uri	   =c:\tcaf\testdata\good.gif
+count      =1
+mimetype   =image/gif
+result     =0
+
+[SearchF32AgentErrorGif]
+uri	   =c:\tcaf\testdata\error.gif
+count      =0
+mimetype   =image/gif
+result     =-1
+
+[ContainerDrm]
+uri	   =c:\tcaf\testdata\test.drm
+uniqueId   =DummyContainer
+openResult =0
+closeResult=0
+
+[ContainerPlainText]
+uri	    =c:\tcaf\testdata\copyfile.txt
+uniqueId    =DummyContainer
+openResult  =-1
+closeResult =-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/drmfileperformance_armv5.script	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,77 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+// DRM file performance test cases for DEF119317.
+
+LOAD_SUITE tcaf
+
+START_TESTCASE 			SEC-CAF-DRMFP-0001
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-DRMFP-0001
+//! @SYMTestCaseDesc 		DRM File Open Performance Test.Checks if the time taken for opening a plaintext file falls within the value as specified in the INI file.
+//!				(FileOpenPerformance)
+//! @SYMDEF			DEF119317
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Attempt to obtain the time taken to open a plaintext ile.
+//! @SYMTestExpectedResults	Test fails if the time to open the plaintext file exceeds the value specified in the INI file.
+
+RUN_TEST_STEP 100 tcaf CAFDRMFileOpenPerformanceStep c:\tcaf\consumerstep.ini DRMFileOpenPerformance
+END_TESTCASE 			SEC-CAF-DRMFP-0001
+
+START_TESTCASE 			SEC-CAF-DRMFP-0002
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-DRMFP-0002
+//! @SYMTestCaseDesc 		DRM File Open Performance Test.Checks if the time taken for opening a file containing a single content object falls within the value as specified in the INI file.
+//!				(FileOpenPerformance)
+//! @SYMDEF			DEF119317
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Attempt to obtain the time taken to open a file containing single content object.
+//! @SYMTestExpectedResults	Test fails if the time to open a file containing single content object exceeds the value specified in the INI file.
+
+RUN_TEST_STEP 100 tcaf CAFDRMFileOpenPerformanceStep c:\tcaf\consumerstep.ini DRMFileOpenPerformance_SingleRTAObject
+END_TESTCASE 			SEC-CAF-DRMFP-0002
+
+START_TESTCASE 			SEC-CAF-DRMFP-0003
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-DRMFP-0003
+//! @SYMTestCaseDesc 		DRM File Open Performance Test.Checks if the time taken for opening a file containing multiple content objects falls within the value as specified in the INI file.
+//!				(FileOpenPerformance)
+//! @SYMDEF			DEF119317
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Attempt to obtain the time taken to open a file containing multiple content objects.
+//! @SYMTestExpectedResults	Test fails if the time to open a file containing multiple content objects exceeds the value specified in the INI file.
+
+RUN_TEST_STEP 100 tcaf CAFDRMFileOpenPerformanceStep c:\tcaf\consumerstep.ini DRMFileOpenPerformance_MultipleRTAObject
+END_TESTCASE 			SEC-CAF-DRMFP-0003
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/managerstep.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,176 @@
+[CreateDrmArchive]
+ContentDescription=c:\RTA\testdata\content.xml
+RightsDescription=
+OutputFile= c:\tcaf\testdata\sample.content
+
+[PrivateCopyFileOk]
+source      =C:\tcaf\testdata\sample.content
+destination =C:\private\Reference Test Agent\sample.content
+result	    =0
+
+[PrivateDeleteFileOk]
+filename    =C:\private\Reference Test Agent\sample.content
+result	    =0
+
+[PlainTextCopyFileOk]
+source      =C:\tcaf\testdata\copyfile.txt
+destination =C:\tcaf\copied.txt
+result	    =0
+
+[PlainTextCopyFileNotFound]
+source      =C:\tcaf\testdata\FileNotFound.txt
+destination =C:\tcaf\filenotfound.txt
+result	    =-1
+
+[PlainTextRenameFileOk]
+
+source      =C:\tcaf\copied.txt
+destination =C:\tcaf\renamed.txt
+result	    =0
+
+[PlainTextRenameFileNotFound]
+
+source      =C:\tcaf\testdata\FileNotFound.txt
+destination =C:\tcaf\filenotfound.txt
+result	    =-1
+
+[DifferentDrivesSameNameRenameFileOk]
+
+source      =C:\tcaf\renamed.txt
+destination =E:\renamed.txt
+result	    =0
+
+[DifferentDrivesDifferentNameRenameFileOk]
+
+source      =E:\renamed.txt
+destination =C:\tcaf\renamedAgain.txt
+result	    =0
+
+[PlainTextDeleteOk]
+
+filename    =C:\tcaf\renamedAgain.txt
+result	    =0
+
+[PlainTextDeleteFail]
+
+filename    =C:\tcaf\filenotfound.txt
+result	    =-1
+
+[MkDirPublicDirFail]
+
+path  	    =C:\tcaf\some\big\path\that\wont\work\
+result 	    =-12
+
+
+[MkDirPrivateDirOk]
+
+path  	    =C:\private\Reference Test Agent\test\
+result 	    =0
+
+[RmDirPrivateDirOk]
+
+path  	    =C:\private\Reference Test Agent\test\
+result 	    =0
+
+[MkDirPublicDirOk]
+
+path  	    =C:\tcaf\mkdir\
+result 	    =0
+
+[RmDirPublicDirOk]
+
+path  	    =C:\tcaf\mkdir\
+result 	    =0
+
+[RmDirPublicDirFail]
+
+path  	    =C:\tcaf\directorynotfound\
+result 	    =-1
+
+[MkDirAllPublicDirOk]
+path  	    =C:\tcaf\mkdirall\
+result 	    =0
+
+[MkDirAllPublicDirFail]
+path  	    =Z:\tcaf\mkdirall\
+result 	    =-21
+
+[GetDirAPI1StepOk]
+path  	    =C:\tcaf\
+API	    =1
+result 	    =0
+
+[GetDirAPI2StepOk]
+path  	    =C:\tcaf\
+API	    =2
+result 	    =0
+
+[GetDirAPI3StepOk]
+path  	    =C:\tcaf\
+API	    =3
+result 	    =0
+
+[GetDirStepFail]
+path  	    =C:\tcaf\pathnotfound\
+result 	    =-12
+
+[GetDirAPI1StepPrivate]
+path  	    =C:\private\
+API	    =1
+result 	    =0
+
+[GetDirAPI2StepPrivate]
+path  	    =C:\private\
+API	    =2
+result 	    =0
+
+[GetDirAPI3StepPrivate]
+path  	    =C:\private\
+API	    =3
+result 	    =0
+
+[GetDirAPI1StepPrivateServer]
+path  	    =c:\private\Reference Test Agent\
+API	    =1
+result 	    =0
+
+[GetDirAPI2StepPrivateServer]
+path  	    =c:\private\Reference Test Agent\
+API	    =2
+result 	    =0
+
+[GetDirAPI3StepPrivateServer]
+path  	    =c:\private\Reference Test Agent\
+API	    =3
+result 	    =0
+
+[NotifyStatusChange]
+path	    =c:\tcaf\testdata\copyfile.txt
+Status1	    =-17450
+Cancel1	    =-17450
+Cancel2     =-17450
+
+[SetProperty]
+result 	    =0
+
+[DisplayInfo]
+uri	    =c:\tcaf\testdata\copyfile.txt
+result 	    =-17450
+
+[ListAgents]
+count	    =3
+result 	    =0
+
+[AgentSpecific]
+input	    =input
+output	    =
+command     =1
+result 	    =-17450
+
+[DisplayManagement]
+result 	    =-17450
+
+[DisplayInfoByFileHandle_DRM_Content]
+uri	 =c:\tcaf\testdata\sample.content
+uniqueid =\sample.txt
+result 	    =-17450
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/managerstep.script	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,692 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+LOAD_SUITE tcaf
+LOAD_SUITE RTAUtils
+
+RUN_UTILS Delete c:\tcaf\testdata\sample.content
+
+START_TESTCASE 			SEC-CAF-MAN-0001
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0001
+//! @SYMTestCaseDesc 		Create a sample Drm archive
+//!				(TCAF_CreateArchive)
+//! @SYMPREQ			REQ3678
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Constructs a DRM archive from the content and rights xml files provided
+//! @SYMTestExpectedResults	A .contentrights file is produced
+//! @SYMTestType		UT
+RUN_TEST_STEP 100 RTAUtils CreateDrmArchive c:\tcaf\managerstep.ini CreateDrmArchive
+END_TESTCASE 			SEC-CAF-MAN-0001
+
+START_TESTCASE 			SEC-CAF-MAN-0002
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0002
+//! @SYMTestCaseDesc 		Plaintext Copy File not found
+//!				(PlainText_CopyFile_Not_Found)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Attempt to copy an file that does not exist, should return expected error code
+//! @SYMTestExpectedResults	returns expected error code
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFCopyFileStep c:\tcaf\managerstep.ini PlainTextCopyFileNotFound
+END_TESTCASE 			SEC-CAF-MAN-0002
+
+START_TESTCASE 			SEC-CAF-MAN-0003
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0003
+//! @SYMTestCaseDesc 		Plaintext Copy File
+//!				(PlainText_CopyFile)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Attempt to copy an unprotected file
+//! @SYMTestExpectedResults	File copied sucessfully
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFCopyFileStep c:\tcaf\managerstep.ini PlainTextCopyFileOk
+END_TESTCASE 			SEC-CAF-MAN-0003
+
+START_TESTCASE 			SEC-CAF-MAN-0004
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0004
+//! @SYMTestCaseDesc 		Rename a file in the same directory using CAF
+//!				(PlainText_RenameFile_Ok)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to try and rename a file
+//! @SYMTestExpectedResults	Rename should return KErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFRenameFileStep c:\tcaf\managerstep.ini PlainTextRenameFileOk
+END_TESTCASE 			SEC-CAF-MAN-0004
+
+START_TESTCASE 			SEC-CAF-MAN-0005
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0005
+//! @SYMTestCaseDesc 		Rename a non existant file using caf
+//!				(PlainText_RenameFile_Fail)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to try and rename a file that does not exist
+//! @SYMTestExpectedResults	Rename should return KErrNotFound
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFRenameFileStep c:\tcaf\managerstep.ini PlainTextRenameFileNotFound
+END_TESTCASE 			SEC-CAF-MAN-0005
+
+START_TESTCASE 			SEC-CAF-MAN-0006
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0006
+//! @SYMTestCaseDesc 		Move file across different drives using CAF
+//!				(PlainText_DifferentDrivesSameNameRenameFile_Ok)
+//! @SYMREQ			REQ3691, INC106214
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to try and move a file to a different drive
+//! @SYMTestExpectedResults	Rename should return KErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFRenameFileStep c:\tcaf\managerstep.ini DifferentDrivesSameNameRenameFileOk
+END_TESTCASE 			SEC-CAF-MAN-0006
+
+START_TESTCASE 			SEC-CAF-MAN-0007
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0007
+//! @SYMTestCaseDesc 		Move file across different drives using CAF
+//!				(PlainText_DifferentDrivesDifferentNameRenameFile_Ok)
+//! @SYMREQ			REQ3691, INC106214
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to try and move a file to a different drive while changing the file name
+//! @SYMTestExpectedResults	Rename should return KErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFRenameFileStep c:\tcaf\managerstep.ini DifferentDrivesDifferentNameRenameFileOk
+END_TESTCASE 			SEC-CAF-MAN-0007
+
+START_TESTCASE 			SEC-CAF-MAN-0008
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0008
+//! @SYMTestCaseDesc 		Delete a plain text file using CAF
+//!				(PlainText_Delete_Ok)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to delete the file that was copied in the previous test
+//! @SYMTestExpectedResults	Delete should return KErrNone when the file is deleted
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFDeleteStep c:\tcaf\managerstep.ini PlainTextDeleteOk
+END_TESTCASE 			SEC-CAF-MAN-0008
+
+START_TESTCASE 			SEC-CAF-MAN-0009
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0009
+//! @SYMTestCaseDesc 		Delete a non existant file using caf
+//!				(PlainText_Delete_Fail)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to try and delete a file that does not exist
+//! @SYMTestExpectedResults	Delete should return KErrNotFound
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFDeleteStep c:\tcaf\managerstep.ini PlainTextDeleteFail
+END_TESTCASE 			SEC-CAF-MAN-0009
+
+START_TESTCASE 			SEC-CAF-MAN-0010
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0010
+//! @SYMTestCaseDesc 		Tries to creates several nested directories
+//!				(public_Mkdir_fail)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to create a nested directory in the file system, fails
+//! @SYMTestExpectedResults	MkDir should return kErrPathNotFound
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFMkDirStep c:\tcaf\managerstep.ini MkDirPublicDirFail
+END_TESTCASE 			SEC-CAF-MAN-0010
+
+START_TESTCASE 			SEC-CAF-MAN-0011
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0011
+//! @SYMTestCaseDesc 		Creates a directory in a public part of the file system
+//!				(public_Mkdir_Ok)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to create a directory in the file system
+//! @SYMTestExpectedResults	MkDir should return kErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFMkDirStep c:\tcaf\managerstep.ini MkDirPublicDirOk
+END_TESTCASE 			SEC-CAF-MAN-0011
+
+START_TESTCASE 			SEC-CAF-MAN-0012
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0012
+//! @SYMTestCaseDesc 		Creates a directory in a public part of the file system
+//!				(public_Rmdir)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to create a directory in the file system
+//! @SYMTestExpectedResults	MkDir should return kErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFRmDirStep c:\tcaf\managerstep.ini RmDirPublicDirOk
+END_TESTCASE 			SEC-CAF-MAN-0012
+
+START_TESTCASE 			SEC-CAF-MAN-0013
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0013
+//! @SYMTestCaseDesc 		Remove a directory that does not exist
+//!				(public_Rmdir_fail)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to remove a directory that does not exist in the file system
+//! @SYMTestExpectedResults	RmDir should return KErrNotFound
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFRmDirStep c:\tcaf\managerstep.ini RmDirPublicDirFail
+END_TESTCASE 			SEC-CAF-MAN-0013
+
+START_TESTCASE 			SEC-CAF-MAN-0014
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0014
+//! @SYMTestCaseDesc 		Creates a directory in a public part of the file system
+//!				(public_MkDirAll_ok)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to create a directory in the file system
+//! @SYMTestExpectedResults	MkDir should return kErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFMkDirAllStep c:\tcaf\managerstep.ini MkDirAllPublicDirOk
+END_TESTCASE 			SEC-CAF-MAN-0014
+
+START_TESTCASE 			SEC-CAF-MAN-0015
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0015
+//! @SYMTestCaseDesc 		Create directory fails
+//!				(public_MkDirAll_fail)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to create a directory on the read only Z:\ drive
+//! @SYMTestExpectedResults	MkDir should return kErrAccessDenied
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFMkDirAllStep c:\tcaf\managerstep.ini MkDirAllPublicDirFail
+END_TESTCASE 			SEC-CAF-MAN-0015
+
+START_TESTCASE 			SEC-CAF-MAN-0016
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0016
+//! @SYMTestCaseDesc 		List a directory
+//!				(public_GetDir1_ok)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to list a directory
+//! @SYMTestExpectedResults	GetDir should return KErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFGetDirStep c:\tcaf\managerstep.ini GetDirAPI1StepOk
+END_TESTCASE 			SEC-CAF-MAN-0016
+
+START_TESTCASE 			SEC-CAF-MAN-0017
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0017
+//! @SYMTestCaseDesc 		List a directory
+//!				(public_GetDir2_ok)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to list a directory
+//! @SYMTestExpectedResults	GetDir should return KErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFGetDirStep c:\tcaf\managerstep.ini GetDirAPI2StepOk
+END_TESTCASE 			SEC-CAF-MAN-0017
+
+START_TESTCASE 			SEC-CAF-MAN-0018
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0018
+//! @SYMTestCaseDesc 		List a directory
+//!				(public_GetDir3_ok)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to list a directory
+//! @SYMTestExpectedResults	GetDir should return KErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFGetDirStep c:\tcaf\managerstep.ini GetDirAPI3StepOk
+END_TESTCASE 			SEC-CAF-MAN-0018
+
+START_TESTCASE 			SEC-CAF-MAN-0019
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0019
+//! @SYMTestCaseDesc 		List a directory
+//!				(public_GetDir_fail)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to list a directory
+//! @SYMTestExpectedResults	GetDir should return KErrPathNotFound
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFGetDirStep c:\tcaf\managerstep.ini GetDirStepFail
+END_TESTCASE 			SEC-CAF-MAN-0019
+
+START_TESTCASE 			SEC-CAF-MAN-0020
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0020
+//! @SYMTestCaseDesc 		List a directory
+//!				(public_GetDir_Private1)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to list a C:\private\
+//! @SYMTestExpectedResults	GetDir should return KErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFGetDirStep c:\tcaf\managerstep.ini GetDirAPI1StepPrivate
+END_TESTCASE 			SEC-CAF-MAN-0020
+
+START_TESTCASE 			SEC-CAF-MAN-0021
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0021
+//! @SYMTestCaseDesc 		List a directory
+//!				(public_GetDir_Private2)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to list a C:\private\
+//! @SYMTestExpectedResults	GetDir should return KErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFGetDirStep c:\tcaf\managerstep.ini GetDirAPI2StepPrivate
+END_TESTCASE 			SEC-CAF-MAN-0021
+
+START_TESTCASE 			SEC-CAF-MAN-0022
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0022
+//! @SYMTestCaseDesc 		List a directory
+//!				(public_GetDir_Private3)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to list a C:\private\
+//! @SYMTestExpectedResults	GetDir should return KErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFGetDirStep c:\tcaf\managerstep.ini GetDirAPI3StepPrivate
+END_TESTCASE 			SEC-CAF-MAN-0022
+
+START_TESTCASE 			SEC-CAF-MAN-0023
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0023
+//! @SYMTestCaseDesc 		Copy File to private dir
+//!				(private_CopyFile_Ok)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Attempt to copy an file to the reference test agent private dir
+//! @SYMTestExpectedResults	copy succeeds
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFCopyFileStep c:\tcaf\managerstep.ini PrivateCopyFileOk
+END_TESTCASE 			SEC-CAF-MAN-0023
+
+START_TESTCASE 			SEC-CAF-MAN-0024
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0024
+//! @SYMTestCaseDesc 		Creates a directory in the private directory of the reference test agent
+//!				(private_Mkdir_Ok)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to create a directory in agents private directory
+//! @SYMTestExpectedResults	MkDir should return kErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFMkDirStep c:\tcaf\managerstep.ini MkDirPrivateDirOk
+END_TESTCASE 			SEC-CAF-MAN-0024
+
+START_TESTCASE 			SEC-CAF-MAN-0025
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0025
+//! @SYMTestCaseDesc 		List a directory
+//!				(public_GetDir_Private1)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to list a C:\private\Reference Test Agent\
+//! @SYMTestExpectedResults	GetDir should return KErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFGetDirStep c:\tcaf\managerstep.ini GetDirAPI1StepPrivateServer
+END_TESTCASE 			SEC-CAF-MAN-0025
+
+START_TESTCASE 			SEC-CAF-MAN-0026
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0026
+//! @SYMTestCaseDesc 		List a directory
+//!				(public_GetDir_Private2)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to list a C:\private\Reference Test Agent\
+//! @SYMTestExpectedResults	GetDir should return KErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFGetDirStep c:\tcaf\managerstep.ini GetDirAPI2StepPrivateServer
+END_TESTCASE 			SEC-CAF-MAN-0026
+
+START_TESTCASE 			SEC-CAF-MAN-0027
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0027
+//! @SYMTestCaseDesc 		List a directory
+//!				(public_GetDir_Private3)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to list a C:\private\Reference Test Agent\
+//! @SYMTestExpectedResults	GetDir should return KErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFGetDirStep c:\tcaf\managerstep.ini GetDirAPI3StepPrivateServer
+END_TESTCASE 			SEC-CAF-MAN-0027
+
+START_TESTCASE 			SEC-CAF-MAN-0028
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0028
+//! @SYMTestCaseDesc 		Delete a file in the reference test agents private directory
+//!				(Private_Delete_Ok)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to delete the file in the private directory of the reference test agent
+//! @SYMTestExpectedResults	Delete should return KErrNone when the file is deleted
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFDeleteStep c:\tcaf\managerstep.ini PrivateDeleteFileOk
+END_TESTCASE 			SEC-CAF-MAN-0028
+
+START_TESTCASE 			SEC-CAF-MAN-0029
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0029
+//! @SYMTestCaseDesc 		Remove a directory within the agents private directory
+//!				(private_Rmdir)
+//! @SYMREQ			REQ3691
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to remove a directory in the agents private directory
+//! @SYMTestExpectedResults	MkDir should return kErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFRmDirStep c:\tcaf\managerstep.ini RmDirPrivateDirOk
+END_TESTCASE 			SEC-CAF-MAN-0029
+
+START_TESTCASE 			SEC-CAF-MAN-0030
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0030
+//! @SYMTestCaseDesc 		Request a status notification on a file
+//!				(Manager_NotifyStatusChange)
+//! @SYMREQ			REQ3680
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Request a notification on an unprotected file
+//! @SYMTestExpectedResults	Should return KErrCANotSupported
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFManagerNotifyStep c:\tcaf\managerstep.ini NotifyStatusChange
+END_TESTCASE 			SEC-CAF-MAN-0030
+
+START_TESTCASE 			SEC-CAF-MAN-0031
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0031
+//! @SYMTestCaseDesc 		Set a property within all agents
+//!				(Manager_SetProperty)
+//! @SYMPREQ			PREQ780
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Set a property within all agents
+//! @SYMTestExpectedResults	Should return KErrCANotSupported
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFManagerSetPropertyStep c:\tcaf\managerstep.ini SetProperty
+END_TESTCASE 			SEC-CAF-MAN-0031
+
+START_TESTCASE 			SEC-CAF-MAN-0032
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0032
+//! @SYMTestCaseDesc 		Display information about an unprotected file
+//!				(Manager_DisplayInfo)
+//! @SYMPREQ			PREQ780
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Ask the agent to display information about the file
+//! @SYMTestExpectedResults	Should return KErrCANotSupported
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFManagerDisplayInfoStep c:\tcaf\managerstep.ini DisplayInfo
+END_TESTCASE 			SEC-CAF-MAN-0032
+
+START_TESTCASE 			SEC-CAF-MAN-0033
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0033
+//! @SYMTestCaseDesc 		List all the agents not including the F32 Agent
+//!				(Manager_List_Agents)
+//! @SYMPREQ			PREQ780
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		List all agents
+//! @SYMTestExpectedResults	Should return KErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFManagerListAgentsStep c:\tcaf\managerstep.ini ListAgents
+END_TESTCASE 			SEC-CAF-MAN-0033
+
+START_TESTCASE 			SEC-CAF-MAN-0034
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0034
+//! @SYMTestCaseDesc 		Execute an agent specific command
+//!				(Manager_Agent_Specific)
+//! @SYMPREQ			PREQ780
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Execute an agent specific command
+//! @SYMTestExpectedResults	Should return KErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFManagerAgentSpecificStep c:\tcaf\managerstep.ini AgentSpecific
+END_TESTCASE 			SEC-CAF-MAN-0034
+
+START_TESTCASE 			SEC-CAF-MAN-0035
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0035
+//! @SYMTestCaseDesc 		Execute an agent specific command
+//!				(Manager_Display_Management_Info)
+//! @SYMPREQ			PREQ780
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Execute an agent specific command
+//! @SYMTestExpectedResults	Should return KErrCANotSupported
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFManagerDisplayConfigStep c:\tcaf\managerstep.ini DisplayManagement
+END_TESTCASE 			SEC-CAF-MAN-0035
+
+START_TESTCASE 			SEC-CAF-MAN-0036
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0036
+//! @SYMTestCaseDesc 		Get an attribute for a file
+//!				(Manager_Attribute)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Get a single attribute for a file
+//! @SYMTestExpectedResults	Should return KErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFManagerAttributeStep c:\tcaf\attributes.ini Attribute
+END_TESTCASE 			SEC-CAF-MAN-0036
+
+START_TESTCASE 			SEC-CAF-MAN-0037
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0037
+//! @SYMTestCaseDesc 		Get a set of attributes for a file
+//!				(Manager_AttributeSet)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Get a set of attributes for a file
+//! @SYMTestExpectedResults	Should return KErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFManagerAttributeSetStep c:\tcaf\attributes.ini AttributeSet
+END_TESTCASE 			SEC-CAF-MAN-0037
+
+START_TESTCASE 			SEC-CAF-MAN-0038
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0038
+//! @SYMTestCaseDesc 		Get a string attribute for a file
+//!				(Manager_String_Attribute)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Get a single string attribute for a file
+//! @SYMTestExpectedResults	Should return KErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFManagerStringAttributeStep c:\tcaf\attributes.ini StringAttribute
+END_TESTCASE 			SEC-CAF-MAN-0038
+
+START_TESTCASE 			SEC-CAF-MAN-3457
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-3457
+//! @SYMTestCaseDesc 		Get a string attribute for a manager object within a valid gif file
+//! @SYMDEF			PDEF104571
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Get a single string attribute for a manager object within a valid gif file
+//! @SYMTestExpectedResults	A string attribute should successfully be returned
+//! @SYMTestType		CT
+RUN_TEST_STEP 100 tcaf CAFManagerStringAttributeStep c:\tcaf\attributes.ini StringAttributeGoodGif
+END_TESTCASE 			SEC-CAF-MAN-3457
+
+START_TESTCASE 			SEC-CAF-MAN-3458
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-3458
+//! @SYMTestCaseDesc 		Failure to return a string attribute for a manager object within an invalid gif file
+//! @SYMDEF			PDEF104571
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Attempt to get a single string attribute for a manager object within an invalid gif file
+//! @SYMTestExpectedResults	An  error should be returned
+//! @SYMTestType		CT
+RUN_TEST_STEP 100 tcaf CAFManagerStringAttributeStep c:\tcaf\attributes.ini StringAttributeErrorGif
+END_TESTCASE 			SEC-CAF-MAN-3458
+
+START_TESTCASE 			SEC-CAF-MAN-0039
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0039
+//! @SYMTestCaseDesc 		Get a set of string attributes for a file
+//!				(Manager_String_AttributeSet)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Get a set of string attributes for a file
+//! @SYMTestExpectedResults	Should return KErrNone
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFManagerStringAttributeSetStep c:\tcaf\attributes.ini StringAttributeSet
+END_TESTCASE 			SEC-CAF-MAN-0039
+
+START_TESTCASE 			SEC-CAF-MAN-3459
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-3459
+//! @SYMTestCaseDesc 		Get a set of string attributes for a manager object within a valid gif file
+//! @SYMDEF			PDEF104571
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Get a set of string attributes for a manager object within a valid gif file
+//! @SYMTestExpectedResults	A set of string attributes should successfully be returned
+//! @SYMTestType		CT
+RUN_TEST_STEP 100 tcaf CAFManagerStringAttributeSetStep c:\tcaf\attributes.ini StringAttributeSetGoodGif
+END_TESTCASE 			SEC-CAF-MAN-3459
+
+START_TESTCASE 			SEC-CAF-MAN-3460
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-3460
+//! @SYMTestCaseDesc 		Get a set of string attributes for a manager object within an invalid gif file
+//! @SYMDEF			PDEF104571
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Get a set of string attributes for a manager object within an invalid gif file
+//! @SYMTestExpectedResults	An  error should be returned for the invalid gif file within the set
+//! @SYMTestType		CT
+RUN_TEST_STEP 100 tcaf CAFManagerStringAttributeSetStep c:\tcaf\attributes.ini StringAttributeSetErrorGif
+END_TESTCASE 			SEC-CAF-MAN-3460
+
+
+//---------------------------------------------------------------------------------------------------------------------------------
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0040
+//! @SYMTestCaseDesc 	     	Query standardised information about a content object using a file handle.
+//!				(FileHandle-DRM-Content)
+//! @SYMREQ			REQ8758
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority	       	Normal
+//! @SYMTestActions		1. Get a content's attribute from a file specified by file handle
+//!                        	2. Get content’s set of attributes from a file specified by file handle.
+//!                        	3. Get content’s text string attribute from a file specified by file handle.
+//!                        	4. Get content’s set of string attributes from a file specified by file handle.
+//!                        	5. View information associated with a single content object in a file specified by file handle.
+//! @SYMTestExpectedResults 	1.Should return KErrNone. Attribute’s value should match the expected value. 
+//!                        	2.Should return KErrNone. Value of all the attributes queried must match the expected value. 
+//!                        	3.Should return KErrNone. The text string attribute value should match the expected value.
+//!                        	4.Should return KErrNone. Value of all the text string attributes queried must match the expected value.
+//!                        	5.Should return KErrCANotSupported 
+//! @SYMTestType		CIT
+
+START_TESTCASE SEC-CAF-MAN-0040
+        RUN_TEST_STEP 100 tcaf CAFManagerAttributeByFileHandleStep c:\tcaf\attributes.ini AttributeByFileHandle_DRM_Content
+        RUN_TEST_STEP 100 tcaf CAFManagerAttributeSetByFileHandleStep c:\tcaf\attributes.ini AttributeSetByFileHandle_DRM_Content
+        RUN_TEST_STEP 100 tcaf CAFManagerStringAttributeByFileHandleStep c:\tcaf\attributes.ini StringAttributeByFileHandle_DRM_Content
+        RUN_TEST_STEP 100 tcaf CAFManagerStringAttributeSetByFileHandleStep c:\tcaf\attributes.ini StringAttributeSetByFileHandle_DRM_Content
+        RUN_TEST_STEP 100 tcaf CAFManagerDisplayInfoByFileHandleStep c:\tcaf\managerstep.ini DisplayInfoByFileHandle_DRM_Content
+END_TESTCASE SEC-CAF-MAN-0040
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-MAN-0041
+//! @SYMTestCaseDesc 	     	Query standardised information about a content object using a file handle.
+//!				(FileHandle-PlainText)
+//! @SYMREQ			REQ8758
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority	       	Normal
+//! @SYMTestActions		1. Get a content's attribute from a file specified by file handle
+//!                        	2. Get content’s set of attributes from a file specified by file handle.
+//!                        	3. Get content’s text string attribute from a file specified by file handle.
+//!                        	4. Get content’s set of string attributes from a file specified by file handle.
+//!                        	5. View information associated with a single content object in a file specified by file handle.
+//! @SYMTestExpectedResults 	1.Should return KErrNone. Attribute’s value should match the expected value. 
+//!                        	2.Should return KErrNone. Value of all the attributes queried must match the expected value. 
+//!                        	3.Should return KErrNone. The text string attribute value should match the expected value.
+//!                        	4.Should return KErrNone. Value of all the text string attributes queried must match the expected value.
+//!                        	5.Should return KErrCANotSupported 
+//! @SYMTestType		CIT
+
+START_TESTCASE SEC-CAF-MAN-0041
+        RUN_TEST_STEP 100 tcaf CAFManagerAttributeByFileHandleStep c:\tcaf\attributes.ini Attribute
+        RUN_TEST_STEP 100 tcaf CAFManagerAttributeSetByFileHandleStep c:\tcaf\attributes.ini AttributeSet
+        RUN_TEST_STEP 100 tcaf CAFManagerStringAttributeByFileHandleStep c:\tcaf\attributes.ini StringAttribute
+        RUN_TEST_STEP 100 tcaf CAFManagerStringAttributeSetByFileHandleStep c:\tcaf\attributes.ini StringAttributeSet_PlainText
+        RUN_TEST_STEP 100 tcaf CAFManagerDisplayInfoByFileHandleStep c:\tcaf\managerstep.ini DisplayInfo
+END_TESTCASE SEC-CAF-MAN-0041
+//---------------------------------------------------------------------------------------------------------------------------------
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/nodrmcapsteps.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,26 @@
+[NotifyStatusChange]
+path	    =c:\tcaf\testdata\audio.content
+Status1	    =-46
+Cancel1	    =-46
+Cancel2     =-46
+
+[SetProperty]
+result 	    =-46
+
+[DisplayInfo]
+uri	    =c:\tcaf\testdata\audio.content
+result 	    =-46
+
+[AgentSpecific]
+input	    =input
+output	    =
+command     =1
+result 	    =-46
+
+[DisplayManagement]
+result 	    =-46
+
+[DisplayInfoByFileHandle_DRM_Content]
+uri	 =c:\tcaf\testdata\audio.content
+uniqueid =\sample.txt
+result 	    =-46
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/nodrmcapsteps.script	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,119 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+// Test cases for validating the methods newly enforced DRM capability.
+
+RUN_PROGRAM 100 SETCAP tcaf.exe 0 -SID 80001234 tcafnodrmcap.exe
+
+LOAD_SUITE tcafnodrmcap
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAFNODRM-MAN-0001
+//! @SYMTestCaseDesc 		Request a status notification on a file
+//!				(Manager_NotifyStatusChange)
+//! @SYMREQ			DEF130857
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Request a notification on an unprotected file
+//! @SYMTestExpectedResults	Should return KErrPermissionDenied
+//! @SYMTestType		CIT
+START_TESTCASE 			SEC-CAFNODRM-MAN-0001
+RUN_TEST_STEP 100 tcafnodrmcap CAFManagerNotifyStep c:\tcaf\nodrmcapsteps.ini NotifyStatusChange
+END_TESTCASE 			SEC-CAFNODRM-MAN-0001
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAFNODRM-MAN-0002
+//! @SYMTestCaseDesc 		Set a property within all agents
+//!				(Manager_SetProperty)
+//! @SYMPREQ			DEF130857
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Set a property within all agents
+//! @SYMTestExpectedResults	Should return KErrPermissionDenied
+//! @SYMTestType		CIT
+START_TESTCASE 			SEC-CAFNODRM-MAN-0002
+RUN_TEST_STEP 100 tcafnodrmcap CAFManagerSetPropertyStep c:\tcaf\nodrmcapsteps.ini SetProperty
+END_TESTCASE 			SEC-CAFNODRM-MAN-0002
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAFNODRM-MAN-0003
+//! @SYMTestCaseDesc 		Display information about an unprotected file
+//!				(Manager_DisplayInfo)
+//! @SYMPREQ			DEF130857
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Ask the agent to display information about the file
+//! @SYMTestExpectedResults	Should return KErrPermissionDenied
+//! @SYMTestType		CIT
+START_TESTCASE 			SEC-CAFNODRM-MAN-0003
+RUN_TEST_STEP 100 tcafnodrmcap CAFManagerDisplayInfoStep c:\tcaf\nodrmcapsteps.ini DisplayInfo
+END_TESTCASE 			SEC-CAFNODRM-MAN-0003
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAFNODRM-MAN-0004
+//! @SYMTestCaseDesc 		Execute an agent specific command
+//!				(Manager_Agent_Specific)
+//! @SYMPREQ			DEF130857
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Execute an agent specific command
+//! @SYMTestExpectedResults	Should return KErrPermissionDenied
+//! @SYMTestType		CIT
+START_TESTCASE 			SEC-CAFNODRM-MAN-0004
+RUN_TEST_STEP 100 tcafnodrmcap CAFManagerAgentSpecificStep c:\tcaf\nodrmcapsteps.ini AgentSpecific
+END_TESTCASE 			SEC-CAFNODRM-MAN-0004
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAFNODRM-MAN-0005
+//! @SYMTestCaseDesc 		Execute an agent specific command
+//!				(Manager_Display_Management_Info)
+//! @SYMPREQ			DEF130857
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Execute an agent specific command
+//! @SYMTestExpectedResults	Should return KErrPermissionDenied
+//! @SYMTestType		CIT
+START_TESTCASE 			SEC-CAFNODRM-MAN-0005
+RUN_TEST_STEP 100 tcafnodrmcap CAFManagerDisplayConfigStep c:\tcaf\nodrmcapsteps.ini DisplayManagement
+END_TESTCASE 			SEC-CAFNODRM-MAN-0005
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAFNODRM-MAN-0006
+//! @SYMTestCaseDesc 	     	Query standardised information about a content object using a file handle.
+//!				(FileHandle-DRM-Content)
+//! @SYMREQ			DEF130857
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority	       	Normal
+//! @SYMTestActions		View information associated with a single content object in a file specified by file handle
+//! @SYMTestExpectedResults 	Should return KErrPermissionDenied
+//! @SYMTestType		CIT
+START_TESTCASE 			SEC-CAFNODRM-MAN-0006
+RUN_TEST_STEP 100 tcafnodrmcap CAFManagerDisplayInfoByFileHandleStep c:\tcaf\nodrmcapsteps.ini DisplayInfoByFileHandle_DRM_Content
+END_TESTCASE 			SEC-CAFNODRM-MAN-0006
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/oom.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,11 @@
+[OomRead]
+OomTest=1
+URI = c:\tcaf\testdata\test.drm
+
+[OomSupply]
+OomTest=2
+OutputPath = C:\
+SourceFileName = C:\tcaf\testdata\test.drm
+SuggestedFileName = supplied.drm
+MimeType = application/testagent.drm
+LeaveResult = 0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/oom.script	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,61 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+LOAD_SUITE tcaf
+
+START_TESTCASE 			SEC-CAF-OOM-0001
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-OOM-0001
+//! @SYMTestCaseDesc 		Check the OOM case for reading from a CAF file
+//!				(Consumer_OOM)
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Check that no memory leaks occur
+//! @SYMTestExpectedResults	No memory leaks occur
+//! @SYMTestType		Unit
+RUN_TEST_STEP 200 tcaf CAFOomStep c:\tcaf\oom.ini OomRead
+END_TESTCASE 			SEC-CAF-OOM-0001
+
+START_TESTCASE 			SEC-CAF-OOM-0002
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-OOM-0002
+//! @SYMTestCaseDesc 		Check the OOM case for supplying a file to CAF 
+//!				(Supplier_OOM)
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Check that no memory leaks occur
+//! @SYMTestExpectedResults	No memory leaks occur
+//! @SYMTestType		Unit
+RUN_UTILS Delete c:\supplied.drm 
+RUN_TEST_STEP 200 tcaf CAFOomStep c:\tcaf\oom.ini OomSupply
+END_TESTCASE 			SEC-CAF-OOM-0002
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/performance.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,18 @@
+[DrmContent]
+
+FileName    =C:\TCAF\TEST.drm
+Container   =application/testagent.drm
+Content	    =text/plain
+CafMimeType =x-drm-text/plain
+Recognized  =true
+
+[JPEG]
+
+FileName   =TEST.JPG
+Container  =
+Content    =
+expectedCafRecognizerType =
+Recognized =false
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/performance.script	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,42 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+//
+PRINT Run all Sample Tests 
+//
+LOAD_SUITE tcaf
+//
+
+
+START_TESTCASE 			SEC-CAF-PERF-0001
+//! @SYMTestCaseID 		SEC-CAF-PERF-0001
+RUN_TEST_STEP 100 tcaf CAFRecognizerSpeedStep c:\tcaf\performance.ini DrmContent
+RUN_TEST_STEP 100 tcaf CAFRecognizerSpeedStep c:\tcaf\performance.ini JPEG
+END_TESTCASE 			SEC-CAF-PERF-0001
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/recognize.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,26 @@
+[BufferSize]
+size = 268
+
+[TestAgentContent]
+FileName    =C:\TCAF\testdata\test.drm
+URI 	    =C:\TCAF\testdata\test.drm
+Container   =application/testagent.drm
+Content	    =text/plain
+CafMimeType =x-caf-text/plain
+Recognized  =true
+
+[F32AgentContent]
+FileName   =c:\tcaf\testdata\dummydata.txt
+Container  =
+Content    =
+expectedCafRecognizerType =
+Recognized =false
+
+[DEF077443_Content]
+FileName1    =C:\TCAF\testdata\uppercasetest.drm
+FileName2    =C:\emptytest.drm
+CafContentMimeType =x-caf-text/plain
+CafFileMimeType =application/testagent.drm
+Recognized  =true
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/recognize.script	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,106 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+LOAD_SUITE tcaf
+
+START_TESTCASE 			SEC-CAF-RECOG-0001
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-RECOG-0001
+//! @SYMTestCaseDesc 		Agent Recognition Buffer Size
+//!				(Buffer_Size)
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Finds the buffer size required by agents to recognized content
+//! @SYMTestExpectedResults	Buffersize matches the expected size
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFBufferSizeStep c:\tcaf\recognize.ini BufferSize
+END_TESTCASE 			SEC-CAF-RECOG-0001
+
+START_TESTCASE 			SEC-CAF-RECOG-0002
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-RECOG-0002
+//! @SYMTestCaseDesc 		Recognize a DRM file
+//!				(DRM_Recognize)
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		See if the TestAgent recognizes a DRM file
+//! @SYMTestExpectedResults	The DRM file is recognized
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFRecognizeStep c:\tcaf\recognize.ini TestAgentContent
+END_TESTCASE 			SEC-CAF-RECOG-0002
+
+START_TESTCASE 			SEC-CAF-RECOG-0003
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-RECOG-0003
+//! @SYMTestCaseDesc 		Recognize a Plaintext file
+//!				(Plaintext_Recognize)
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		See if TestAgent recognises the Plaintext file
+//! @SYMTestExpectedResults	The Plaintext file should not be recognized by CAF
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFRecognizeStep c:\tcaf\recognize.ini F32AgentContent
+END_TESTCASE 			SEC-CAF-RECOG-0003
+
+START_TESTCASE 			SEC-CAF-RECOG-0004
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-RECOG-0004
+//! @SYMTestCaseDesc 		Check apparc recognition of a CAF DRM file
+//!				(Apparc_Recognize)
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Medium
+//! @SYMTestActions		Check the RApaLsSession returns the correct mime type
+//! @SYMTestExpectedResults	Mime type should match the expected value in the INI file
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFApparcStep c:\tcaf\recognize.ini TestAgentContent
+END_TESTCASE 			SEC-CAF-RECOG-0004
+
+START_TESTCASE 			SEC-CAF-RECOG-1579
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-RECOG-1579
+//! @SYMTestCaseDesc 		Check apparc recognition of a DRM file for Upper Case Mime Types
+//! @SYMDEF			DEF077443
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Medium
+//! @SYMTestActions		Check the RApaLsSession returns the correct mime type
+//! @SYMTestExpectedResults	Mime type should match the expected value in the INI file
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAF_DEF077443_Step c:\tcaf\recognize.ini DEF077443_Content
+END_TESTCASE 			SEC-CAF-RECOG-1579
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/rightsmanagerstep.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,42 @@
+[CreateRightsManager]
+result	    =0
+
+[ListRights1]
+API	    =1
+result	    =0
+
+[ListRights2]
+API	    =2
+result	    =0
+
+[ListRights3]
+API	    =3
+result	    =0
+
+[ListContent]
+API	    =4
+result	    =0
+
+[RightsBasePointer]
+API	    =5
+result	    =0
+
+[DeleteRights]
+API	    =6
+result	    =0
+
+[DeleteAllRights]
+API	    =7
+result	    =0
+
+[ListRightsByFileHandle_DRM_Content]
+uri	     =c:\tcaf\testdata\sample.content
+uniqueid =\sample.txt
+API	     =8
+result	 =-17450
+
+[DeleteAllRightsByFileHandle_DRM_Content]
+uri	     =c:\tcaf\testdata\sample.content
+uniqueid =\sample.txt
+API	     =9
+result	 =-17450
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/rightsmanagerstep.script	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,166 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+LOAD_SUITE tcaf
+
+
+START_TESTCASE 			SEC-CAF-RIGHTS-0001
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-RIGHTS-0001
+//! @SYMTestCaseDesc 		Create an agent rights manager object
+//!				(RightsManager_Create)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Create a CManager, use the CManager to create a CRightsManager
+//! @SYMTestExpectedResults	returns expected error code
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFRightsManagerStep c:\tcaf\rightsmanagerstep.ini CreateRightsManager
+END_TESTCASE 			SEC-CAF-RIGHTS-0001
+
+START_TESTCASE 			SEC-CAF-RIGHTS-0002
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-RIGHTS-0002
+//! @SYMTestCaseDesc 		List all rights managed by an agent
+//!				(RightsManager_ListAll)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Create a CManager, list all rights
+//! @SYMTestExpectedResults	returns expected error code
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFRightsManagerListStep c:\tcaf\rightsmanagerstep.ini ListRights1
+END_TESTCASE 			SEC-CAF-RIGHTS-0002
+
+START_TESTCASE 			SEC-CAF-RIGHTS-0003
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-RIGHTS-0003
+//! @SYMTestCaseDesc 		List all rights associated with a particular file
+//!				(RightsManager_ListRights_for_file)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Create a CManager, List all rights associated with the file
+//! @SYMTestExpectedResults	returns expected error code
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFRightsManagerListStep c:\tcaf\rightsmanagerstep.ini ListRights2
+END_TESTCASE 			SEC-CAF-RIGHTS-0003
+
+START_TESTCASE 			SEC-CAF-RIGHTS-0004
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-RIGHTS-0004
+//! @SYMTestCaseDesc 		List all rights associated with a particular content object
+//!				(RightsManager_ListRights_for_Content_object)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Create a CManager, list all rights associated with a particular content object
+//! @SYMTestExpectedResults	returns expected error code
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFRightsManagerListStep c:\tcaf\rightsmanagerstep.ini ListRights3
+END_TESTCASE 			SEC-CAF-RIGHTS-0004
+
+START_TESTCASE 			SEC-CAF-RIGHTS-0005
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-RIGHTS-0005
+//! @SYMTestCaseDesc 		List all content associated with a given rights object
+//!				(RightsManager_List_Content_for_rights_object)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Create a CManager, List all content associated with a specified rights object
+//! @SYMTestExpectedResults	returns expected error code
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFRightsManagerListStep c:\tcaf\rightsmanagerstep.ini ListContent
+END_TESTCASE 			SEC-CAF-RIGHTS-0005
+
+START_TESTCASE 			SEC-CAF-RIGHTS-0006
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-RIGHTS-0006
+//! @SYMTestCaseDesc 		Get pointer to agent defined rights object
+//!				(RightsManager_Agent_Rights_Base)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Create a CManager, get a pointer to an MAgentRightsBase derived object corresponding to the CRightsInfo object 
+//! @SYMTestExpectedResults	returns expected error code
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFRightsManagerListStep c:\tcaf\rightsmanagerstep.ini RightsBasePointer
+END_TESTCASE 			SEC-CAF-RIGHTS-0006
+
+START_TESTCASE 			SEC-CAF-RIGHTS-0007
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-RIGHTS-0007
+//! @SYMTestCaseDesc 		Delete a particular rights object
+//!				(RightsManager_DeleteRights)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Create a CManager, ask the agent to delete the specified rights object
+//! @SYMTestExpectedResults	returns expected error code
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFRightsManagerListStep c:\tcaf\rightsmanagerstep.ini DeleteRights
+END_TESTCASE 			SEC-CAF-RIGHTS-0007
+
+START_TESTCASE 			SEC-CAF-RIGHTS-0008
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-RIGHTS-0008
+//! @SYMTestCaseDesc 		Delete all rights associated with a specified content object
+//!				(RightsManager_DeleteAllRights)
+//! @SYMREQ			REQ3679
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Create a CManager, ask the agent to delete all rights objects associated with a particular content object
+//! @SYMTestExpectedResults	returns expected error code
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFRightsManagerListStep c:\tcaf\rightsmanagerstep.ini DeleteAllRights
+END_TESTCASE 			SEC-CAF-RIGHTS-0008
+
+
+//-----------------------------------------------------------------------------------------------------------------------
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-RIGHTS-0009
+//! @SYMTestCaseDesc 	     	Listing and deleting all rights object associated with a content object using a file handle.
+//!				(RightsManager-FileHandle-DRM-Content)
+//! @SYMREQ			REQ8757
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority	       	Normal
+//! @SYMTestActions		1. List all rights associated with a particular content object using a file handle.
+//!                        	2. Delete all rights associated with a specified content object using a file handle
+//! @SYMTestExpectedResults 	1.Returns expected error code, KErrCANotSupported.
+//!                        	2.Returns expected error code, KErrCANotSupported. 
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-RIGHTS-0009
+        RUN_TEST_STEP 100 tcaf CAFRightsManagerListStep c:\tcaf\rightsmanagerstep.ini ListRightsByFileHandle_DRM_Content
+        RUN_TEST_STEP 100 tcaf CAFRightsManagerListStep c:\tcaf\rightsmanagerstep.ini DeleteAllRightsByFileHandle_DRM_Content
+END_TESTCASE SEC-CAF-RIGHTS-0009
+//-----------------------------------------------------------------------------------------------------------------------
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/stringattributes.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,129 @@
+//------------------------------------- 
+//--  Steps to retrieve TransactionID
+//------------------------------------- 
+[CreateDrmArchive]
+ContentDescription=c:\RTA\testdata\stringattributes.xml
+RightsDescription=
+OutputFile= c:\tcaf\testdata\stringattribute.content
+
+
+[PrivateCopyFileOk]
+source      =C:\tcaf\testdata\stringattribute.content
+destination =C:\private\Reference Test Agent\stringattribute.content
+result	    =0
+
+
+
+[TransactionIDAttribute]
+uri	 =c:\private\Reference Test Agent\stringattribute.content|\transactionid.txt
+uniqueid =\transactionid.txt
+stringattribute =10
+value	 = ID1234
+result	 =0
+
+ 
+
+//----------------------------------------------
+//-- Steps to retrieve 257 long transaction ID
+//----------------------------------------------
+
+[257LengthTransactionIDAttribute]
+uri	 =c:\private\Reference Test Agent\stringattribute.content|\257longtransactionid.txt
+uniqueid =\257longtransactionid.txt
+stringattribute =10
+value = 
+result	 = -9
+
+
+//-----------------------------------------------
+//-- Steps to retrieve 1char long transaction ID
+//-----------------------------------------------
+[TransactionIDAttribute1char]
+uri	 =c:\private\Reference Test Agent\stringattribute.content|\1chartransactionid.txt
+uniqueid =\1chartransactionid.txt
+stringattribute =10
+value = 1
+result	 = 0
+
+//------------------------------------------------
+//-- Steps to retrieve 13char long transaction ID
+//------------------------------------------------
+[TransactionIDAttribute13char]
+uri	 =c:\private\Reference Test Agent\stringattribute.content|\13chartransactionid.txt
+uniqueid =\13chartransactionid.txt
+stringattribute =10
+value = 1234567890123
+result	 = 0
+
+
+//--------------------------------------------------- 
+//-- Steps to retrieve non existing transaction ID
+//--------------------------------------------------- 
+
+[NonExistingTransactionIDAttribute]
+uri	 =c:\private\Reference Test Agent\stringattribute.content|\contentwithnotransactionid.txt
+uniqueid =\contentwithnotransactionid.txt
+stringattribute =10
+value = 
+result	 = -1 
+
+
+
+
+//-----------------------------------------------------------------
+//-- Steps to retrieve transaction ID using GetStringAttributeSet.
+//-----------------------------------------------------------------
+
+
+[StringAttributeSet]
+unresolveduri =1
+uri	 =c:\private\Reference Test Agent\stringattribute.content|\stringattributeset.txt
+uniqueid =\stringattributeset.txt
+attribute1 =10
+value1	 =ID1234
+attribute2 = 7
+value2	 = ID5678
+result1	 =0
+result2  =0
+
+
+[ContentStringAttribute]
+unresolveduri =1
+uri	 =c:\private\Reference Test Agent\stringattribute.content|\stringattributeset.txt
+uniqueid =\stringattributeset.txt
+attribute =7
+value =ID5678
+result =0
+
+//--------------------------------------------------
+// Testing new entries added for DEF102465
+// These are: EContentVersion, EContentLocation & ERightsIssuerURI
+//--------------------------------------------------
+[ContentLocationAttribute]
+unresolveduri =1
+uri	 =c:\private\Reference Test Agent\stringattribute.content|\DEF102465attributes.txt
+uniqueid =\DEF102465attributes.txt
+attribute =11
+value	 = http://www.somewhere.org/contentstore/
+result	 =0
+
+[RightsIssuerURIAttribute]
+unresolveduri =1
+uri	 =c:\private\Reference Test Agent\stringattribute.content|\DEF102465attributes.txt
+uniqueid =\DEF102465attributes.txt
+attribute =12
+value	 = http://www.somewhereelse.org/rightsissuer/
+result	 =0
+
+[ContentVersionAttribute]
+unresolveduri =1
+uri	 =c:\private\Reference Test Agent\stringattribute.content|\DEF102465attributes.txt
+uniqueid =\DEF102465attributes.txt
+attribute =20
+value	 = 65535
+result	 =0
+
+
+[PrivateDeleteFileOk]
+filename    =C:\private\Reference Test Agent\stringattribute.content
+result	    =0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/stringattributes.script	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,200 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+LOAD_SUITE tcaf
+LOAD_SUITE RTAUtils
+
+RUN_UTILS MkDir c:\rta\
+RUN_UTILS MkDir c:\rta\testdata\
+RUN_UTILS MkDir c:\tcaf\
+RUN_UTILS MkDir c:\tcaf\testdata\
+RUN_UTILS MkDir c:\tcaf\testdata\TestAgentPrivateDir\
+
+RUN_UTILS CopyFile z:\rta\testdata\*.* c:\rta\testdata\*.*
+RUN_UTILS CopyFile z:\tcaf\testdata\*.* c:\tcaf\testdata\*.*
+RUN_UTILS CopyFile z:\tcaf\testdata\TestAgentPrivateDir\*.* c:\tcaf\testdata\TestAgentPrivateDir\*.*
+
+
+START_TESTCASE 			SEC-CAF-STRATR-0001
+//! @SYMTestCaseID 		SEC-CAF-STRATR-0001
+//! @SYMTestCaseDesc 		CreateDrmArchive for content.xml
+RUN_TEST_STEP 100 RTAUtils CreateDrmArchive c:\tcaf\stringattributes.ini CreateDrmArchive
+END_TESTCASE 			SEC-CAF-STRATR-0001
+
+START_TESTCASE 			SEC-CAF-STRATR-0002
+//! @SYMTestCaseID 		SEC-CAF-STRATR-0002
+//! @SYMTestCaseDesc 		copy stringattribute.content file to the private directory of the RTA, so the RTA gets picked
+RUN_TEST_STEP 100 tcaf CAFCopyFileStep c:\tcaf\stringattributes.ini PrivateCopyFileOk
+END_TESTCASE 			SEC-CAF-STRATR-0002
+
+
+START_TESTCASE 			SEC-CAF-STRATR-1909
+//------------------------------------- 
+//--  Step to retrieve TransactionID
+//------------------------------------- 
+//! @SYMTestCaseID 		SEC-CAF-STRATR-1909
+//! @SYMTestCaseDesc 		Test addition of new entry,TransactionID, in TStringAttribute
+//! @SYMCR 			CR0895
+//! @SYMREQ 			REQ 6526, 6527
+//! @SYMTestPriority 		High
+//! @SYMTestActions 		RTA gets picked to read the content file, gets the transactionid & compares it with expected value in the .ini file. Both shuold match.
+//! @SYMTestExpectedResults	transactionid in the .ini file should be identical to the one in .content file. 
+RUN_TEST_STEP 100 tcaf CAFStringAttributesStep c:\tcaf\stringattributes.ini TransactionIDAttribute
+END_TESTCASE 			SEC-CAF-STRATR-1909
+
+START_TESTCASE 			SEC-CAF-STRATR-1914
+//--------------------------------------------------- 
+//-- Step to retrieve non existing transaction ID
+//--------------------------------------------------- 
+//! @SYMTestCaseID 		SEC-CAF-STRATR-1914
+//! @SYMTestCaseDesc 		Test retrieval of non-existing TransactionID, in TStringAttribute
+//! @SYMCR 			CR0895
+//! @SYMREQ 			REQ 6526, 6527
+//! @SYMTestPriority 		High
+//! @SYMTestActions 		RTA gets picked to read the content file, calls GetStringAttribute on transactionid and initiliases its value to "". 
+//! @SYMTestExpectedResults	expected value is empty string since there is not TransactionID attribute in this content, and expected result is KErrNotfound. 
+RUN_TEST_STEP 100 tcaf CAFStringAttributesStep c:\tcaf\stringattributes.ini NonExistingTransactionIDAttribute
+END_TESTCASE 			SEC-CAF-STRATR-1914
+
+
+
+START_TESTCASE 			SEC-CAF-STRATR-1915
+//-----------------------------------------------------------------
+//-- Step to retrieve transaction ID using GetStringAttributeSet.
+//-----------------------------------------------------------------
+//! @SYMTestCaseID 		SEC-CAF-STRATR-1915
+//! @SYMTestCaseDesc 		Test TransactionID retrieval calling GetStringAttributeSet()
+//! @SYMCR 			CR0895
+//! @SYMREQ 			REQ 6526, 6527
+//! @SYMTestPriority 		High
+//! @SYMTestActions 		RTA gets picked to read the content file, gets the transactionid, the contentid and compares them with expected values.
+//! @SYMTestExpectedResults	transactionid & contentid should be the same as the ones defined in the .ini file.
+RUN_TEST_STEP 100 tcaf CAFDataStringAttributeSetStep c:\tcaf\stringattributes.ini StringAttributeSet
+END_TESTCASE 			SEC-CAF-STRATR-1915
+
+
+START_TESTCASE 			SEC-CAF-STRATR-3156
+//! @SYMTestCaseID 		SEC-CAF-STRATR-3156
+//! @SYMTestCaseDesc 		Test TransactionID retrieval calling GetStringAttributeSet()
+//! @SYMCR 			CR0895
+//! @SYMREQ 			REQ 6526, 6527
+//! @SYMTestPriority 		High
+//! @SYMTestActions 		RTA gets picked to read the content file, gets the transactionid, the contentid and compares them with expected values.
+//! @SYMTestExpectedResults	transactionid & contentid should be the same as the ones defined in the .ini file.
+RUN_TEST_STEP 100 tcaf CAFManagerStringAttributeSetStep c:\tcaf\stringattributes.ini StringAttributeSet
+END_TESTCASE 			SEC-CAF-STRATR-3156
+
+
+START_TESTCASE 			SEC-CAF-STRATR-1916
+//-------------------------------------------------
+//-- Step to retrieve 1char long transaction ID
+//-------------------------------------------------
+//! @SYMTestCaseID 		SEC-CAF-STRATR-1916
+//! @SYMTestCaseDesc 		Test 1char long transactionid
+//! @SYMCR 			CR0895
+//! @SYMREQ 			REQ 6526, 6527
+//! @SYMTestPriority 		High
+//! @SYMTestActions 		RTA gets picked to read the content file, gets the transactionid & compares it with expected value in the .ini file. Both should match.
+//! @SYMTestExpectedResults	transactionid in the .ini file should be identical to the one in .content file. 
+RUN_TEST_STEP 100 tcaf CAFStringAttributesStep c:\tcaf\stringattributes.ini TransactionIDAttribute1char
+END_TESTCASE 			SEC-CAF-STRATR-1916
+
+
+START_TESTCASE 			SEC-CAF-STRATR-1919
+//-------------------------------------------------
+//-- Step to retrieve 13char long Transaction ID
+//-------------------------------------------------
+//! @SYMTestCaseID 		SEC-CAF-STRATR-1919
+//! @SYMTestCaseDesc 		Test 13char long transactionid
+//! @SYMCR 			CR0895
+//! @SYMREQ 			REQ 6526, 6527
+//! @SYMTestPriority 		High
+//! @SYMTestActions 		RTA gets picked to read the content file, gets the transactionid & compares it with expected value in the .ini file. Both should match.
+//! @SYMTestExpectedResults	transactionid in the .ini file should be identical to the one in .content file. 
+RUN_TEST_STEP 100 tcaf CAFStringAttributesStep c:\tcaf\stringattributes.ini TransactionIDAttribute13char
+END_TESTCASE 			SEC-CAF-STRATR-1919
+
+
+START_TESTCASE 			SEC-CAF-STRATR-1918
+//--------------------------------------------------
+//-- Step to retrieve 257char long transaction ID
+//--------------------------------------------------
+//! @SYMTestCaseID 		SEC-CAF-STRATR-1918
+//! @SYMTestCaseDesc 		Test addition of new entry,TransactionID, in TStringAttribute
+//! @SYMCR 			CR0895
+//! @SYMREQ 			REQ 6526, 6527
+//! @SYMTestPriority 		High
+//! @SYMTestActions 		RTA gets picked to read the content file, gets the transactionid & compares it with expected value in the .ini file. 
+//! @SYMTestExpectedResults	An overflow error is expected as size of transaction ID is greater than the client side buffer size.
+RUN_TEST_STEP 100 tcaf CAFStringAttributesStep c:\tcaf\stringattributes.ini 257LengthTransactionIDAttribute
+END_TESTCASE 			SEC-CAF-STRATR-1918
+
+
+START_TESTCASE 			SEC-CAF-STRATR-3384
+//--------------------------------------------------
+// Regression tests for DEF 101676
+//--------------------------------------------------
+//! @SYMTestCaseID 		SEC-CAF-STRATR-3384
+//! @SYMTestCaseDesc 		Test of GetStringAttribute functions in RTA Content module
+//! @SYMDEF 			DEF101676
+//! @SYMTestPriority 		High
+//! @SYMTestActions 		RTA gets picked to read the content file, gets the StringAttribute values & compares them with expected values in the .ini file. 
+//! @SYMTestExpectedResults	The values should match those in the .ini file
+RUN_TEST_STEP 100 tcaf CAFContentStringAttributeStep c:\tcaf\stringattributes.ini ContentStringAttribute
+RUN_TEST_STEP 100 tcaf CAFContentStringAttributeSetStep c:\tcaf\stringattributes.ini StringAttributeSet
+END_TESTCASE 			SEC-CAF-STRATR-3384
+
+
+START_TESTCASE 			SEC-CAF-STRATR-3399
+//--------------------------------------------------
+// Testing new entries added for DEF102465
+//--------------------------------------------------
+//! @SYMTestCaseID 		SEC-CAF-STRATR-3399
+//! @SYMTestCaseDesc 		Test addition of new entries in TStringAttribute: EContentLocation & ERightsIssuerURI, and in TAttribute: EContentVersion
+//! @SYMDEF 			DEF102465
+//! @SYMTestPriority 		High
+//! @SYMTestActions 		RTA gets picked to read the content file, gets the attributes & compares them with expected values in the .ini file.
+//! @SYMTestExpectedResults	Attributes in the .ini file should be identical to the ones in .content file. 
+RUN_TEST_STEP 100 tcaf CAFContentStringAttributeStep c:\tcaf\stringattributes.ini ContentLocationAttribute
+RUN_TEST_STEP 100 tcaf CAFContentStringAttributeStep c:\tcaf\stringattributes.ini RightsIssuerURIAttribute
+RUN_TEST_STEP 100 tcaf CAFContentAttributeStep c:\tcaf\stringattributes.ini ContentVersionAttribute
+END_TESTCASE 			SEC-CAF-STRATR-3399
+
+
+START_TESTCASE 			SEC-CAF-STRATR-0003
+//! @SYMTestCaseID 		SEC-CAF-STRATR-0003
+//! @SYMTestCaseDesc 		delete the copy created earlier
+RUN_TEST_STEP 100 tcaf CAFDeleteStep c:\tcaf\stringattributes.ini PrivateDeleteFileOk
+END_TESTCASE 			SEC-CAF-STRATR-0003
+
+//delete content file
+RUN_UTILS Delete c:\tcaf\testdata\stringattribute.content
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/supply.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,40 @@
+[CheckContentMime]
+OutputPath = C:\
+SourceFileName = C:\tcaf\testdata\test.drm
+MimeType = application/testagent.drm
+LeaveResult = 0
+CheckContentMime = ETrue
+ExpectedContentMime = text/plain
+
+[SupplyDrm]
+OutputPath = C:\
+SourceFileName = C:\tcaf\testdata\test.drm
+SuggestedFileName = supplied.drm
+MimeType = application/testagent.drm
+LeaveResult = 0
+
+
+[SupplyUnrecognized]
+OutputPath = C:\
+SourceFileName = C:\tcaf\testdata\test.txt
+SuggestedFileName = failed.drm
+MimeType = text/plain
+LeaveResult = -17453
+
+[SupplyDrmClientSpecifyOutFile]
+OutputPath = C:\
+SourceFileName = C:\tcaf\testdata\test.drm
+SuggestedFileName = outputfile.drm
+MimeType = application/testagent.drm
+LeaveResult = 0
+
+
+[CheckImport]
+URI1 = c:\supplied.drm
+URI2 = c:\tcaf\testdata\test.txt
+
+
+[CheckImport2]
+URI1 = c:\outputfile.drm
+URI2 = c:\tcaf\testdata\test.txt
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/supply.script	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,216 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+LOAD_SUITE tcaf
+
+
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0001
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0001
+//! @SYMTestCaseDesc 		Supply a DRM file to CAF
+//!				(DRM_Supply)
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Supply a file to CAF, TestAgent should save the file as a .DRM
+//! @SYMTestExpectedResults	Supply operation works successfully
+//! @SYMTestType		CIT
+RUN_UTILS Delete c:\supplied.drm 
+RUN_UTILS Delete c:\outputfile.drm 
+RUN_UTILS Delete c:\receipt.txt
+RUN_TEST_STEP 100 tcaf CAFSupplierStep c:\tcaf\supply.ini SupplyDrm
+END_TESTCASE 			SEC-CAF-SUPPLY-0001
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0002
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0002
+//! @SYMTestCaseDesc 		Check supply output
+//!				(DRM_Check_Supply_output_Size)
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to check the size of the content imported in the supply operation
+//! @SYMTestExpectedResults	Source file size should be the same as content size in output .DRM file
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFSizeStep c:\tcaf\supply.ini CheckImport
+END_TESTCASE 			SEC-CAF-SUPPLY-0002
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0003
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0003
+//! @SYMTestCaseDesc 		Check supply output
+//!				(DRM_Check_Supply_output)
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to check the content within the output file produced by the supply operation. 
+//! @SYMTestExpectedResults	Source file data should be the same as content object data in the output .DRM file
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFSeekReadStep c:\tcaf\supply.ini CheckImport
+END_TESTCASE 			SEC-CAF-SUPPLY-0003
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0004
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0004
+//! @SYMTestCaseDesc 		Supply a DRM file to CAF asynchronously
+//!				(DRM_Supply_Async)
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Supply a file to CAF, TestAgent should save the file as a .DRM
+//! @SYMTestExpectedResults	Supply operation works successfully
+//! @SYMTestType		CIT
+RUN_UTILS Delete c:\supplied.drm 
+RUN_UTILS Delete c:\outputfile.drm 
+RUN_UTILS Delete c:\receipt.txt
+RUN_TEST_STEP 100 tcaf CAFSupplierAsyncStep c:\tcaf\supply.ini SupplyDrm
+END_TESTCASE 			SEC-CAF-SUPPLY-0004
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0005
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0005
+//! @SYMTestCaseDesc 		Check supply output
+//!				(DRM_Check_Supply_output_Size)
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to check the size of the content imported in the supply operation
+//! @SYMTestExpectedResults	Source file size should be the same as content size in output .DRM file
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFSizeStep c:\tcaf\supply.ini CheckImport
+END_TESTCASE 			SEC-CAF-SUPPLY-0005
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0006
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0006
+//! @SYMTestCaseDesc 		Check supply output
+//!				(DRM_Check_Supply_output)
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to check the content within the output file produced by the supply operation. 
+//! @SYMTestExpectedResults	Source file data should be the same as content object data in the output .DRM file
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFSeekReadStep c:\tcaf\supply.ini CheckImport
+END_TESTCASE 			SEC-CAF-SUPPLY-0006
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0007
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0007
+//! @SYMTestCaseDesc 		Attempt to supply an unrecognized mime type
+//!				(DRM_Check_Supply_Unrecognized)
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Ask CAF to import an unrecognized file type
+//! @SYMTestExpectedResults	Import should fail
+//! @SYMTestType		CIT
+RUN_UTILS Delete c:\failed.drm 
+RUN_TEST_STEP 100 tcaf CAFSupplierStep c:\tcaf\supply.ini SupplyUnrecognized
+END_TESTCASE 			SEC-CAF-SUPPLY-0007
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0008
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0008
+//! @SYMTestCaseDesc 		Supply a DRM file to CAF
+//!				(DRM_Supply_Client)
+//! @SYMREQ			CR1440
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Supply a file to CAF, Content Mime type should be determimed during spply session
+//! @SYMTestExpectedResults	Supply operation works successfully
+//! @SYMTestType		CIT
+RUN_UTILS Delete c:\supplied.drm 
+RUN_UTILS Delete c:\outputfile.drm 
+RUN_UTILS Delete c:\receipt.txt
+RUN_TEST_STEP 100 tcaf CAFClientOutputSupplierStep c:\tcaf\supply.ini CheckContentMime
+END_TESTCASE 			SEC-CAF-SUPPLY-0008
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0009
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0009
+//! @SYMTestCaseDesc 		Supply a DRM file to CAF
+//!				(DRM_Supply_Client)
+//! @SYMREQ			REQ3689
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Supply a file to CAF, TestAgent should save the file as a .DRM
+//! @SYMTestExpectedResults	Supply operation works successfully
+//! @SYMTestType		CIT
+RUN_UTILS Delete c:\supplied.drm 
+RUN_UTILS Delete c:\outputfile.drm 
+RUN_UTILS Delete c:\receipt.txt
+RUN_TEST_STEP 100 tcaf CAFClientOutputSupplierStep c:\tcaf\supply.ini SupplyDrmClientSpecifyOutFile
+END_TESTCASE 			SEC-CAF-SUPPLY-0009
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0010
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0010
+//! @SYMTestCaseDesc 		Check supply output
+//!				(DRM_Check_Supply_output_Size_Client)
+//! @SYMREQ			REQ3689
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to check the size of the content imported in the supply operation
+//! @SYMTestExpectedResults	Source file size should be the same as content size in output .DRM file
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFSizeStep c:\tcaf\supply.ini CheckImport2
+END_TESTCASE 			SEC-CAF-SUPPLY-0010
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0011
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0011
+//! @SYMTestCaseDesc 		Check supply output
+//!				(DRM_Check_Supply_output_Client)
+//! @SYMREQ			REQ3689
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to check the content within the output file produced by the supply operation. 
+//! @SYMTestExpectedResults	Source file data should be the same as content object data in the output .DRM file
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFSeekReadStep c:\tcaf\supply.ini CheckImport2
+END_TESTCASE 			SEC-CAF-SUPPLY-0011
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0012
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0012
+//! @SYMTestCaseDesc 		Get HTTP request headers for sample file download
+//!				(GetHTTPRequestHeaders)
+//! @SYMREQ			REQ3689
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Get the request headers, check that they match the expected headers
+//! @SYMTestExpectedResults	Headers will be retrieved successfully
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFHTTPRequestHeaders 
+END_TESTCASE 			SEC-CAF-SUPPLY-0012
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/supply_without_http.script	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,201 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+LOAD_SUITE tcaf
+
+
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0001
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0001
+//! @SYMTestCaseDesc 		Supply a DRM file to CAF
+//!				(DRM_Supply)
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Supply a file to CAF, TestAgent should save the file as a .DRM
+//! @SYMTestExpectedResults	Supply operation works successfully
+//! @SYMTestType		CIT
+RUN_UTILS Delete c:\supplied.drm 
+RUN_UTILS Delete c:\outputfile.drm 
+RUN_UTILS Delete c:\receipt.txt
+RUN_TEST_STEP 100 tcaf CAFSupplierStep c:\tcaf\supply.ini SupplyDrm
+END_TESTCASE 			SEC-CAF-SUPPLY-0001
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0002
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0002
+//! @SYMTestCaseDesc 		Check supply output
+//!				(DRM_Check_Supply_output_Size)
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to check the size of the content imported in the supply operation
+//! @SYMTestExpectedResults	Source file size should be the same as content size in output .DRM file
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFSizeStep c:\tcaf\supply.ini CheckImport
+END_TESTCASE 			SEC-CAF-SUPPLY-0002
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0003
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0003
+//! @SYMTestCaseDesc 		Check supply output
+//!				(DRM_Check_Supply_output)
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to check the content within the output file produced by the supply operation. 
+//! @SYMTestExpectedResults	Source file data should be the same as content object data in the output .DRM file
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFSeekReadStep c:\tcaf\supply.ini CheckImport
+END_TESTCASE 			SEC-CAF-SUPPLY-0003
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0004
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0004
+//! @SYMTestCaseDesc 		Supply a DRM file to CAF asynchronously
+//!				(DRM_Supply_Async)
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Supply a file to CAF, TestAgent should save the file as a .DRM
+//! @SYMTestExpectedResults	Supply operation works successfully
+//! @SYMTestType		CIT
+RUN_UTILS Delete c:\supplied.drm 
+RUN_UTILS Delete c:\outputfile.drm 
+RUN_UTILS Delete c:\receipt.txt
+RUN_TEST_STEP 100 tcaf CAFSupplierAsyncStep c:\tcaf\supply.ini SupplyDrm
+END_TESTCASE 			SEC-CAF-SUPPLY-0004
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0005
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0005
+//! @SYMTestCaseDesc 		Check supply output
+//!				(DRM_Check_Supply_output_Size)
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to check the size of the content imported in the supply operation
+//! @SYMTestExpectedResults	Source file size should be the same as content size in output .DRM file
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFSizeStep c:\tcaf\supply.ini CheckImport
+END_TESTCASE 			SEC-CAF-SUPPLY-0005
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0006
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0006
+//! @SYMTestCaseDesc 		Check supply output
+//!				(DRM_Check_Supply_output)
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to check the content within the output file produced by the supply operation. 
+//! @SYMTestExpectedResults	Source file data should be the same as content object data in the output .DRM file
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFSeekReadStep c:\tcaf\supply.ini CheckImport
+END_TESTCASE 			SEC-CAF-SUPPLY-0006
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0007
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0007
+//! @SYMTestCaseDesc 		Attempt to supply an unrecognized mime type
+//!				(DRM_Check_Supply_Unrecognized)
+//! @SYMPREQ			PREQ1951
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Ask CAF to import an unrecognized file type
+//! @SYMTestExpectedResults	Import should fail
+//! @SYMTestType		CIT
+RUN_UTILS Delete c:\failed.drm 
+RUN_TEST_STEP 100 tcaf CAFSupplierStep c:\tcaf\supply.ini SupplyUnrecognized
+END_TESTCASE 			SEC-CAF-SUPPLY-0007
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0008
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0008
+//! @SYMTestCaseDesc 		Supply a DRM file to CAF
+//!				(DRM_Supply_Client)
+//! @SYMREQ			CR1440
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Supply a file to CAF, Content Mime type should be determimed during spply session
+//! @SYMTestExpectedResults	Supply operation works successfully
+//! @SYMTestType		CIT
+RUN_UTILS Delete c:\supplied.drm 
+RUN_UTILS Delete c:\outputfile.drm 
+RUN_UTILS Delete c:\receipt.txt
+RUN_TEST_STEP 100 tcaf CAFClientOutputSupplierStep c:\tcaf\supply.ini CheckContentMime
+END_TESTCASE 			SEC-CAF-SUPPLY-0008
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0009
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0009
+//! @SYMTestCaseDesc 		Supply a DRM file to CAF
+//!				(DRM_Supply_Client)
+//! @SYMREQ			REQ3689
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Supply a file to CAF, TestAgent should save the file as a .DRM
+//! @SYMTestExpectedResults	Supply operation works successfully
+//! @SYMTestType		CIT
+RUN_UTILS Delete c:\supplied.drm 
+RUN_UTILS Delete c:\outputfile.drm 
+RUN_UTILS Delete c:\receipt.txt
+RUN_TEST_STEP 100 tcaf CAFClientOutputSupplierStep c:\tcaf\supply.ini SupplyDrmClientSpecifyOutFile
+END_TESTCASE 			SEC-CAF-SUPPLY-0009
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0010
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0010
+//! @SYMTestCaseDesc 		Check supply output
+//!				(DRM_Check_Supply_output_Size_Client)
+//! @SYMREQ			REQ3689
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to check the size of the content imported in the supply operation
+//! @SYMTestExpectedResults	Source file size should be the same as content size in output .DRM file
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFSizeStep c:\tcaf\supply.ini CheckImport2
+END_TESTCASE 			SEC-CAF-SUPPLY-0010
+
+START_TESTCASE 			SEC-CAF-SUPPLY-0011
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-SUPPLY-0011
+//! @SYMTestCaseDesc 		Check supply output
+//!				(DRM_Check_Supply_output_Client)
+//! @SYMREQ			REQ3689
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Critical
+//! @SYMTestActions		Use CAF to check the content within the output file produced by the supply operation. 
+//! @SYMTestExpectedResults	Source file data should be the same as content object data in the output .DRM file
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFSeekReadStep c:\tcaf\supply.ini CheckImport2
+END_TESTCASE 			SEC-CAF-SUPPLY-0011
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/tcaf.script	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,66 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+PRINT Run all TCAF tests.
+PRINT
+
+RUN_UTILS MkDir c:\rta\
+RUN_UTILS MkDir c:\rta\testdata\
+RUN_UTILS MkDir c:\tcaf\
+RUN_UTILS MkDir c:\tcaf\testdata\
+RUN_UTILS MkDir c:\tcaf\testdata\TestAgentPrivateDir\
+
+RUN_UTILS CopyFile z:\rta\testdata\*.* c:\rta\testdata\*.*
+RUN_UTILS CopyFile z:\tcaf\testdata\*.* c:\tcaf\testdata\*.*
+RUN_UTILS CopyFile z:\tcaf\testdata\TestAgentPrivateDir\*.* c:\tcaf\testdata\TestAgentPrivateDir\*.*
+
+RUN_UTILS MakeReadWrite c:\tcaf\testdata\copyfile.txt
+
+RUN_SCRIPT z:\tcaf\cafutils.script
+RUN_SCRIPT z:\tcaf\consumerstep.script
+RUN_SCRIPT z:\tcaf\contentstep.script
+RUN_SCRIPT z:\tcaf\managerstep.script
+RUN_SCRIPT z:\tcaf\recognize.script
+RUN_SCRIPT z:\tcaf\rightsmanagerstep.script
+RUN_SCRIPT z:\tcaf\supply.script
+RUN_SCRIPT z:\tcaf\contentiteratorstep.script
+RUN_SCRIPT z:\tcaf\oom.script
+RUN_SCRIPT z:\tcaf\stringattributes.script
+
+RUN_UTILS Delete c:\supplied.drm
+RUN_UTILS Delete c:\receipt.txt
+RUN_UTILS Delete c:\OUTPUTFILE.DRM
+
+RUN_SCRIPT z:\tcaf\testcleanupstep.script
+
+PRINT
+PRINT All TCAF tests completed.
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/tcafhelper.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,18 @@
+
+[CafHelperFilename]
+uri = c:\tcaf\testdata\test.drm
+error = -17452
+expected = -5
+flag = true
+
+[CafHelperFileHandle]
+uri = c:\tcaf\testdata\test.drm
+error = -17452
+expected = -5
+
+[CafHelperFileHeader]
+error = -17452
+expected = -5
+flag = false
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/tcafhelper.script	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,87 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+LOAD_SUITE tcaf
+
+RUN_UTILS MkDir c:\tcaf\
+RUN_UTILS MkDir c:\tcaf\testdata\
+RUN_UTILS MkDir c:\tcaf\testdata\TestAgentPrivateDir\
+
+RUN_UTILS CopyFile z:\rta\testdata\*.* c:\rta\testdata\*.*
+RUN_UTILS CopyFile z:\tcaf\testdata\*.* c:\tcaf\testdata\*.*
+RUN_UTILS CopyFile z:\tcaf\testdata\TestAgentPrivateDir\*.* c:\tcaf\testdata\TestAgentPrivateDir\*.*
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAFHELPER-0001
+//! @SYMTestCaseDesc 		CafHelper API Test 1 
+//! @SYMPREQ			PREQ2086
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Medium
+//! @SYMTestActions		Constructs CCafHelper and tests if the reference cafhelper.dll gets loaded properly and 
+//!				calls the HandleCAFErrorL API overload which takes in the filename as input parameter.
+//! @SYMTestExpectedResults	Reference cafhelper.dll must be loaded successfully and the result of the HandleCAFErrorL
+//!				API must match the expected.
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAFHELPER-0001
+RUN_TEST_STEP 100 tcaf CAFHelperStep c:\tcaf\tcafhelper.ini CafHelperFilename
+END_TESTCASE SEC-CAFHELPER-0001
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAFHELPER-0002
+//! @SYMTestCaseDesc 		CafHelper API Test 2 
+//! @SYMPREQ			PREQ2086
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Medium
+//! @SYMTestActions		Constructs CCafHelper and tests if the reference cafhelper.dll gets loaded properly and 
+//!				calls the HandleCAFErrorL API overload which takes in the filehandle as input parameter.
+//! @SYMTestExpectedResults	Reference cafhelper.dll must be loaded successfully and the result of the HandleCAFErrorL
+//!				API must match the expected.
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAF-UTILS-0002
+RUN_TEST_STEP 100 tcaf CAFHelperStep c:\tcaf\tcafhelper.ini CafHelperFileHandle
+END_TESTCASE SEC-CAF-UTILS-0002
+
+//! @file
+//! @SYMTestCaseID 		SEC-CAFHELPER-0003
+//! @SYMTestCaseDesc 		CafHelper API Test 3 
+//! @SYMPREQ			PREQ2086
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Medium
+//! @SYMTestActions		Constructs CCafHelper and tests if the reference cafhelper.dll gets loaded properly and 
+//!				calls the HandleCAFErrorL API overload which takes in the fileheader as input parameter.
+//! @SYMTestExpectedResults	Reference cafhelper.dll must be loaded successfully and the result of the HandleCAFErrorL
+//!				API must match the expected.
+//! @SYMTestType		CIT
+START_TESTCASE SEC-CAFHELPER-0003
+RUN_TEST_STEP 100 tcaf CAFHelperStep c:\tcaf\tcafhelper.ini CafHelperFileHeader
+END_TESTCASE SEC-CAFHELPER-0003
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/tcafnodrmcap.script	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,57 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+PRINT Run all TCAF tests.
+PRINT
+
+RUN_UTILS MkDir c:\rta\
+RUN_UTILS MkDir c:\rta\testdata\
+RUN_UTILS MkDir c:\tcaf\
+RUN_UTILS MkDir c:\tcaf\testdata\
+RUN_UTILS MkDir c:\tcaf\testdata\TestAgentPrivateDir\
+
+RUN_UTILS CopyFile z:\rta\testdata\*.* c:\rta\testdata\*.*
+RUN_UTILS CopyFile z:\tcaf\testdata\*.* c:\tcaf\testdata\*.*
+RUN_UTILS CopyFile z:\tcaf\testdata\TestAgentPrivateDir\*.* c:\tcaf\testdata\TestAgentPrivateDir\*.*
+
+RUN_UTILS MakeReadWrite c:\tcaf\testdata\copyfile.txt
+
+RUN_SCRIPT z:\tcaf\nodrmcapsteps.script
+
+RUN_UTILS Delete c:\supplied.drm
+RUN_UTILS Delete c:\receipt.txt
+RUN_UTILS Delete c:\OUTPUTFILE.DRM
+
+RUN_SCRIPT z:\tcaf\testcleanupstep.script
+
+PRINT
+PRINT All TCAF tests completed.
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/tcafwmdrmsupport.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,205 @@
+[WMDRMDataReadSyncWithIntent]
+synchronous = true
+intent = false
+inputPacket = I\0N\0P\0U\0T\0D\0A\0T\0A\0
+outputPacket = I\0N\0P\0U\0T\0D\0A\0T\0A\0
+
+[WMDRMDataReadSyncWithoutIntent]
+synchronous = true
+intent = true
+inputPacket =  S\0O\0M\0E\0D\0A\0T\0A\0
+outputPacket = S\0O\0M\0E\0D\0A\0T\0A\0
+
+[WMDRMDataReadAsyncWithIntent]
+synchronous = false
+intent = false
+inputPacket = I\0N\0P\0U\0T\0D\0A\0T\0A\0
+outputPacket = I\0N\0P\0U\0T\0D\0A\0T\0A\0
+
+[WMDRMDataReadAsyncWithoutIntent]
+synchronous = false
+intent = true
+inputPacket =  S\0O\0M\0E\0D\0A\0T\0A\0
+outputPacket = S\0O\0M\0E\0D\0A\0T\0A\0
+
+[WMDRMManagerAttribute]
+attribute = 0
+value = 0
+wmdrmEnabled = true
+
+[WMDRMManagerAttributeSet]
+attribute1 = 0
+value1 = 0
+attribute2 = 1
+value2 = 1
+wmdrmEnabled = true
+
+[WMDRMManagerStringAttribute]
+attribute = 1
+value = 
+result = 0
+wmdrmEnabled = true
+result = 0
+
+[WMDRMManagerStringAttributeSet]
+attribute1 = 1
+value1 = 
+attribute2 = 7
+value2 = DEFAULT
+wmdrmEnabled = true
+
+[WMDRMManagerInvalidStringAttributeSet]
+attribute1 = 18
+value1 = 
+attribute2 = 20
+value2 = DEFAULT
+wmdrmEnabled = true
+
+[WMDRMContentNewAttribute]
+attribValue1= false
+attribValue2= true
+
+[WMDRMEmptyHeaderData]
+headerDataFlag = false
+
+[WMDRMDataReadAsyncEmptyInputPacket]
+synchronous = false
+intent = false
+inputPacket =
+
+[WMDRMDataReadSyncEmptyInputPacket]
+synchronous = true
+intent = true
+inputPacket =
+
+[WMDRMFileRecognizeTest]
+FileName = c:\tcaf\testdata\dummywm.asf
+Container = audio/x-ms-wma
+Content = audio/x-ms-wma
+Recognized = true
+
+[WMDRMStreamContentRecognizeTest]
+header = 75B22630668E11CFA6D900AA0062CE6C
+filemime = audio/x-ms-wma
+contentmime = audio/x-ms-wma
+recognized = true
+wmdrmEnabled = true
+
+[WMDRMRTADataAttribute]
+header = 75B22630668E11CFA6D900AA0062CE6C
+attribute = 1
+value = 0
+wmdrmEnabled = true
+
+[WMDRMRTADataAttributeSet]
+header = 75B22630668E11CFA6D900AA0062CE6C
+attribute1 = 0
+value1 = 1
+attribute2 = 1
+value2 = 0
+wmdrmEnabled = true
+
+[WMDRMRTADataStringAttribute]
+header = 75B22630668E11CFA6D900AA0062CE6C
+attribute = 0
+value = WMDRM
+result = 0
+wmdrmEnabled = true
+
+[WMDRMRTADataStringAttributeSet]
+header = 75B22630668E11CFA6D900AA0062CE6C
+attribute1 = 0
+value1 = WMDRM
+attribute2 = 1
+value2 = application/vnd.drm.asf
+wmdrmEnabled = true
+
+[WMDRMRTAContentAttribute]
+header = 75B22630668E11CFA6D900AA0062CE6C
+attribute = 0
+value = 1
+wmdrmEnabled = true
+
+[WMDRMRTAContentAttributeSet]
+header = 75B22630668E11CFA6D900AA0062CE6C
+attribute1 = 0
+value1 = 1
+attribute2 = 1
+value2 = 0
+wmdrmEnabled = true
+
+[WMDRMRTAContentStringAttribute]
+header = 75B22630668E11CFA6D900AA0062CE6C
+attribute = 0
+value = WMDRM
+wmdrmEnabled = true
+result = 0
+
+[WMDRMRTAContentStringAttributeSet]
+header = 75B22630668E11CFA6D900AA0062CE6C
+attribute1 = 0
+value1 = WMDRM
+attribute2 = 1
+value2 = application/vnd.drm.asf
+wmdrmEnabled = true
+
+[WMDRMRTAManagerAttribute]
+header = 75B22630668E11CFA6D900AA0062CE6C
+attribute = 0
+value = 1
+wmdrmEnabled = true
+
+[WMDRMRTAManagerAttributeSet]
+header = 75B22630668E11CFA6D900AA0062CE6C
+attribute1 = 0
+value1 = 1
+attribute2 = 1
+value2 = 0
+wmdrmEnabled = true
+
+[WMDRMRTAManagerStringAttribute]
+header = 75B22630668E11CFA6D900AA0062CE6C
+attribute = 0
+value = WMDRM
+wmdrmEnabled = true
+result = 0
+
+[WMDRMRTAManagerStringAttributeSet]
+header = 75B22630668E11CFA6D900AA0062CE6C
+attribute1 = 0
+value1 = WMDRM
+attribute2 = 1
+value2 = application/vnd.drm.asf
+wmdrmEnabled = true
+
+[WMDRMRTADataReadSyncWithIntent]
+header = 75B22630668E11CFA6D900AA0062CE6C
+synchronous = true
+intent = false
+inputPacket = R\0T\0A\0U\0T\0D\0A\0T\0A\0
+outputPacket = R\0T\0A\0U\0T\0D\0A\0T\0A\0
+wmdrmEnabled = true
+
+[WMDRMRTADataReadSyncWithoutIntent]
+header = 75B22630668E11CFA6D900AA0062CE6C
+synchronous = true
+intent = true
+inputPacket =  R\0O\0T\0A\0D\0A\0T\0A\0
+outputPacket = R\0O\0T\0A\0D\0A\0T\0A\0
+wmdrmEnabled = true
+
+[WMDRMRTADataReadAsyncWithIntent]
+header = 75B22630668E11CFA6D900AA0062CE6C
+synchronous = false
+intent = false
+inputPacket = R\0T\0A\0U\0T\0D\0A\0T\0A\0
+outputPacket = R\0T\0A\0U\0T\0D\0A\0T\0A\0
+wmdrmEnabled = true
+
+[WMDRMRTADataReadAsyncWithoutIntent]
+header = 75B22630668E11CFA6D900AA0062CE6C
+synchronous = false
+intent = true
+inputPacket =  R\0O\0T\0A\0D\0A\0T\0A\0
+outputPacket = R\0O\0T\0A\0D\0A\0T\0A\0
+wmdrmEnabled = true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/tcafwmdrmsupport.script	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,436 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+LOAD_SUITE tcaf
+
+RUN_UTILS MkDir c:\tcaf\
+RUN_UTILS MkDir c:\tcaf\testdata\
+RUN_UTILS MkDir c:\tcaf\testdata\TestAgentPrivateDir\
+
+RUN_UTILS CopyFile z:\rta\testdata\*.* c:\rta\testdata\*.*
+RUN_UTILS CopyFile z:\tcaf\testdata\*.* c:\tcaf\testdata\*.*
+RUN_UTILS CopyFile z:\tcaf\testdata\TestAgentPrivateDir\*.* c:\tcaf\testdata\TestAgentPrivateDir\*.*
+
+START_TESTCASE 			SEC-CAF-WMDRM-0001
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-WMDRM-0001
+//! @SYMTestCaseDesc 		Verifies the synchronous Read operation.
+//! @SYMPREQ			REQ11881, REQ11882
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Construct CData object from WMDRM header data and call the synchronous Read API providing an input data packet.The header data must not be recognized by any agent and F32 agent must handle this content.
+//! @SYMTestExpectedResults	CData object should be constructed successfully and the decrypted output packet resulting from Read operation must match the expected output packet.
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf WmdrmCAFReadStep c:\tcaf\tcafwmdrmsupport.ini WMDRMDataReadSyncWithIntent
+END_TESTCASE 			SEC-CAF-WMDRM-0001
+
+START_TESTCASE 			SEC-CAF-WMDRM-0002
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-WMDRM-0002
+//! @SYMTestCaseDesc 		Verifies the synchronous Read operation.
+//! @SYMPREQ			REQ11881, REQ11882
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Construct CData object from WMDRM header data and call the synchronous Read API providing an input data packet.The header data must not be recognized by any agent and F32 agent must handle this content.
+//! @SYMTestExpectedResults	CData object should be constructed successfully and the decrypted output packet resulting from Read operation must match the expected output packet.
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf WmdrmCAFReadStep c:\tcaf\tcafwmdrmsupport.ini WMDRMDataReadSyncWithoutIntent
+END_TESTCASE 			SEC-CAF-WMDRM-0002
+
+START_TESTCASE 			SEC-CAF-WMDRM-0003
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-WMDRM-0003
+//! @SYMTestCaseDesc 		Verifies the asynchronous Read operation.
+//! @SYMPREQ			REQ11881, REQ11882
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Construct CData object from WMDRM header data and call the asynchronous Read API providing an input data packet.The header data must not be recognized by any agent and F32 agent must handle this content.
+//! @SYMTestExpectedResults	CData object should be constructed successfully and the decrypted output packet resulting from Read operation must match the expected output packet.
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf WmdrmCAFReadStep c:\tcaf\tcafwmdrmsupport.ini WMDRMDataReadAsyncWithIntent
+END_TESTCASE 			SEC-CAF-WMDRM-0003
+
+START_TESTCASE 			SEC-CAF-WMDRM-0004
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-WMDRM-0004
+//! @SYMTestCaseDesc 		Verifies the asynchronous Read operation.
+//! @SYMPREQ			REQ11881, REQ11882
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Construct CData object from WMDRM header data and call the asynchronous Read API providing an input data packet.The header data must not be recognized by any agent and F32 agent must handle this content.
+//! @SYMTestExpectedResults	CData object should be constructed successfully and the decrypted output packet resulting from Read operation must match the expected output packet.
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf WmdrmCAFReadStep c:\tcaf\tcafwmdrmsupport.ini WMDRMDataReadAsyncWithoutIntent
+END_TESTCASE 			SEC-CAF-WMDRM-0004
+
+START_TESTCASE 			SEC-CAF-WMDRM-0005
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-WMDRM-0005
+//! @SYMTestCaseDesc 		Get a single attribute from WMDRM content.
+//!				(Manager_Attribute)
+//! @SYMREQ			REQ11881, REQ11882
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Construct CManager object and verify GetAttribute API overload taking WMDRM header data as input.The header data must not be supported by any agent and F32 agent must handle this content.
+//! @SYMTestExpectedResults	CManager object should be constructed successully and the attribute value obtained must match the expected.
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFManagerAttributeStep c:\tcaf\tcafwmdrmsupport.ini WMDRMManagerAttribute
+END_TESTCASE 			SEC-CAF-WMDRM-0005
+
+START_TESTCASE 			SEC-CAF-WMDRM-0006
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-WMDRM-0006
+//! @SYMTestCaseDesc 		Get a set of attributes from WMDRM content.
+//!				(Manager_AttributeSet)
+//! @SYMREQ			REQ11881, REQ11882
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Construct CManager object and verify GetAttributeSet API overload taking WMDRM header data as input.The header data must not be supported by any agent and F32 agent must handle this content.
+//! @SYMTestExpectedResults	CManager object should be constructed successully and the attribute set obtained must match the expected.
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFManagerAttributeSetStep c:\tcaf\tcafwmdrmsupport.ini WMDRMManagerAttributeSet
+END_TESTCASE 			SEC-CAF-WMDRM-0006
+
+START_TESTCASE 			SEC-CAF-WMDRM-0007
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-WMDRM-0007
+//! @SYMTestCaseDesc 		Get a string attribute from WMDRM content.
+//!				(Manager_Attribute)
+//! @SYMREQ			REQ11881, REQ11882
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Construct CManager object and verify GetStringAttribute API overload taking WMDRM header data as input.The header data must not be supported by any agent and F32 agent must handle this content.
+//! @SYMTestExpectedResults	CManager object should be constructed successully and the string attribute value obtained must match the expected.
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFManagerStringAttributeStep c:\tcaf\tcafwmdrmsupport.ini WMDRMManagerStringAttribute
+END_TESTCASE 			SEC-CAF-WMDRM-0007
+
+START_TESTCASE 			SEC-CAF-WMDRM-0008
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-WMDRM-0008
+//! @SYMTestCaseDesc 		Get a set of string attributes from WMDRM content.
+//!				(Manager_AttributeSet)
+//! @SYMREQ			REQ11881, REQ11882
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Construct CManager object and verify GetStringAttributeSet API overload taking WMDRM header data as input.The header data must not be supported by any agent and F32 agent must handle this content.
+//! @SYMTestExpectedResults	CManager object should be constructed successully and the string attribute set obtained must match the expected.
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFManagerStringAttributeSetStep c:\tcaf\tcafwmdrmsupport.ini WMDRMManagerStringAttributeSet
+END_TESTCASE 			SEC-CAF-WMDRM-0008
+
+START_TESTCASE 			SEC-CAF-WMDRM-0009
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-WMDRM-0009
+//! @SYMTestCaseDesc 		Verify CContent's NewAttributeL() API for WMDRM content.The header data must not be supported by any agent and F32 agent must handle this content.
+//! @SYMREQ			REQ11881, REQ11882
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Construct CContent object and verify the behaviour of NewAttributeL for WMDRM content.
+//! @SYMTestExpectedResults	CContent object should be constructed successully and the attribute value obtained must match the expected.
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf WmdrmCAFContentStep c:\tcaf\tcafwmdrmsupport.ini WMDRMContentNewAttribute
+END_TESTCASE 			SEC-CAF-WMDRM-0009
+
+START_TESTCASE 			SEC-CAF-WMDRM-0010
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-WMDRM-0010
+//! @SYMTestCaseDesc 		Verify that CContent object construction fails when an empty wmdrm header data is used.
+//! @SYMREQ			REQ11882
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Construct CContent object and verify CContent object construction fails with KErrMissingWmdrmHeaderData.
+//! @SYMTestExpectedResults	CContent object construction should fail with KErrMissingWmdrmHeaderData.
+//! @SYMTestType		CIT
+RUN_TEST_STEP_RESULT -17461 100 tcaf WmdrmCAFContentStep c:\tcaf\tcafwmdrmsupport.ini WMDRMEmptyHeaderData
+END_TESTCASE 			SEC-CAF-WMDRM-0010
+
+START_TESTCASE 			SEC-CAF-WMDRM-0011
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-WMDRM-0011
+//! @SYMTestCaseDesc 		Verifies that the synchronous Read operation fails with KErrInsufficientDataPacketLength when empty input data packet is provided.
+//! @SYMPREQ			REQ11881, REQ11882
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Construct CData object from WMDRM header data and call the synchronous Read API providing an empty input data packet.
+//! @SYMTestExpectedResults	Read operation must fail with KErrInsufficientDataPacketLength.
+//! @SYMTestType		CIT
+RUN_TEST_STEP_RESULT -17460 100 tcaf WmdrmCAFReadStep c:\tcaf\tcafwmdrmsupport.ini WMDRMDataReadSyncEmptyInputPacket
+END_TESTCASE 			SEC-CAF-WMDRM-0011
+
+START_TESTCASE 			SEC-CAF-WMDRM-0012
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-WMDRM-0012
+//! @SYMTestCaseDesc 		Verifies that the asynchronous Read operation fails with KErrInsufficientDataPacketLength when empty input data packet is provided.
+//! @SYMPREQ			REQ11881, REQ11882
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Construct CData object from WMDRM header data and call the asynchronous Read API providing an empty input data packet.
+//! @SYMTestExpectedResults	Read operation must fail with KErrInsufficientDataPacketLength.
+//! @SYMTestType		CIT
+RUN_TEST_STEP_RESULT -17460 100 tcaf WmdrmCAFReadStep c:\tcaf\tcafwmdrmsupport.ini WMDRMDataReadAsyncEmptyInputPacket
+END_TESTCASE 			SEC-CAF-WMDRM-0012
+
+START_TESTCASE 			SEC-CAF-WMDRM-0013
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-WMDRM-0013
+//! @SYMTestCaseDesc 		Verify resolver's DoRecognizeL API behaviour when WMDRM file is provided as input.The header data provided must match the one supported by RTA.
+//!				(DRM_Recognize)
+//! @SYMREQ			REQ12826,REQ
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Verify that RTA agent should recognize a given WMDRM file.
+//! @SYMTestExpectedResults	The WMDRM file should be recognized by RTA and the file mime type must match the expected.
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFRecognizeStep c:\tcaf\tcafwmdrmsupport.ini WMDRMFileRecognizeTest
+END_TESTCASE 			SEC-CAF-WMDRM-0013
+
+START_TESTCASE 			SEC-CAF-WMDRM-0014
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-WMDRM-0014
+//! @SYMTestCaseDesc 		Verify resolver's DoRecognizeL API behaviour when WMDRM header data is provided as input.The header data provided must match the one supported by RTA.
+//!				(DRM_Recognize)
+//! @SYMREQ			REQ12826
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Verify that RTA agent should recognize WMDRM stream content.
+//! @SYMTestExpectedResults	The WMDRM streamed content should be recognized by RTA and the content mime type must match the expected.
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf CAFRecognizeStep c:\tcaf\tcafwmdrmsupport.ini WMDRMStreamContentRecognizeTest
+END_TESTCASE 			SEC-CAF-WMDRM-0014
+
+START_TESTCASE 			SEC-CAF-WMDRM-0015
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-WMDRM-0015
+//! @SYMTestCaseDesc 		Verifies RTA agent's synchronous Read API behaviour.
+//! @SYMPREQ			REQ12826, REQ12726
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Construct CData object from WMDRM header data and call the synchronous Read API providing an input data packet.
+//! @SYMTestExpectedResults	CData object should be constructed successfully and the decrypted output packet resulting from Read operation must match the expected output packet.
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf WmdrmCAFReadStep c:\tcaf\tcafwmdrmsupport.ini WMDRMRTADataReadSyncWithIntent
+END_TESTCASE 			SEC-CAF-WMDRM-0015
+
+START_TESTCASE 			SEC-CAF-WMDRM-0016
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-WMDRM-0016
+//! @SYMTestCaseDesc 		Verifies RTA agent's synchronous Read API behaviour when intent is not provided.
+//! @SYMPREQ			REQ12826, REQ12726
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Construct CData object from WMDRM header data and call the synchronous Read API providing an input data packet.
+//! @SYMTestExpectedResults	CData object should be constructed successfully and the decrypted output packet resulting from Read operation must match the expected output packet.
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf WmdrmCAFReadStep c:\tcaf\tcafwmdrmsupport.ini WMDRMRTADataReadSyncWithoutIntent
+END_TESTCASE 			SEC-CAF-WMDRM-0016
+
+START_TESTCASE 			SEC-CAF-WMDRM-0017
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-WMDRM-0017
+//! @SYMTestCaseDesc 		Verifies RTA agent's asynchronous Read behaviour.
+//! @SYMPREQ			REQ12826, REQ12726
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Construct CData object from WMDRM header data and call the asynchronous Read API providing an input data packet.
+//! @SYMTestExpectedResults	CData object should be constructed successfully and the decrypted output packet resulting from Read operation must match the expected output packet.
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf WmdrmCAFReadStep c:\tcaf\tcafwmdrmsupport.ini WMDRMRTADataReadAsyncWithIntent
+END_TESTCASE 			SEC-CAF-WMDRM-0017
+
+START_TESTCASE 			SEC-CAF-WMDRM-0018
+//! @file
+//! @SYMTestCaseID 		SEC-CAF-WMDRM-0018
+//! @SYMTestCaseDesc 		Verifies RTA agent's asynchronous Read behaviour when intent is not provided.
+//! @SYMPREQ			REQ12826, REQ12726
+//! @SYMTestStatus		Implemented
+//! @SYMTestPriority		Normal
+//! @SYMTestActions		Construct CData object from WMDRM header data and call the asynchronous Read API providing an input data packet.
+//! @SYMTestExpectedResults	CData object should be constructed successfully and the decrypted output packet resulting from Read operation must match the expected output packet.
+//! @SYMTestType		CIT
+RUN_TEST_STEP 100 tcaf WmdrmCAFReadStep c:\tcaf\tcafwmdrmsupport.ini WMDRMRTADataReadAsyncWithoutIntent
+END_TESTCASE 			SEC-CAF-WMDRM-0018
+
+START_TESTCASE 			SEC-CAF-WMDRM-0019
+//!@file
+//!SYMTestCaseID 		SEC-CAF-WMDRM-0019
+//!SYMTestCaseDesc 		Get an attribute from WMDRM content using CData.The header data provided must match the one supported by RTA.
+//!SYMPREQ			REQ12826
+//!SYMTestStatus		Implemented
+//!SYMTestPriority		Medium
+//!SYMTestActions		Verify RTA agent's GetAttribute API
+//!SYMTestExpectedResults	Attribute obtained must match the expected.
+//!SYMTestType			CIT
+RUN_TEST_STEP 100 tcaf CAFDataAttributeStep c:\tcaf\tcafwmdrmsupport.ini WMDRMRTADataAttribute
+END_TESTCASE			SEC-CAF-WMDRM-0019
+
+START_TESTCASE 			SEC-CAF-WMDRM-0020
+//!@file
+//!SYMTestCaseID 		SEC-CAF-WMDRM-0020
+//!SYMTestCaseDesc 		Get an attribute set from WMDRM content using CData.The header data provided must match the one supported by RTA.
+//!SYMPREQ			REQ12826
+//!SYMTestStatus		Implemented
+//!SYMTestPriority		Medium
+//!SYMTestActions		Verify RTA agent's GetAttributeSet API.
+//!SYMTestExpectedResults	Attributes obtained must match the expected.
+//!SYMTestType			CIT
+RUN_TEST_STEP 100 tcaf CAFDataAttributeSetStep c:\tcaf\tcafwmdrmsupport.ini WMDRMRTADataAttributeSet
+END_TESTCASE			SEC-CAF-WMDRM-0020
+
+START_TESTCASE 			SEC-CAF-WMDRM-0021
+//!@file
+//!SYMTestCaseID 		SEC-CAF-WMDRM-0021
+//!SYMTestCaseDesc 		Get a string attribute from WMDRM content using CData.The header data provided must match the one supported by RTA.
+//!SYMPREQ			REQ12826
+//!SYMTestStatus		Implemented
+//!SYMTestPriority		Medium
+//!SYMTestActions		Verify RTA agent's GetStringAttribute API.
+//!SYMTestExpectedResults	String attribute obtained must match the expected.
+//!SYMTestType			CIT
+RUN_TEST_STEP 100 tcaf CAFDataStringAttributeStep c:\tcaf\tcafwmdrmsupport.ini WMDRMRTADataStringAttribute
+END_TESTCASE			SEC-CAF-WMDRM-0021
+
+START_TESTCASE 			SEC-CAF-WMDRM-0022
+//!@file
+//!SYMTestCaseID 		SEC-CAF-WMDRM-0022
+//!SYMTestCaseDesc 		Get string attribute set from WMDRM content using CData.The header data provided must match the one supported by RTA.
+//!SYMPREQ			REQ12826
+//!SYMTestStatus		Implemented
+//!SYMTestPriority		Medium
+//!SYMTestActions		Verify RTA agent's GetStringAttributeSet API.
+//!SYMTestExpectedResults	String attributes obtained must match the expected.
+//!SYMTestType			CIT
+RUN_TEST_STEP 100 tcaf CAFDataStringAttributeSetStep c:\tcaf\tcafwmdrmsupport.ini WMDRMRTADataStringAttributeSet
+END_TESTCASE			SEC-CAF-WMDRM-0022
+
+START_TESTCASE 			SEC-CAF-WMDRM-0023
+//!@file
+//!SYMTestCaseID 		SEC-CAF-WMDRM-0023
+//!SYMTestCaseDesc 		Get an attribute from WMDRM content using CContent.The header data provided must match the one supported by RTA.
+//!SYMPREQ			REQ12826
+//!SYMTestStatus		Implemented
+//!SYMTestPriority		Medium
+//!SYMTestActions		Verify RTA agent's GetAttribute API.
+//!SYMTestExpectedResults	Attribute obtained must match the expected.
+//!SYMTestType			CIT
+RUN_TEST_STEP 100 tcaf CAFContentAttributeStep c:\tcaf\tcafwmdrmsupport.ini WMDRMRTAContentAttribute
+END_TESTCASE			SEC-CAF-WMDRM-0023
+
+START_TESTCASE 			SEC-CAF-WMDRM-0024
+//!@file
+//!SYMTestCaseID 		SEC-CAF-WMDRM-0024
+//!SYMTestCaseDesc 		Get an attribute set from WMDRM content using CContent.The header data provided must match the one supported by RTA.
+//!SYMPREQ			REQ12826
+//!SYMTestStatus		Implemented
+//!SYMTestPriority		Medium
+//!SYMTestActions		Verify RTA agent's GetAttributeSet API.
+//!SYMTestExpectedResults	Attributes obtained must match the expected.
+//!SYMTestType			CIT
+RUN_TEST_STEP 100 tcaf CAFContentAttributeSetStep c:\tcaf\tcafwmdrmsupport.ini WMDRMRTAContentAttributeSet
+END_TESTCASE			SEC-CAF-WMDRM-0024
+
+START_TESTCASE 			SEC-CAF-WMDRM-0025
+//!@file
+//!SYMTestCaseID 		SEC-CAF-WMDRM-0025
+//!SYMTestCaseDesc 		Get a string attribute from WMDRM content using CContent.The header data provided must match the one supported by RTA.
+//!SYMPREQ			REQ12826
+//!SYMTestStatus		Implemented
+//!SYMTestPriority		Medium
+//!SYMTestActions		Verify RTA agent's GetStringAttribute API.
+//!SYMTestExpectedResults	String attribute obtained must match the expected.
+//!SYMTestType			CIT
+RUN_TEST_STEP 100 tcaf CAFContentStringAttributeStep c:\tcaf\tcafwmdrmsupport.ini WMDRMRTAContentStringAttribute
+END_TESTCASE			SEC-CAF-WMDRM-0025
+
+START_TESTCASE 			SEC-CAF-WMDRM-0026
+//!@file
+//!SYMTestCaseID 		SEC-CAF-WMDRM-0026
+//!SYMTestCaseDesc 		Get string attribute set from WMDRM content using CContent.The header data provided must match the one supported by RTA.
+//!SYMPREQ			REQ12826
+//!SYMTestStatus		Implemented
+//!SYMTestPriority		Medium
+//!SYMTestActions		Verify RTA agent's GetStringAttributeSet API.
+//!SYMTestExpectedResults	String attributes obtained must match the expected.
+//!SYMTestType			CIT
+RUN_TEST_STEP 100 tcaf CAFContentStringAttributeSetStep c:\tcaf\tcafwmdrmsupport.ini WMDRMRTAContentStringAttributeSet
+END_TESTCASE			SEC-CAF-WMDRM-0026
+
+START_TESTCASE 			SEC-CAF-WMDRM-0027
+//!@file
+//!SYMTestCaseID 		SEC-CAF-WMDRM-0027
+//!SYMTestCaseDesc 		Get an attribute from WMDRM content using CManager.The header data provided must match the one supported by RTA.
+//!SYMPREQ			REQ12826
+//!SYMTestStatus		Implemented
+//!SYMTestPriority		Medium
+//!SYMTestActions		Verify RTA agent's GetAttribute API.
+//!SYMTestExpectedResults	Attribute obtained must match the expected.
+//!SYMTestType			CIT
+RUN_TEST_STEP 100 tcaf CAFManagerAttributeStep c:\tcaf\tcafwmdrmsupport.ini WMDRMRTAManagerAttribute
+END_TESTCASE			SEC-CAF-WMDRM-0027
+
+START_TESTCASE 			SEC-CAF-WMDRM-0028
+//!@file
+//!SYMTestCaseID 		SEC-CAF-WMDRM-0028
+//!SYMTestCaseDesc 		Get an attribute set from WMDRM content using CManager.The header data provided must match the one supported by RTA.
+//!SYMPREQ			REQ12826
+//!SYMTestStatus		Implemented
+//!SYMTestPriority		Medium
+//!SYMTestActions		Verify RTA agent's GetAttributeSet API.
+//!SYMTestExpectedResults	Attributes obtained must match the expected.
+//!SYMTestType			CIT
+RUN_TEST_STEP 100 tcaf CAFManagerAttributeSetStep c:\tcaf\tcafwmdrmsupport.ini WMDRMRTAManagerAttributeSet
+END_TESTCASE			SEC-CAF-WMDRM-0028
+
+START_TESTCASE 			SEC-CAF-WMDRM-0029
+//!@file
+//!SYMTestCaseID 		SEC-CAF-WMDRM-0029
+//!SYMTestCaseDesc 		Get a string attribute from WMDRM content using CManager.The header data provided must match the one supported by RTA.
+//!SYMPREQ			REQ12826
+//!SYMTestStatus		Implemented
+//!SYMTestPriority		Medium
+//!SYMTestActions		Verify RTA agent's GetStringAttribute API.
+//!SYMTestExpectedResults	String attribute obtained must match the expected.
+//!SYMTestType			CIT
+RUN_TEST_STEP 100 tcaf CAFManagerStringAttributeStep c:\tcaf\tcafwmdrmsupport.ini WMDRMRTAManagerStringAttribute
+END_TESTCASE			SEC-CAF-WMDRM-0029
+
+START_TESTCASE 			SEC-CAF-WMDRM-0030
+//!@file
+//!SYMTestCaseID 		SEC-CAF-WMDRM-0030
+//!SYMTestCaseDesc 		Get string attribute set from WMDRM content using CManager.The header data provided must match the one supported by RTA.
+//!SYMPREQ			REQ12826
+//!SYMTestStatus		Implemented
+//!SYMTestPriority		Medium
+//!SYMTestActions		Verify RTA agent's GetStringAttributeSet API.
+//!SYMTestExpectedResults	String attributes obtained must match the expected.
+//!SYMTestType			CIT
+RUN_TEST_STEP 100 tcaf CAFManagerStringAttributeSetStep c:\tcaf\tcafwmdrmsupport.ini WMDRMRTAManagerStringAttributeSet
+END_TESTCASE			SEC-CAF-WMDRM-0030
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/scripts/testcleanupstep.script	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,39 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+LOAD_SUITE tcaf
+
+//Removes files and directories after the tests have finished.
+START_TESTCASE 			SEC-CAF-CLEAN-0001
+//! @SYMTestCaseID 		SEC-CAF-CLEAN-0001
+RUN_TEST_STEP 100 tcaf CAFCleanupStep
+END_TESTCASE 			SEC-CAF-CLEAN-0001
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/CafUtilsStep.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,159 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#ifndef __CAFUTILS_STEP_H__
+#define __CAFUTILS_STEP_H__
+
+#include <test/testexecutestepbase.h>
+
+#include "cafstep.h"
+
+// Constants used to name test cases 
+_LIT(KCAFCDirStreamStep,"CAFCDirStreamStep");
+_LIT(KCAFRAttributeSetStreamStep,"CAFRAttributeSetStreamStep");
+_LIT(KCAFRStringAttributeSetStreamStep,"CAFRStringAttributeSetStreamStep");
+_LIT(KCAFSupplierOutputFileStreamStep,"CAFSupplierOutputFileStreamStep");
+_LIT(KCAFMetaDataArrayStep,"CAFMetaDataArrayStep");
+_LIT(KCAFEmbeddedObjectStep,"CAFEmbeddedObjectStep");
+_LIT(KCAFVirtualPathStep,"CAFVirtualPathStep");
+_LIT(KCAFRightsInfoStep,"CAFRightsInfoStep");
+_LIT(KCAFStreamablePtrArrayStep,"CAFStreamablePtrArrayStep");
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+_LIT(KCAFHelperStep,"CAFHelperStep");     
+#endif //#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
+class CCAFServer;
+
+/* 
+* Used to test streaming of CDirStreamable objects
+*
+* @internalComponent 
+*/
+class CCafCDirStreamStep : public CCAFStep
+	{
+public:
+	CCafCDirStreamStep(CCAFServer& aParent);
+	~CCafCDirStreamStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+
+class CCafRAttributeSetStreamStep : public CCAFStep
+	{
+public:
+	CCafRAttributeSetStreamStep(CCAFServer& aParent);
+	~CCafRAttributeSetStreamStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+
+class CCafRStringAttributeSetStreamStep : public CCAFStep
+	{
+public:
+	CCafRStringAttributeSetStreamStep(CCAFServer& aParent);
+	~CCafRStringAttributeSetStreamStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+
+class CCafSupplierOutputFileStreamStep : public CCAFStep
+	{
+public:
+	CCafSupplierOutputFileStreamStep(CCAFServer& aParent);
+	~CCafSupplierOutputFileStreamStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+
+
+class CCafMetaDataArrayStep : public CCAFStep
+	{
+public:
+	CCafMetaDataArrayStep(CCAFServer& aParent);
+	~CCafMetaDataArrayStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+class CCafEmbeddedObjectStep : public CCAFStep
+	{
+public:
+	CCafEmbeddedObjectStep(CCAFServer& aParent);
+	~CCafEmbeddedObjectStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+	
+class CCafVirtualPathStep : public CCAFStep
+	{
+public:
+	CCafVirtualPathStep(CCAFServer& aParent);
+	~CCafVirtualPathStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};	
+
+class CCafRightsInfoStep : public CCAFStep
+	{
+public:
+	CCafRightsInfoStep(CCAFServer& aParent);
+	~CCafRightsInfoStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};	
+
+class CCafStreamablePtrArrayStep : public CCAFStep
+	{
+public:
+	CCafStreamablePtrArrayStep(CCAFServer& aParent);
+	~CCafStreamablePtrArrayStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};	
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+class CCafHelperStep : public CCAFStep     
+    {     
+public:     
+    CCafHelperStep();     
+    ~CCafHelperStep();     
+    virtual TVerdict doTestStepL();     
+      
+private:     
+    TInt TestFileHandleCaseL(TInt aError, const TDesC& aFileName);     
+    TInt TestHeaderDataCaseL(TInt aError);     
+    };     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT        
+     
+	
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/CafutilsStep.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,947 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+ 
+#include <test/testexecutelog.h>
+#include <s32mem.h>
+#include <caf/caf.h>
+#include "cafserver.h"
+#include "CafUtilsStep.h"
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+#include <test/refcafhelper.h>     
+#include <caf/cafhelper.h>     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
+using namespace ContentAccess;
+
+
+CCafCDirStreamStep::~CCafCDirStreamStep()
+	{
+	}
+
+CCafCDirStreamStep::CCafCDirStreamStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFCDirStreamStep);
+	}
+
+
+TVerdict CCafCDirStreamStep::doTestStepL()
+	{
+	SetTestStepResult(EPass);
+
+	_LIT(KTcafDir, "C:\\tcaf\\");
+	
+	INFO_PRINTF1(_L("CDirStreamable test"));
+	
+
+	__UHEAP_MARK;
+	
+	CManager *manager = CManager::NewLC();
+	
+	CDir *fileList = NULL;
+	User::LeaveIfError(manager->GetDir(KTcafDir(),KNullUid, ESortByName, fileList));
+	
+	CDirStreamable *newFileList = CDirStreamable::NewL(*fileList);
+	delete fileList;
+	
+	// Create a buffer
+	CBufFlat* buf = CBufFlat::NewL(50);
+	CleanupStack::PushL(buf);
+	
+	// create write stream
+	RBufWriteStream writeStream(*buf);
+	CleanupClosePushL(writeStream);
+
+	// write the directory to the stream
+	newFileList->ExternalizeL(writeStream);
+	CleanupStack::PopAndDestroy(&writeStream);
+
+	// create read stream
+	RBufReadStream readStream(*buf);
+	CleanupClosePushL(readStream);
+
+	// construct a new CDirStreamable from the stream
+	CDirStreamable *streamDir = CDirStreamable::NewL(readStream);
+	CleanupStack::PopAndDestroy(&readStream);
+	
+	for(TInt i = 0; i < newFileList->Count(); i++)
+		{
+		if((*newFileList)[i].iName != (*streamDir)[i].iName)
+			{
+			SetTestStepResult(EFail);
+			}
+		if((*newFileList)[i].iType != (*streamDir)[i].iType)
+			{
+			SetTestStepResult(EFail);
+			}
+		}
+	
+	CleanupStack::PopAndDestroy(buf);
+	
+	delete newFileList;
+	delete streamDir;
+	CleanupStack::PopAndDestroy(manager);
+	
+	__UHEAP_MARKEND;
+
+	return TestStepResult();
+	}
+
+CCafRAttributeSetStreamStep::~CCafRAttributeSetStreamStep()
+	{
+	}
+
+CCafRAttributeSetStreamStep::CCafRAttributeSetStreamStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFRAttributeSetStreamStep);
+	}
+
+
+TVerdict CCafRAttributeSetStreamStep::doTestStepL()
+	{
+	SetTestStepResult(EPass);
+	
+	INFO_PRINTF1(_L("CRAttributeSet streaming test"));
+	
+	__UHEAP_MARK;
+	
+
+	RAttributeSet aSet;
+	CleanupClosePushL(aSet);
+	aSet.AddL(EIsProtected);
+	aSet.AddL(EIsForwardable);
+	aSet.AddL(EIsForwardable);
+	
+	aSet.SetValue(EIsProtected, (TInt) ETrue, KErrNone);
+	aSet.SetValue(EIsForwardable, (TInt) EFalse, KErrNone);
+		
+	// Create a buffer
+	CBufFlat* buf = CBufFlat::NewL(50);
+	CleanupStack::PushL(buf);
+	
+	// create write stream
+	RBufWriteStream writeStream(*buf);
+	CleanupClosePushL(writeStream);
+
+	// write the directory to the stream
+	aSet.ExternalizeL(writeStream);
+	CleanupStack::PopAndDestroy(&writeStream);
+
+	// create read stream
+	RBufReadStream readStream(*buf);
+	CleanupClosePushL(readStream);
+
+	// construct a new CDirStreamable from the stream
+	RAttributeSet bSet;
+	CleanupClosePushL(bSet);
+	bSet.InternalizeL(readStream);
+		
+	TInt valueA, valueB;
+	if(aSet.Count() != bSet.Count())
+		{
+		SetTestStepResult(EFail);
+		}
+	
+	for(TInt i = 0; i < aSet.Count(); i++)
+		{
+		valueA = -1;
+		valueB = -1;
+		if(aSet.GetValue(aSet[i],valueA) != bSet.GetValue(aSet[i],valueB))
+			{
+			SetTestStepResult(EFail);
+			}
+			
+		if(valueA != valueB)
+			{
+			SetTestStepResult(EFail);
+			}
+		}
+	
+	CleanupStack::PopAndDestroy(&bSet);
+	CleanupStack::PopAndDestroy(&readStream);
+	CleanupStack::PopAndDestroy(buf);
+	CleanupStack::PopAndDestroy(&aSet);
+	
+	__UHEAP_MARKEND;
+
+	return TestStepResult();
+	}
+
+
+CCafRStringAttributeSetStreamStep::~CCafRStringAttributeSetStreamStep()
+	{
+	}
+
+CCafRStringAttributeSetStreamStep::CCafRStringAttributeSetStreamStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFRStringAttributeSetStreamStep);
+	}
+
+
+TVerdict CCafRStringAttributeSetStreamStep::doTestStepL()
+	{
+	SetTestStepResult(EPass);
+	
+	INFO_PRINTF1(_L("CRStringAttributeSet streaming test"));
+	
+	_LIT(KMimeType,"mime/type");
+
+	__UHEAP_MARK;
+	
+	RStringAttributeSet aSet;
+	CleanupClosePushL(aSet);
+	aSet.AddL(EMimeType);
+	aSet.AddL(EDescription);
+	
+	// Set some values, normally be done by the agent
+	aSet.SetValue(EMimeType, KMimeType(), KErrNone);	
+	aSet.SetValue(EDescription, KNullDesC(), KErrNotSupported);	
+	
+	// Create a buffer
+	CBufFlat* buf = CBufFlat::NewL(50);
+	CleanupStack::PushL(buf);
+	
+	// create write stream
+	RBufWriteStream writeStream(*buf);
+	CleanupClosePushL(writeStream);
+
+	// write the directory to the stream
+	aSet.ExternalizeL(writeStream);
+	CleanupStack::PopAndDestroy(&writeStream);
+
+	// create read stream
+	RBufReadStream readStream(*buf);
+	CleanupClosePushL(readStream);
+
+	// construct a new CDirStreamable from the stream
+	RStringAttributeSet bSet;
+	CleanupClosePushL(bSet);
+	bSet.InternalizeL(readStream);
+		
+	TBuf <1024> valueA;
+	TBuf <1024> valueB;
+	if(aSet.Count() != bSet.Count())
+		{
+		SetTestStepResult(EFail);
+		}
+	
+	for(TInt i = 0; i < aSet.Count(); i++)
+		{
+		valueA.SetLength(0);
+		valueB.SetLength(0);
+		if(aSet.GetValue(aSet[i],valueA) != bSet.GetValue(aSet[i],valueB))
+			{
+			SetTestStepResult(EFail);
+			}
+			
+		if(valueA != valueB)
+			{
+			SetTestStepResult(EFail);
+			}
+		}
+	
+	CleanupStack::PopAndDestroy(&bSet);
+	CleanupStack::PopAndDestroy(&readStream);
+	CleanupStack::PopAndDestroy(buf);
+	CleanupStack::PopAndDestroy(&aSet);
+	
+	__UHEAP_MARKEND;
+
+	return TestStepResult();
+	}
+
+
+
+CCafSupplierOutputFileStreamStep::~CCafSupplierOutputFileStreamStep()
+	{
+	}
+
+CCafSupplierOutputFileStreamStep::CCafSupplierOutputFileStreamStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFSupplierOutputFileStreamStep);
+	}
+
+
+TVerdict CCafSupplierOutputFileStreamStep::doTestStepL()
+	{
+	SetTestStepResult(EPass);
+
+	_LIT(KDummyName, "C:\\tcaf\\supplieroutputfile.txt");
+	_LIT8(KDummyType, "something//caf");
+	
+	INFO_PRINTF1(_L("CSupplierOutputFile test"));
+	
+
+	__UHEAP_MARK;
+	
+	CSupplierOutputFile *outputFile = CSupplierOutputFile::NewL(KDummyName(), EContent, KDummyType());
+	
+	// Create a buffer
+	CBufFlat* buf = CBufFlat::NewL(50);
+	CleanupStack::PushL(buf);
+	
+	// create write stream
+	RBufWriteStream writeStream(*buf);
+	CleanupClosePushL(writeStream);
+
+	// write the directory to the stream
+	outputFile->ExternalizeL(writeStream);
+	CleanupStack::PopAndDestroy(&writeStream);
+
+	// create read stream
+	RBufReadStream readStream(*buf);
+	CleanupClosePushL(readStream);
+
+	// construct a new CSupplierOutputFile from the stream
+	CSupplierOutputFile *outputFile2= CSupplierOutputFile::NewL(readStream);
+	CleanupStack::PopAndDestroy(&readStream);
+	
+	if(outputFile->FileName() != outputFile2->FileName())
+			{
+			SetTestStepResult(EFail);
+			}
+	if(outputFile->OutputType() != outputFile2->OutputType())
+			{
+			SetTestStepResult(EFail);
+			}
+	if(outputFile->MimeTypeL() != outputFile2->MimeTypeL())
+			{
+			SetTestStepResult(EFail);
+			}
+	
+	CleanupStack::PopAndDestroy(buf);
+	
+	delete outputFile;
+	delete outputFile2;
+	
+	__UHEAP_MARKEND;
+
+	return TestStepResult();
+	}
+
+CCafMetaDataArrayStep::~CCafMetaDataArrayStep()
+	{
+	}
+
+CCafMetaDataArrayStep::CCafMetaDataArrayStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFMetaDataArrayStep);
+	}
+
+
+TVerdict CCafMetaDataArrayStep::doTestStepL()
+	{
+	SetTestStepResult(EPass);
+
+	_LIT(KTest1, "Cat");
+	_LIT(KValue1, "Sat");
+
+	_LIT8(KTest2, "Mellow");
+	_LIT8(KValue2, "Yellow");
+
+	_LIT8(KTest3, "Tree");
+	_LIT8(KValue3, "House");
+
+	
+	INFO_PRINTF1(_L("CMetaDataArray test"));
+	
+
+	__UHEAP_MARK;
+	
+	CMetaDataArray *array = CMetaDataArray::NewLC();
+	array->AddL(KTest1(), KValue1());
+	array->AddL(KTest2(), KValue2());
+	array->AddL(KTest3(), KValue3());
+	
+	// Create a buffer
+	CBufFlat* buf = CBufFlat::NewL(50);
+	CleanupStack::PushL(buf);
+	
+	// create write stream
+	RBufWriteStream writeStream(*buf);
+	CleanupClosePushL(writeStream);
+
+	// write the directory to the stream
+	array->ExternalizeL(writeStream);
+	CleanupStack::PopAndDestroy(&writeStream);
+
+	// create read stream
+	RBufReadStream readStream(*buf);
+	CleanupClosePushL(readStream);
+
+	// construct a new CSupplierOutputFile from the stream
+	CMetaDataArray *array2= CMetaDataArray::NewL(readStream);
+	CleanupStack::PopAndDestroy(&readStream);
+	
+	
+	if(array->Count() != array2->Count() || (*array)[0].Field() != KTest1() || (*array)[1].Data8() != KValue2())
+			{
+			SetTestStepResult(EFail);
+			}
+	for(TInt i = 0; i < array->Count(); i++)
+		{
+		const CMetaData &a = (*array)[i];
+		const CMetaData &b = (*array2)[i];
+		if(a.Field() != b.Field())
+			{
+			SetTestStepResult(EFail);
+			}
+		if(a.Field8() != b.Field8())
+			{
+			SetTestStepResult(EFail);
+			}
+		if(a.Data() != b.Data())
+			{
+			SetTestStepResult(EFail);
+			}
+		if(a.Data8() != b.Data8())
+			{
+			SetTestStepResult(EFail);
+			}
+		}
+	
+	delete array2;
+		
+	CleanupStack::PopAndDestroy(buf);
+	CleanupStack::PopAndDestroy(array);
+	
+	__UHEAP_MARKEND;
+
+	return TestStepResult();
+	}
+
+
+CCafEmbeddedObjectStep::~CCafEmbeddedObjectStep()
+	{
+	}
+
+CCafEmbeddedObjectStep::CCafEmbeddedObjectStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFEmbeddedObjectStep);
+	}
+
+
+TVerdict CCafEmbeddedObjectStep::doTestStepL()
+	{
+	SetTestStepResult(EPass);
+
+	_LIT(KTestUniqueId, "The UniqueId");
+	_LIT(KTestName, "The Name");
+
+	_LIT8(KTestMimeType, "The mime type");
+
+	
+	INFO_PRINTF1(_L("CEmbeddedObject test"));
+	
+
+	__UHEAP_MARK;
+	
+	CEmbeddedObject *aObject = CEmbeddedObject::NewL(KTestUniqueId(), KTestName(), KTestMimeType(), EContentObject);
+	
+	// Create a buffer
+	CBufFlat* buf = CBufFlat::NewL(50);
+	CleanupStack::PushL(buf);
+	
+	// create write stream
+	RBufWriteStream writeStream(*buf);
+	CleanupClosePushL(writeStream);
+
+	// write the directory to the stream
+	aObject->ExternalizeL(writeStream);
+	CleanupStack::PopAndDestroy(&writeStream);
+
+	// create read stream
+	RBufReadStream readStream(*buf);
+	CleanupClosePushL(readStream);
+
+	// construct a new CSupplierOutputFile from the stream
+	CEmbeddedObject *bObject= CEmbeddedObject::NewL(readStream);
+	CleanupStack::PopAndDestroy(&readStream);
+	
+	
+	if(aObject->UniqueId() != bObject->UniqueId())
+			{
+			SetTestStepResult(EFail);
+			}
+			
+	if(aObject->Name() != bObject->Name())
+			{
+			SetTestStepResult(EFail);
+			}			
+	if(aObject->Type() != bObject->Type())
+			{
+			SetTestStepResult(EFail);
+			}			
+	if(aObject->MimeType() != bObject->MimeType())
+			{
+			SetTestStepResult(EFail);
+			}			
+	
+	CleanupStack::PopAndDestroy(buf);
+	delete aObject;
+	delete bObject;
+	
+	__UHEAP_MARKEND;
+
+	return TestStepResult();
+	}
+
+CCafVirtualPathStep::~CCafVirtualPathStep()
+	{
+	}
+
+CCafVirtualPathStep::CCafVirtualPathStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFVirtualPathStep);
+	}
+
+
+TVerdict CCafVirtualPathStep::doTestStepL()
+	{
+	SetTestStepResult(EPass);
+	INFO_PRINTF1(_L("CVirtualPath test"));
+	_LIT(KTestUniqueId, "The UniqueId");
+	_LIT(KTestUri, "A URI");
+	_LIT(KSection,"virtualpath");
+	_LIT(KDefaultUniqueID,"DEFAULT");
+	TPtrC uri;
+	TPtrC uniqueID;
+	TPtrC combined;
+	TPtrC expecteduniqueid;
+	TPtrC expecteduri;
+	__UHEAP_MARK;
+	
+	/* test the creation of TVirtualPathPtr and CVirtualPath objects and check if they contain
+	 * the expected URI and UniqueID values.
+	 */
+	TInt i;
+	for(i = 0;i<6;i++)
+		{
+		TBuf<13> sectionName(KSection);
+		sectionName.AppendNum(i);
+		GetStringFromConfig(sectionName,_L("uri"),uri);
+		GetStringFromConfig(sectionName,_L("uniqueID"),uniqueID);
+		GetStringFromConfig(sectionName,_L("combined"),combined);
+		GetStringFromConfig(sectionName,_L("expecteduri"),expecteduri);
+		GetStringFromConfig(sectionName,_L("expecteduniqueid"),expecteduniqueid);
+		// Test the TVirtualPathPtr API
+		TVirtualPathPtr vPath(uri,uniqueID);
+		if(vPath.URI()!=expecteduri)
+			{
+			INFO_PRINTF4(_L("TVirtualPathPtr(uri,uniqueID) failed Uri for %S\nExpected %S\nGot %S"),&combined,&expecteduri,&vPath.URI());
+			SetTestStepResult(EFail);
+			}
+		if(vPath.UniqueId()!=expecteduniqueid)
+			{
+			INFO_PRINTF4(_L("TVirtualPathPtr(uri,uniqueID) failed uniqueID for %S\nExpected %S\nGot %S"),&combined,&expecteduniqueid,&vPath.UniqueId());
+			SetTestStepResult(EFail);
+			}
+		vPath=TVirtualPathPtr(combined);
+		if(vPath.URI()!=expecteduri)
+			{
+			INFO_PRINTF4(_L("TVirtualPathPtr(uri,uniqueID) failed Uri() for %S\nExpected %S\nGot %S"),&combined,&expecteduri,&vPath.URI());
+			SetTestStepResult(EFail);
+			}
+		if(vPath.UniqueId()!=expecteduniqueid)
+			{
+			INFO_PRINTF4(_L("TVirtualPathPtr(aCombinedUriUniqueId) failed UniqueID() for %S\nExpected %S\nGot %S"),&combined,&expecteduniqueid,&vPath.UniqueId());
+			SetTestStepResult(EFail);
+			}
+		vPath=combined;
+		if(vPath.URI()!=expecteduri)
+			{
+			INFO_PRINTF4(_L("TVirtualPathPtr operator = failed Uri for %S\nExpected %S\nGot %S"),&combined,&expecteduri,&vPath.URI());
+			SetTestStepResult(EFail);
+			}
+		if(vPath.UniqueId()!=expecteduniqueid)
+			{
+			INFO_PRINTF4(_L("TVirtualPathPtr operator = UniqueId for %S\nExpected %S\nGot %S"),&combined,&expecteduniqueid,&vPath.UniqueId());
+			SetTestStepResult(EFail);
+			}
+		// Test the CVirtualPath API
+		CVirtualPath* heapPath = CVirtualPath::NewL(uri,uniqueID);
+		if(heapPath->URI()!=expecteduri)
+			{
+			INFO_PRINTF4(_L("TCVirtualPath::NewL(uri,uniqueID) failed Uri for %S\nExpected %S\nGot %S"),&combined,&expecteduri,&heapPath->URI());
+			SetTestStepResult(EFail);
+			}
+		if(heapPath->UniqueId()!=expecteduniqueid)
+			{
+			INFO_PRINTF4(_L("CVirtualPath::NewL(uri,uniqueID) failed UniqueID for %S\nExpected %S\nGot %S"),&combined,&expecteduniqueid,&heapPath->UniqueId());;
+			SetTestStepResult(EFail);
+			}
+		if(heapPath->GetCombinedUriUniqueId()!=combined)
+			{
+			INFO_PRINTF4(_L("CVirtualPath::NewL(uri,uniqueID) failed GetCombinedUriUniqueId() for %S\nExpected %S\nGot %S"),&combined,&combined,&heapPath->GetCombinedUriUniqueId());
+			SetTestStepResult(EFail);
+			}
+		delete heapPath;
+		heapPath=NULL;
+		
+		heapPath = CVirtualPath::NewL(combined);
+		if(heapPath->URI()!=expecteduri)
+			{
+			INFO_PRINTF4(_L("CVirtualPath::NewL(combined) failed Uri for %S\nExpected %S\nGot %S"),&combined,&expecteduri,&heapPath->URI());
+			SetTestStepResult(EFail);
+			}
+		if(heapPath->UniqueId()!=expecteduniqueid)
+			{
+			INFO_PRINTF4(_L("CVirtualPath::NewL(combined) failed UniqueID for %S\nExpected %S\nGot %S"),&combined,&expecteduniqueid,&heapPath->UniqueId());
+			SetTestStepResult(EFail);
+			}
+		if(heapPath->GetCombinedUriUniqueId()!=combined)
+			{
+			INFO_PRINTF4(_L("CVirtualPath::NewL(combined) failed GetCombinedUriUniqueId() for %S\nExpected %S\nGot %S"),&combined,&combined,&heapPath->GetCombinedUriUniqueId());
+			SetTestStepResult(EFail);
+			}
+		delete heapPath;
+		heapPath=NULL;
+		}
+
+
+	CVirtualPath *aPath= CVirtualPath::NewL(KTestUri(), KTestUniqueId());
+	
+	// Create a buffer
+	CBufFlat* buf = CBufFlat::NewL(50);
+	CleanupStack::PushL(buf);
+	
+	// create write stream
+	RBufWriteStream writeStream(*buf);
+	CleanupClosePushL(writeStream);
+
+	// write the directory to the stream
+	aPath->ExternalizeL(writeStream);
+	CleanupStack::PopAndDestroy(&writeStream);
+
+	// create read stream
+	RBufReadStream readStream(*buf);
+	CleanupClosePushL(readStream);
+
+	// construct a new CSupplierOutputFile from the stream
+	CVirtualPath *bPath= CVirtualPath::NewL(readStream);
+	CleanupStack::PopAndDestroy(&readStream);
+	
+	
+	if(aPath->UniqueId() != bPath->UniqueId())
+			{
+			SetTestStepResult(EFail);
+			}
+			
+	if(aPath->URI() != bPath->URI())
+			{
+			SetTestStepResult(EFail);
+			}			
+
+	// Test that if a uniqueID of length greater than ContentAccess::KMaxCafUniqueId
+	// is given then it will not treat it as a valid uniqueID
+	HBufC* longUID = HBufC::NewLC(aPath->UniqueId().Length() * 100+aPath->URI().Length()+1);
+	longUID->Des().Append(aPath->URI());
+	longUID->Des().Append(KCafVirtualPathSeparator);
+	// create a very long concatenated URI and UniqueID
+	for ( i = 0; i < 100; ++i )
+		{
+		longUID->Des().Append(aPath->UniqueId());
+		}
+	// create a TVirtualPathPtr with the concatenated URI and UniqueID
+	TVirtualPathPtr longPath(longUID->Des());
+	// check if the expected URI and UniqueID are stored
+	if(longPath.URI()!=longUID->Des())
+		{
+		SetTestStepResult(EFail);
+		}
+	if(longPath.UniqueId()!=KDefaultUniqueID)
+		{
+		SetTestStepResult(EFail);
+		}
+		
+	CleanupStack::PopAndDestroy(longUID);
+	CleanupStack::PopAndDestroy(buf);
+	delete aPath;
+	delete bPath;
+	
+	
+	__UHEAP_MARKEND;
+
+	return TestStepResult();
+	}
+
+
+
+CCafRightsInfoStep::~CCafRightsInfoStep()
+	{
+	}
+
+CCafRightsInfoStep::CCafRightsInfoStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFRightsInfoStep);
+	}
+
+
+TVerdict CCafRightsInfoStep::doTestStepL()
+	{
+	SetTestStepResult(EPass);
+
+	_LIT(KTestUniqueId, "The UniqueId");
+	_LIT(KTestDescription, "A Description");
+
+	INFO_PRINTF1(_L("CRightsInfo test"));
+	
+
+	__UHEAP_MARK;
+	
+	CRightsInfo *aRights= CRightsInfo::NewL(KTestDescription(), KTestUniqueId(), ERightsTypeConsumable, ERightsStatusNone);
+	
+	
+	// Create a buffer
+	CBufFlat* buf = CBufFlat::NewL(50);
+	CleanupStack::PushL(buf);
+	
+	// create write stream
+	RBufWriteStream writeStream(*buf);
+	CleanupClosePushL(writeStream);
+
+	// write the directory to the stream
+	aRights->ExternalizeL(writeStream);
+	CleanupStack::PopAndDestroy(&writeStream);
+
+	// create read stream
+	RBufReadStream readStream(*buf);
+	CleanupClosePushL(readStream);
+
+	// construct a new CSupplierOutputFile from the stream
+	CRightsInfo *bRights= CRightsInfo::NewL(readStream);
+	CleanupStack::PopAndDestroy(&readStream);
+	
+	
+	if(aRights->UniqueId() != bRights->UniqueId())
+			{
+			SetTestStepResult(EFail);
+			}
+			
+	if(aRights->Description() != bRights->Description())
+			{
+			SetTestStepResult(EFail);
+			}			
+
+	if(aRights->RightsType() != bRights->RightsType())
+			{
+			SetTestStepResult(EFail);
+			}			
+
+	if(aRights->RightsStatus() != bRights->RightsStatus())
+			{
+			SetTestStepResult(EFail);
+			}			
+	
+	CleanupStack::PopAndDestroy(buf);
+	delete aRights;
+	delete bRights;
+	
+	__UHEAP_MARKEND;
+
+	return TestStepResult();
+	}
+
+
+
+CCafStreamablePtrArrayStep::~CCafStreamablePtrArrayStep()
+	{
+	}
+
+CCafStreamablePtrArrayStep::CCafStreamablePtrArrayStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFStreamablePtrArrayStep);
+	}
+
+
+TVerdict CCafStreamablePtrArrayStep::doTestStepL()
+	{
+	SetTestStepResult(EPass);
+
+	_LIT(KTestUniqueId, "The UniqueId");
+	_LIT(KTestName, "The Name");
+	_LIT8(KTestMimeType, "The mime type");
+
+	INFO_PRINTF1(_L("StreamablePtrArray test"));
+	
+	__UHEAP_MARK;
+	
+	RStreamablePtrArray <CEmbeddedObject> array;
+	
+	CEmbeddedObject *aObject = CEmbeddedObject::NewL(KTestUniqueId(), KTestName(), KTestMimeType(), EContentObject);
+	CEmbeddedObject *bObject = CEmbeddedObject::NewL(KTestUniqueId(), KTestName(), KTestMimeType(), EContentObject);
+	CEmbeddedObject *cObject = CEmbeddedObject::NewL(KTestUniqueId(), KTestName(), KTestMimeType(), EContentObject);
+	
+	array.AppendL(aObject);
+	array.AppendL(bObject);
+	array.AppendL(cObject);
+	
+
+	// Create a buffer
+	CBufFlat* buf = CBufFlat::NewL(50);
+	CleanupStack::PushL(buf);
+	
+	// create write stream
+	RBufWriteStream writeStream(*buf);
+	CleanupClosePushL(writeStream);
+
+	// write the directory to the stream
+	array.ExternalizeL(writeStream);
+	CleanupStack::PopAndDestroy(&writeStream);
+
+	// create read stream
+	RBufReadStream readStream(*buf);
+	CleanupClosePushL(readStream);
+
+	// construct a new CSupplierOutputFile from the stream
+	RStreamablePtrArray <CEmbeddedObject> bArray;
+	bArray.InternalizeL(readStream);
+	CleanupStack::PopAndDestroy(&readStream);
+	
+	if(array.Count() != bArray.Count())
+			{
+			SetTestStepResult(EFail);
+			}
+			
+	for(TInt i=0; i < array.Count(); i++)
+		{
+		if(array[i]->UniqueId() != bArray[i]->UniqueId())
+			{
+			SetTestStepResult(EFail);
+			}
+			
+		if(array[i]->Name() != bArray[i]->Name())
+			{
+			SetTestStepResult(EFail);
+			}			
+		}
+	
+	CleanupStack::PopAndDestroy(buf);
+	array.Close();
+	bArray.Close();
+	
+	__UHEAP_MARKEND;
+
+	return TestStepResult();
+	}
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
+CCafHelperStep::~CCafHelperStep()
+    {     
+    }     
+  
+CCafHelperStep::CCafHelperStep()
+    {     
+    SetTestStepName(KCAFHelperStep);     
+    }     
+      
+      
+TVerdict CCafHelperStep::doTestStepL()     
+    {     
+    SetTestStepResult(EFail);     
+__UHEAP_MARK;     
+         
+    TInt result;     
+         
+    TInt error;     
+    GetIntFromConfig(ConfigSection(),_L("error"),error);     
+         
+    TInt expectedValue;     
+    GetIntFromConfig(ConfigSection(),_L("expected"),expectedValue);     
+         
+    // fileheader case.     
+    TPtrC uri;     
+    if (!GetStringFromConfig(ConfigSection(), _L("uri"), uri))     
+        {     
+        INFO_PRINTF1(_L("CCafHelper test : HeaderData case."));     
+        result = TestHeaderDataCaseL(error);     
+        }     
+             
+    else     
+        {     
+        TBool isFileName = EFalse;     
+        GetBoolFromConfig(ConfigSection(),_L("flag"),isFileName);     
+             
+        // filehandle case     
+        if(isFileName == EFalse)     
+            {     
+            INFO_PRINTF1(_L("CCafHelper test : FileHandle case."));     
+            result = TestFileHandleCaseL(error, uri);     
+            }     
+             
+        // filename case.     
+        else     
+            {     
+            INFO_PRINTF1(_L("CCafHelper test : FileName case."));     
+         
+            CCAFHelper* helperObj = CCAFHelper::NewL();     
+            CleanupStack::PushL(helperObj);     
+             
+            result = (*helperObj)().HandleCAFErrorL(error, uri);     
+            CleanupStack::PopAndDestroy(helperObj);     
+            }        
+        }     
+         
+    if(result == expectedValue)     
+        {     
+        SetTestStepResult(EPass);     
+        }     
+             
+__UHEAP_MARKEND;     
+             
+    return TestStepResult();     
+    }     
+         
+TInt CCafHelperStep::TestFileHandleCaseL(TInt aError, const TDesC& aFileName)     
+    {     
+__UHEAP_MARK;     
+    RFs fs;     
+    RFile fileHandle;     
+    User::LeaveIfError(fs.Connect());     
+    CleanupClosePushL(fs);     
+    User::LeaveIfError(fileHandle.Open(fs, aFileName, EFileRead));     
+    CleanupClosePushL(fileHandle);     
+         
+    CCAFHelper* helperObj = CCAFHelper::NewL();     
+    CleanupStack::PushL(helperObj);     
+    TInt result = (*helperObj)().HandleCAFErrorL(aError, fileHandle);     
+    CleanupStack::PopAndDestroy(3, &fs);     
+__UHEAP_MARKEND;     
+      
+    return result;     
+    }     
+         
+TInt CCafHelperStep::TestHeaderDataCaseL(TInt aError)     
+    {     
+    _LIT8(KFileHeaderData,"W\0R\0M\0H\0E\0A\0D\0E\0R\0");     
+      
+__UHEAP_MARK;        
+    CCAFHelper* helperObj = CCAFHelper::NewL();     
+    CleanupStack::PushL(helperObj);     
+         
+    TInt result = (*helperObj)().HandleCAFErrorL(aError, KFileHeaderData);     
+    CleanupStack::PopAndDestroy(helperObj);     
+__UHEAP_MARKEND;     
+      
+    return result;     
+    }     
+         
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/CleanupStep.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,110 @@
+/*
+* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <test/testexecutelog.h>
+#include <apmstd.h>
+#include <f32file.h>
+#include <e32debug.h>
+#include <bautils.h>
+
+#include "CleanupStep.h"
+#include "cafserver.h"
+#include "manager.h"
+#include "dirstreamable.h"
+#include "virtualpathptr.h"
+#include "agent.h"
+#include "attributeset.h"
+#include "stringattributeset.h"
+#include "contentIterator.h"
+
+using namespace ContentAccess;
+
+_LIT(KDelDirTCAF,"C:\\tcaf\\");
+_LIT(KDelDirTCAFSub,"C:\\tcaf\\testdata\\");
+_LIT(KDelDirTCAFSub2,"C:\\tcaf\\testdata\\TestAgentPrivateDir\\");
+_LIT(KDelDirTCAFSub3,"C:\\tcaf\\tmtputils\\");
+
+_LIT(KDelDirTSCAF,"C:\\tcaf\\tscaf\\");
+_LIT(KDelDirTSCAFSub,"C:\\tcaf\\tscaf\\data\\");
+
+_LIT(KDelDirRTA,"C:\\rta\\");
+_LIT(KDelDirRTASub,"C:\\rta\\testdata\\");
+
+/* 
+ * This step deletes the test folders and files used in the CAF and RTA tests.
+ */
+
+CCAFTestCleanupStep::~CCAFTestCleanupStep()
+	{
+	}
+
+CCAFTestCleanupStep::CCAFTestCleanupStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFTestCleanupStep);
+	}
+
+TVerdict CCAFTestCleanupStep::doTestStepL()
+	{
+	__UHEAP_MARK;
+	
+	SetTestStepResult(EPass);
+	TInt err;  
+	
+	RFs fs;
+	fs.Connect();
+	CFileMan* fileMan = CFileMan::NewL(fs);
+	CleanupStack::PushL(fileMan);
+
+    // Make the files writeable 
+	MakeFilesWritable(*fileMan, KDelDirTCAFSub2());
+	MakeFilesWritable(*fileMan, KDelDirTCAFSub());
+	MakeFilesWritable(*fileMan, KDelDirTCAFSub3());
+	MakeFilesWritable(*fileMan, KDelDirTSCAFSub());
+	MakeFilesWritable(*fileMan, KDelDirTSCAF());
+	MakeFilesWritable(*fileMan, KDelDirTCAF());
+    
+    // Delete directory using CFileMan
+    err = fileMan->RmDir(KDelDirTCAF);
+    RDebug::Print(_L("CFileMan Delete file %S - err = %d\n"), &KDelDirTCAF, err);
+    if((err!=KErrNone) && (err !=KErrPathNotFound))
+   		SetTestStepResult(EFail);
+
+    // Make the files writeable 
+    MakeFilesWritable(*fileMan, KDelDirRTASub());
+    MakeFilesWritable(*fileMan, KDelDirRTA());
+    
+    // Delete directory using CFileMan
+   	err = fileMan->RmDir(KDelDirRTA); 
+    RDebug::Print(_L("CFileMan Delete file %S - err = %d\n"), &KDelDirRTA, err); 
+    if((err!=KErrNone) && (err !=KErrPathNotFound))
+ 	  	SetTestStepResult(EFail);
+    
+	CleanupStack::PopAndDestroy(fileMan); 
+    fs.Close();
+   			
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+void CCAFTestCleanupStep::MakeFilesWritable(CFileMan& aFileMan, const TDesC& aDir)
+	{
+	TInt err = aFileMan.Attribs(aDir, 0, KEntryAttReadOnly, TTime(0), 0);
+    if((err!=KErrNone) && (err !=KErrPathNotFound))
+   		SetTestStepResult(EFail);
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/CleanupStep.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,49 @@
+/*
+* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+
+#if (!defined __CLEANUP_STEP_H__)
+#define __CLEANUP_STEP_H__
+#include <test/testexecutestepbase.h>
+
+#include "cafstep.h"
+#include <caf/dirstreamable.h>
+#include "contentIterator.h"
+
+// Constants used to name test cases 
+_LIT(KCAFTestCleanupStep,"CAFCleanupStep");
+
+class CCAFServer;
+
+/* 
+* @internalComponent Exposure internally
+*/
+class CCAFTestCleanupStep : public CCAFStep
+	{
+public:
+	CCAFTestCleanupStep(CCAFServer& aParent);
+	~CCAFTestCleanupStep();
+	virtual TVerdict doTestStepL();
+private:
+	void MakeFilesWritable(CFileMan& aFileMan, const TDesC& aDir);
+	CCAFServer& iParent;
+	};
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/Consumerstep.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,2749 @@
+/*
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <test/testexecutelog.h>
+#include <caf/content.h>
+#include <caf/data.h>
+#include <caf/attribute.h>
+#include "cafserver.h"
+#include "bitset.h"
+#include "Consumerstep.h"
+#include "attributeset.h"
+#include "stringattributeset.h"
+#include <caf/virtualpath.h>
+#include <e32hal.h>
+#include <hal.h>
+
+using namespace ContentAccess;
+
+const TInt KCafTestMaxDataTypeLength = 255;
+const TInt KCafTestSecToMS = 1000;
+
+_LIT(KCDataThreadSemaphore, "CData_Thread_Test");
+
+/* 
+ * Step1 compares an agent 'size' call with that obtained by RFile
+ *
+ */
+
+CCAFSizeStep::~CCAFSizeStep()
+	{
+	}
+
+CCAFSizeStep::CCAFSizeStep(CCAFServer& aParent)
+: iParent(aParent)
+	{
+	SetTestStepName(KCAFSizeStep);
+	}
+
+TVerdict CCAFSizeStep::doTestStepL()
+	{
+	__UHEAP_MARK;
+	
+	SetTestStepResult(EInconclusive);
+	
+	INFO_PRINTF1(_L("Basic Open Content Test"));
+	
+	TPtrC uri1;
+	TPtrC uri2;
+	GetStringFromConfig(ConfigSection(),_L("URI1"),uri1);
+	GetStringFromConfig(ConfigSection(),_L("URI2"),uri2);
+
+	INFO_PRINTF2(_L("Creating CContent object with uri: %S"), &uri1);
+	CContent* content = CContent::NewLC(uri1);
+	INFO_PRINTF1(_L("Creating CData object from content"));
+
+	CData* data = content->OpenContentL(EPeek);
+	CleanupStack::PushL(data);
+
+	TInt size = 0;
+	data->DataSizeL(size);
+	INFO_PRINTF2(_L("Size of content from caf CContent::OpenContentL(): %d"),size);
+	CleanupStack::PopAndDestroy(data);
+	CleanupStack::PopAndDestroy(content);
+
+	INFO_PRINTF2(_L("Creating CData object with uri: %S"), &uri1);
+	TInt size1 = 0;
+	
+	TBool withoutIntent;
+	if (!GetBoolFromConfig(ConfigSection(),_L("WITHOUTINTENT"),withoutIntent))
+		{
+		INFO_PRINTF1(_L("With Intent"));
+		data = CData::NewL(TVirtualPathPtr(uri1), EPeek, EContentShareReadOnly);			
+		}
+	else
+		{
+		INFO_PRINTF1(_L("Without Intent"));
+		data = CData::NewL(TVirtualPathPtr(uri1), EContentShareReadOnly);
+		data->SetProperty(EAgentPropertyAgentUI, 0);
+		User::LeaveIfError(data->EvaluateIntent(EPeek));		
+		}
+	
+	CleanupStack::PushL(data);
+	data->DataSizeL(size1);
+	INFO_PRINTF2(_L("Size of content from caf CData::NewL(): %d"),size1);
+	CleanupStack::PopAndDestroy(data);
+
+	INFO_PRINTF2(_L("Opening standard RFile interface with uri: %S"),&uri2);
+	RFile file;
+	User::LeaveIfError(file.Open(iParent.Fs(), uri2, EFileRead));
+
+	TInt size2;
+	file.Size(size2);
+	file.Close();
+
+	INFO_PRINTF2(_L("Size of content from f32: %d"),size2);
+
+	if(size == size2 && size == size1)
+		{
+		SetTestStepResult(EPass);
+		}
+	else
+		{
+		SetTestStepResult(EFail);
+		}
+	
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+/* 
+ * This is the 64bit version of CCAFSizeStep
+ */
+
+CCAFSizeStep64::~CCAFSizeStep64()
+	{
+	}
+
+CCAFSizeStep64::CCAFSizeStep64(CCAFServer& aParent)
+: iParent(aParent)
+	{
+	SetTestStepName(KCAFSizeStep);
+	}
+
+TVerdict CCAFSizeStep64::doTestStepL()
+	{
+	__UHEAP_MARK;
+	
+	SetTestStepResult(EInconclusive);
+	
+	INFO_PRINTF1(_L("Basic Open Content Test"));
+	
+	TPtrC uri1;
+	TPtrC uri2;
+	GetStringFromConfig(ConfigSection(),_L("URI1"),uri1);
+	GetStringFromConfig(ConfigSection(),_L("URI2"),uri2);
+
+	INFO_PRINTF2(_L("Creating CContent object with uri: %S"), &uri1);
+	CContent* content = CContent::NewLC(uri1);
+	INFO_PRINTF1(_L("Creating CData object from content"));
+
+	CData* data = content->OpenContentL(EPeek);
+	CleanupStack::PushL(data);
+
+	TInt64 size = 0;
+	data->DataSize64L(size);
+	INFO_PRINTF2(_L("Size of content from caf CContent::OpenContentL(): %Ld"),size);
+	CleanupStack::PopAndDestroy(data);
+	CleanupStack::PopAndDestroy(content);
+
+	INFO_PRINTF2(_L("Creating CData object with uri: %S"), &uri1);
+	TInt64 size1 = 0;
+	
+	TBool withoutIntent;
+	if (!GetBoolFromConfig(ConfigSection(),_L("WITHOUTINTENT"),withoutIntent))
+		{
+		INFO_PRINTF1(_L("With Intent"));
+		data = CData::NewL(TVirtualPathPtr(uri1), EPeek, EContentShareReadOnly);			
+		}
+	else
+		{
+		INFO_PRINTF1(_L("Without Intent"));
+		data = CData::NewL(TVirtualPathPtr(uri1), EContentShareReadOnly);
+		data->SetProperty(EAgentPropertyAgentUI, 0);
+		User::LeaveIfError(data->EvaluateIntent(EPeek));		
+		}
+	
+	CleanupStack::PushL(data);
+	data->DataSize64L(size1);
+	INFO_PRINTF2(_L("Size of content from caf CData::NewL(): %Ld"),size1);
+	CleanupStack::PopAndDestroy(data);
+
+	INFO_PRINTF2(_L("Opening standard RFile interface with uri: %S"),&uri2);
+	RFile64 file;
+	User::LeaveIfError(file.Open(iParent.Fs(), uri2, EFileRead));
+
+	TInt64 size2;
+	file.Size(size2);
+	file.Close();
+
+	INFO_PRINTF2(_L("Size of content from f32: %Ld"),size2);
+
+	if(size == size2 && size == size1)
+		{
+		SetTestStepResult(EPass);
+		}
+	else
+		{
+		SetTestStepResult(EFail);
+		}
+	
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+#endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+
+/*
+ * This step compares a seek and read using CAF with that using RFile
+ *
+ */
+
+CCAFSeekReadStep::~CCAFSeekReadStep()
+	{
+	}
+
+CCAFSeekReadStep::CCAFSeekReadStep(CCAFServer& aParent)
+: iParent(aParent)
+	{
+	SetTestStepName(KCAFSeekReadStep);
+	}
+
+void CCAFSeekReadStep::StandardCheckReturnValue(TInt aReturnValue)
+	{
+	if (aReturnValue != KErrNone)
+		{
+		INFO_PRINTF2(_L("ERROR Unexpected return value: %d"),aReturnValue);
+		SetTestStepResult(EFail);
+		}	
+	}
+TVerdict CCAFSeekReadStep::doTestStepL()
+	{
+	SetTestStepResult(EInconclusive);
+	
+	TBuf8<2> buf1;
+	TBuf8<2> buf2;
+	TRequestStatus status;
+
+	__UHEAP_MARK;
+	INFO_PRINTF1(_L("Basic Open Content Test"));
+	
+	TPtrC uri1;
+	TPtrC uri2;
+	GetStringFromConfig(ConfigSection(),_L("URI1"),uri1);
+	GetStringFromConfig(ConfigSection(),_L("URI2"),uri2);
+
+	INFO_PRINTF2(_L("Creating content object with uri: %S"), &uri1);
+	CContent* content = CContent::NewLC(uri1);
+
+	INFO_PRINTF1(_L("Creating data object from content"));
+	CData* data = content->OpenContentL(EPeek);
+	
+	// don't need CContent any more
+	CleanupStack::PopAndDestroy(content);
+	CleanupStack::PushL(data);
+
+	// Now, open the same file using RFile
+	RFile file;
+	INFO_PRINTF2(_L("Opening standard RFile interface with uri: %S"),&uri2);
+	User::LeaveIfError(file.Open(iParent.Fs(), uri2, EFileRead | EFileShareReadersOnly));
+	CleanupClosePushL(file);
+
+	TInt size = 0;
+	file.Size(size);
+	INFO_PRINTF2(_L("Size of content from f32: %d"),size);
+	
+	// Seek and read from start using both CAF and RFile
+	TInt pos1 = size/4;
+	data->Seek(ESeekStart, pos1);
+	TInt pos2 = size/4;
+	file.Seek(ESeekStart, pos2);
+	data->Read(buf1);
+	file.Read(buf2);
+	INFO_PRINTF2(_L("Position from ESeekStart test using CData: %d"), pos1);
+	INFO_PRINTF2(_L("Position from ESeekStart test using RFile: %d"), pos2);
+	if (buf1 != buf2 || pos1 != pos2 || pos1 != size/4)
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// set the location within the file then retrieve the current location within the file
+	pos1=0;
+	pos2=0;
+	data->Seek(ESeekCurrent, pos1);
+	file.Seek(ESeekCurrent, pos2);
+
+	INFO_PRINTF2(_L("Current position using CData: %d"), pos1);
+	INFO_PRINTF2(_L("Current position using RFile: %d"), pos2);
+
+	if(pos1 != pos2 || pos1 != (size/4 + buf1.Length()))
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// Seek and read from current using both CAF and RFile
+	pos1 = size/4;
+	data->Seek(ESeekCurrent, pos1);
+	pos2 = size/4;
+	file.Seek(ESeekCurrent, pos2);
+	data->Read(buf1);
+	file.Read(buf2);
+	INFO_PRINTF2(_L("Position from ESeekCurrent test using CData: %d"), pos1);
+	INFO_PRINTF2(_L("Position from ESeekCurrent test using RFile: %d"), pos2);
+	if (buf1 != buf2 || pos1 != pos2 || pos1 != (size/2 + buf1.Length()))
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// Seek and read from end using both CAF and RFile
+	pos1 = -size/4;
+	data->Seek(ESeekEnd, pos1);
+	pos2 = -size/4;
+	file.Seek(ESeekEnd, pos2);
+	data->Read(buf1);
+	file.Read(buf2);
+	INFO_PRINTF2(_L("Position from ESeekEnd test using CData: %d"), pos1);
+	INFO_PRINTF2(_L("Position from ESeekEnd test using RFile: %d"), pos2);
+	if (buf1 != buf2 || pos1 != pos2 || pos1 != (size - size/4))
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// Test other overloaded forms of CData::Read
+
+	// Read only 1 byte using both CAF and RFile
+	pos1 = size/4;
+	data->Seek(ESeekStart, pos1);
+	pos2 = size/4;
+	file.Seek(ESeekStart, pos2);
+	data->Read(buf1,1);
+	file.Read(buf2,1);
+	INFO_PRINTF2(_L("Data Length from  CData::Read(TDesC& ,TInt Length) : %d"), buf1.Length());
+	INFO_PRINTF2(_L("Data Length from  RFile::Read(TDesC& , TInt Length): %d"), buf2.Length());
+	
+	pos1=0;
+	pos2=0;
+	data->Seek(ESeekCurrent, pos1);
+	file.Seek(ESeekCurrent,pos2);
+	if (buf1 != buf2 || pos1 != pos2 || buf1.Length() != buf2.Length())
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// Read asynchronously using both CAF and RFile
+	INFO_PRINTF1(_L("Asynchronous read from CAF and RFile"));
+	pos1 = size/4;
+	data->Seek(ESeekStart, pos1);
+	pos2 = size/4;
+	file.Seek(ESeekStart, pos2);
+	status = KRequestPending;
+	data->Read(buf1,status);
+	User::WaitForRequest(status);
+	status = KRequestPending;
+	file.Read(buf2,status);
+	User::WaitForRequest(status);
+	INFO_PRINTF2(_L("Data length from  CData::Read(TDesC& ,TRequestStatus& aStatus): %d"), buf1.Length());
+	INFO_PRINTF2(_L("Data length from  RFile::Read(TDesC& , TRequestStatus& aStatus): %d"), buf2.Length());
+
+	pos1=0;
+	pos2=0;
+	data->Seek(ESeekCurrent, pos1);
+	file.Seek(ESeekCurrent,pos2);
+	if (buf1 != buf2 || pos1 != pos2 || buf1.Length() != buf2.Length())
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// Read only 1 byte asynchronously using both CAF and RFile
+	INFO_PRINTF1(_L("Asynchronous read of 1 byte from CAF and RFile"));
+	pos1 = size/4;
+	data->Seek(ESeekStart, pos1);
+	pos2 = size/4;
+	file.Seek(ESeekStart, pos2);
+	status = KRequestPending;
+	data->Read(buf1,1,status);
+	User::WaitForRequest(status);
+	status = KRequestPending;
+	file.Read(buf2,1, status);
+	User::WaitForRequest(status);
+	INFO_PRINTF2(_L("Data Length from CData::Read(TDesC& ,TInt Length, TRequestStatus aStatus) : %d"), buf1.Length());
+	INFO_PRINTF2(_L("Data Length from RFile::Read(TDesC& , TInt Length, TRequestStatus aStatus): %d"), buf2.Length());
+
+	pos1=0;
+	pos2=0;
+	data->Seek(ESeekCurrent, pos1);
+	file.Seek(ESeekCurrent,pos2);
+	if (buf1 != buf2 || pos1 != pos2 || buf1.Length() != buf2.Length())
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// read past EOF
+	pos1 = size+1;
+	pos2 = size+1;
+	data->Seek(ESeekStart, pos1);
+	file.Seek(ESeekStart, pos2);
+	data->Read(buf1);
+	file.Read(buf2);
+
+	if(buf1.Length() != 0 || buf1.Length() != 0)
+		{
+		INFO_PRINTF1(_L("ERROR data read past EOF"));
+		SetTestStepResult(EFail);
+		}
+
+	
+	// Read asynchronously supplying an offset using both CAF and RFile
+	TInt err;
+	INFO_PRINTF1(_L("Asynchronous read of 1 byte from CAF and RFile supplying an offset within the file"));
+	pos1 = size/4;
+	pos2 = size/4;
+	status = KRequestPending;
+	err = data->Read(pos1,buf1,1,status);
+	
+	StandardCheckReturnValue(err);
+	
+	User::WaitForRequest(status);
+	status = KRequestPending;
+	file.Read(pos2, buf2,1, status);
+	User::WaitForRequest(status);
+	INFO_PRINTF2(_L("Data Length from CData::Read(TInt aPos, TDesC& , TInt Length, TRequestStatus aStatus) : %d"), buf1.Length());
+	INFO_PRINTF2(_L("Data Length from RFile::Read(TInt aPos, TDesC& , TInt Length, TRequestStatus aStatus): %d"), buf2.Length());
+
+	pos1=0;
+	pos2=0;
+	data->Seek(ESeekCurrent, pos1);
+	file.Seek(ESeekCurrent,pos2);
+	if (buf1 !=buf2 || pos1 != pos2 || buf1.Length() != buf2.Length())
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+		
+	// Check asynchronous cancellation
+	err = 0;
+	INFO_PRINTF1(_L("Asynchronous read cancellation using both CAF and RFile with an offset within the file"));	
+	pos1 = size/4;
+	pos2 = size/4;
+	status = KRequestPending;
+	err = data->Read(pos1,buf1,1,status);
+	StandardCheckReturnValue(err);
+	data->ReadCancel(status);
+	User::WaitForRequest(status);
+	TRequestStatus status2(KRequestPending);
+	file.Read(pos2, buf2,1, status2);	
+	file.ReadCancel();
+	User::WaitForRequest(status2);	
+	INFO_PRINTF3(_L("Data Length from CData::Read(TInt aPos, TDesC& , TInt Length, TRequestStatus aStatus) : %d, status is %d"), buf1.Length(), status.Int());
+	INFO_PRINTF3(_L("Data Length from RFile::Read(TInt aPos, TDesC& , TInt Length, TRequestStatus aStatus): %d, status is %d"), buf2.Length(), status2.Int());	
+	if (status.Int() != status2.Int() || buf1 !=buf2 || pos1 != pos2 || buf1.Length() != buf2.Length())
+		{
+		INFO_PRINTF1(_L("ERROR status, buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+		
+	// read past EOF
+	pos1 = size+1;
+	pos2 = size+1;
+	status = KRequestPending;
+	data->Read(pos1,buf1,1,status);
+	StandardCheckReturnValue(err);
+	User::WaitForRequest(status);
+	status = KRequestPending;
+	file.Read(pos2,buf2,1,status);
+	User::WaitForRequest(status);
+	
+	if(buf1.Length() != 0 || buf1.Length() != 0)
+		{
+		INFO_PRINTF1(_L("ERROR data read past EOF"));
+		SetTestStepResult(EFail);
+		}
+		
+	// read over the length of the buffer
+	INFO_PRINTF1(_L("Asynchronous read of 5 bytes from CAF and RFile supplying an offset within the file"));
+	pos1 = size/4;
+	pos2 = size/4;
+	status = KRequestPending;
+	err = data->Read(pos1,buf1,5,status);
+	StandardCheckReturnValue(err);
+	User::WaitForRequest(status);
+	if(status.Int()!=KErrOverflow)
+		{
+		INFO_PRINTF2(_L("ERROR Unexpected status returned: %d"),status.Int());
+		SetTestStepResult(EFail);
+		}
+	status = KRequestPending;
+	file.Read(pos2, buf2,5, status);
+	User::WaitForRequest(status);
+	INFO_PRINTF2(_L("Data Length from CData::Read(TInt aPos, TDesC& , TInt Length, TRequestStatus aStatus) : %d"), buf1.Length());
+	INFO_PRINTF2(_L("Data Length from RFile::Read(TInt aPos, TDesC& , TInt Length, TRequestStatus aStatus): %d"), buf2.Length());
+
+	if (buf1 !=buf2 ||  buf1.Length() != buf2.Length())
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+	// read negative position this should return KErrArgument, dont supply -ve pos to RFile as will panic test
+	INFO_PRINTF1(_L("Asynchronous read from CAF supplying a negative offset within the file"));
+	pos1 = -1;
+	status = KRequestPending;
+	err = data->Read(pos1,buf1,5,status);
+	if(err!=KErrArgument)
+		{
+		INFO_PRINTF2(_L("ERROR Unexpected return value: %d"),err);
+		SetTestStepResult(EFail);
+		}
+		
+	// Read asynchronously supplying an offset of 0 and a length greater than size of file using both CAF and RFile
+	INFO_PRINTF1(_L("Asynchronous read of length greater than size of file from CAF and RFile supplying an offset of 0 within the file"));
+	TBuf8<256> buf3;
+	TBuf8<256> buf4;
+	pos1 = 0;
+	pos2 = 0;
+	status = KRequestPending;
+	err = data->Read(pos1,buf3,size+1,status);
+	StandardCheckReturnValue(err);
+	User::WaitForRequest(status);
+	status = KRequestPending;
+	file.Read(pos2, buf4,size+1, status);
+	User::WaitForRequest(status);
+	INFO_PRINTF2(_L("Data Length from CData::Read(TInt aPos, TDesC& , TInt Length, TRequestStatus aStatus) : %d"), buf3.Size());
+	INFO_PRINTF2(_L("Data Length from RFile::Read(TInt aPos, TDesC& , TInt Length, TRequestStatus aStatus): %d"), buf4.Size());
+
+	pos1=0;
+	pos2=0;
+	data->Seek(ESeekCurrent, pos1);
+	file.Seek(ESeekCurrent,pos2);
+	if (buf3 != buf4 || pos1 != pos2 || buf3.Length() != buf4.Length() || pos1 != size || 
+									pos2 != size || buf3.Size() != pos1 || buf4.Size() != pos2)
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// Read asynchronously supplying an offset of size/4 and a length greater than size of file using both CAF and RFile
+	INFO_PRINTF1(_L("Asynchronous read of length greater than size of file from CAF and RFile supplying an offset within the file"));
+	pos1 = size/4;
+	pos2 = size/4;
+	status = KRequestPending;
+	err = data->Read(pos1,buf3,size+1,status);
+	StandardCheckReturnValue(err);
+	User::WaitForRequest(status);
+	status = KRequestPending;
+	file.Read(pos2, buf4,size+1, status);
+	User::WaitForRequest(status);
+	INFO_PRINTF2(_L("Data Length from CData::Read(TInt aPos, TDesC& , TInt Length, TRequestStatus aStatus) : %d"), buf3.Size());
+	INFO_PRINTF2(_L("Data Length from RFile::Read(TInt aPos, TDesC& , TInt Length, TRequestStatus aStatus): %d"), buf4.Size());
+
+	pos1=0;
+	pos2=0;
+	data->Seek(ESeekCurrent, pos1);
+	file.Seek(ESeekCurrent,pos2);
+	if (buf3 != buf4 || pos1 != pos2 || buf3.Size() != buf4.Size() || pos1 != size || pos2 != size)
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}	
+		
+	CleanupStack::PopAndDestroy(2, data);
+
+	__UHEAP_MARKEND;
+
+	if (TestStepResult() != EFail)
+		{
+		SetTestStepResult(EPass);
+		}
+
+	return TestStepResult();
+	}
+
+
+#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+/*
+ * This is the 64bit version of CCAFSeekReadStep. 
+*/
+
+CCAFSeekReadStep64::~CCAFSeekReadStep64()
+	{
+	}
+
+CCAFSeekReadStep64::CCAFSeekReadStep64(CCAFServer& aParent)
+: iParent(aParent)
+	{
+	SetTestStepName(KCAFSeekReadStep);
+	}
+
+void CCAFSeekReadStep64::StandardCheckReturnValue(TInt aReturnValue)
+	{
+	if (aReturnValue != KErrNone)
+		{
+		INFO_PRINTF2(_L("ERROR Unexpected return value: %d"),aReturnValue);
+		SetTestStepResult(EFail);
+		}	
+	}
+TVerdict CCAFSeekReadStep64::doTestStepL()
+	{
+	SetTestStepResult(EInconclusive);
+	
+	TBuf8<2> buf1;
+	TBuf8<2> buf2;
+	TRequestStatus status;
+
+	__UHEAP_MARK;
+	INFO_PRINTF1(_L("Basic Open Content Test"));
+	
+	TPtrC uri1;
+	TPtrC uri2;
+	GetStringFromConfig(ConfigSection(),_L("URI1"),uri1);
+	GetStringFromConfig(ConfigSection(),_L("URI2"),uri2);
+
+	INFO_PRINTF2(_L("Creating content object with uri: %S"), &uri1);
+	CContent* content = CContent::NewLC(uri1);
+
+	INFO_PRINTF1(_L("Creating data object from content"));
+	CData* data = content->OpenContentL(EPeek);
+	
+	// don't need CContent any more
+	CleanupStack::PopAndDestroy(content);
+	CleanupStack::PushL(data);
+
+	// Now, open the same file using RFile
+	RFile64 file;
+	INFO_PRINTF2(_L("Opening standard RFile interface with uri: %S"),&uri2);
+	User::LeaveIfError(file.Open(iParent.Fs(), uri2, EFileRead | EFileShareReadersOnly));
+	CleanupClosePushL(file);
+
+	TInt64 size = 0;
+	file.Size(size);
+	INFO_PRINTF2(_L("Size of content from f32: %Ld"),size);
+	
+	// Seek and read from start using both CAF and RFile
+	TInt64 pos1 = size/4;
+	data->Seek64(ESeekStart, pos1);
+	//pos2 needs to be modified to TInt64 when file server supports 64bit
+	TInt64 pos2 = size/4;
+	file.Seek(ESeekStart, pos2);
+	data->Read(buf1);
+	file.Read(buf2);
+	INFO_PRINTF2(_L("Position from ESeekStart test using CData: %Ld"), pos1);
+	INFO_PRINTF2(_L("Position from ESeekStart test using RFile: %Ld"), pos2);
+	if (buf1 != buf2 || pos1 != pos2 || pos1 != size/4)
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// set the location within the file then retrieve the current location within the file
+	pos1=0;
+	pos2=0;
+	data->Seek64(ESeekCurrent, pos1);
+	file.Seek(ESeekCurrent, pos2);
+
+	INFO_PRINTF2(_L("Current position using CData: %Ld"), pos1);
+	INFO_PRINTF2(_L("Current position using RFile: %Ld"), pos2);
+
+	if(pos1 != pos2 || pos1 != (size/4 + buf1.Length()))
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// Seek and read from current using both CAF and RFile
+	pos1 = size/4;
+	data->Seek64(ESeekCurrent, pos1);
+	pos2 = size/4;
+	file.Seek(ESeekCurrent, pos2);
+	data->Read(buf1);
+	file.Read(buf2);
+	INFO_PRINTF2(_L("Position from ESeekCurrent test using CData: %Ld"), pos1);
+	INFO_PRINTF2(_L("Position from ESeekCurrent test using RFile: %Ld"), pos2);
+	if (buf1 != buf2 || pos1 != pos2 || pos1 != (size/2 + buf1.Length()))
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// Seek and read from end using both CAF and RFile
+	pos1 = -size/4;
+	data->Seek64(ESeekEnd, pos1);
+	pos2 = -size/4;
+	file.Seek(ESeekEnd, pos2);
+	data->Read(buf1);
+	file.Read(buf2);
+	INFO_PRINTF2(_L("Position from ESeekEnd test using CData: %Ld"), pos1);
+	INFO_PRINTF2(_L("Position from ESeekEnd test using RFile: %Ld"), pos2);
+	if (buf1 != buf2 || pos1 != pos2 || pos1 != (size - size/4))
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// Test other overloaded forms of CData::Read
+
+	// Read only 1 byte using both CAF and RFile
+	pos1 = size/4;
+	data->Seek64(ESeekStart, pos1);
+	pos2 = size/4;
+	file.Seek(ESeekStart, pos2);
+	data->Read(buf1,1);
+	file.Read(buf2,1);
+	INFO_PRINTF2(_L("Data Length from  CData::Read(TDesC& ,TInt Length) : %d"), buf1.Length());
+	INFO_PRINTF2(_L("Data Length from  RFile::Read(TDesC& , TInt Length): %d"), buf2.Length());
+	
+	pos1=0;
+	pos2=0;
+	data->Seek64(ESeekCurrent, pos1);
+	file.Seek(ESeekCurrent,pos2);
+	if (buf1 != buf2 || pos1 != pos2 || buf1.Length() != buf2.Length())
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// Read asynchronously using both CAF and RFile
+	INFO_PRINTF1(_L("Asynchronous read from CAF and RFile"));
+	pos1 = size/4;
+	data->Seek64(ESeekStart, pos1);
+	pos2 = size/4;
+	file.Seek(ESeekStart, pos2);
+	status = KRequestPending;
+	data->Read(buf1,status);
+	User::WaitForRequest(status);
+	status = KRequestPending;
+	file.Read(buf2,status);
+	User::WaitForRequest(status);
+	INFO_PRINTF2(_L("Data length from  CData::Read(TDesC& ,TRequestStatus& aStatus): %d"), buf1.Length());
+	INFO_PRINTF2(_L("Data length from  RFile::Read(TDesC& , TRequestStatus& aStatus): %d"), buf2.Length());
+
+	pos1=0;
+	pos2=0;
+	data->Seek64(ESeekCurrent, pos1);
+	file.Seek(ESeekCurrent,pos2);
+	if (buf1 != buf2 || pos1 != pos2 || buf1.Length() != buf2.Length())
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// Read only 1 byte asynchronously using both CAF and RFile
+	INFO_PRINTF1(_L("Asynchronous read of 1 byte from CAF and RFile"));
+	pos1 = size/4;
+	data->Seek64(ESeekStart, pos1);
+	pos2 = size/4;
+	file.Seek(ESeekStart, pos2);
+	status = KRequestPending;
+	data->Read(buf1,1,status);
+	User::WaitForRequest(status);
+	status = KRequestPending;
+	file.Read(buf2,1, status);
+	User::WaitForRequest(status);
+	INFO_PRINTF2(_L("Data Length from CData::Read(TDesC& ,TInt Length, TRequestStatus aStatus) : %d"), buf1.Length());
+	INFO_PRINTF2(_L("Data Length from RFile::Read(TDesC& , TInt Length, TRequestStatus aStatus): %d"), buf2.Length());
+
+	pos1=0;
+	pos2=0;
+	data->Seek64(ESeekCurrent, pos1);
+	file.Seek(ESeekCurrent,pos2);
+	if (buf1 != buf2 || pos1 != pos2 || buf1.Length() != buf2.Length())
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// read past EOF
+	pos1 = size+1;
+	pos2 = size+1;
+	data->Seek64(ESeekStart, pos1);
+	file.Seek(ESeekStart, pos2);
+	data->Read(buf1);
+	file.Read(buf2);
+
+	if(buf1.Length() != 0 || buf1.Length() != 0)
+		{
+		INFO_PRINTF1(_L("ERROR data read past EOF"));
+		SetTestStepResult(EFail);
+		}
+
+	
+	// Read asynchronously supplying an offset using both CAF and RFile
+	TInt err;
+	INFO_PRINTF1(_L("Asynchronous read of 1 byte from CAF and RFile supplying an offset within the file"));
+	pos1 = size/4;
+	pos2 = size/4;
+	status = KRequestPending;
+	err = data->Read(pos1,buf1,1,status);
+	
+	StandardCheckReturnValue(err);
+	
+	User::WaitForRequest(status);
+	status = KRequestPending;
+	file.Read(pos2, buf2,1, status);
+	User::WaitForRequest(status);
+	INFO_PRINTF2(_L("Data Length from CData::Read(TInt64 aPos, TDesC& , TInt Length, TRequestStatus aStatus) : %d"), buf1.Length());
+	INFO_PRINTF2(_L("Data Length from RFile::Read(TInt64 aPos, TDesC& , TInt Length, TRequestStatus aStatus): %d"), buf2.Length());
+
+	pos1=0;
+	pos2=0;
+	data->Seek64(ESeekCurrent, pos1);
+	file.Seek(ESeekCurrent,pos2);
+	if (buf1 !=buf2 || pos1 != pos2 || buf1.Length() != buf2.Length())
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+		
+	// Check asynchronous cancellation
+	err = 0;
+	INFO_PRINTF1(_L("Asynchronous read cancellation using both CAF and RFile with an offset within the file"));	
+	pos1 = size/4;
+	pos2 = size/4;
+	status = KRequestPending;
+	err = data->Read(pos1,buf1,1,status);
+	StandardCheckReturnValue(err);
+	data->ReadCancel(status);
+	User::WaitForRequest(status);
+	TRequestStatus status2(KRequestPending);
+	file.Read(pos2, buf2,1, status2);	
+	file.ReadCancel();
+	User::WaitForRequest(status2);	
+	INFO_PRINTF3(_L("Data Length from CData::Read(TInt64 aPos, TDesC& , TInt Length, TRequestStatus aStatus) : %d, status is %d"), buf1.Length(), status.Int());
+	INFO_PRINTF3(_L("Data Length from RFile::Read(TInt64 aPos, TDesC& , TInt Length, TRequestStatus aStatus): %d, status is %d"), buf2.Length(), status2.Int());	
+	if (status.Int() != status2.Int() || buf1 !=buf2 || pos1 != pos2 || buf1.Length() != buf2.Length())
+		{
+		INFO_PRINTF1(_L("ERROR status, buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+		
+	// read past EOF
+	pos1 = size+1;
+	pos2 = size+1;
+	status = KRequestPending;
+	data->Read(pos1,buf1,1,status);
+	StandardCheckReturnValue(err);
+	User::WaitForRequest(status);
+	status = KRequestPending;
+	file.Read(pos2,buf2,1,status);
+	User::WaitForRequest(status);
+	
+	if(buf1.Length() != 0 || buf1.Length() != 0)
+		{
+		INFO_PRINTF1(_L("ERROR data read past EOF"));
+		SetTestStepResult(EFail);
+		}
+		
+	// read over the length of the buffer
+	INFO_PRINTF1(_L("Asynchronous read of 5 bytes from CAF and RFile supplying an offset within the file"));
+	pos1 = size/4;
+	pos2 = size/4;
+	status = KRequestPending;
+	err = data->Read(pos1,buf1,5,status);
+	StandardCheckReturnValue(err);
+	User::WaitForRequest(status);
+	if(status.Int()!=KErrOverflow)
+		{
+		INFO_PRINTF2(_L("ERROR Unexpected status returned: %d"),status.Int());
+		SetTestStepResult(EFail);
+		}
+	status = KRequestPending;
+	file.Read(pos2, buf2,5, status);
+	User::WaitForRequest(status);
+	INFO_PRINTF2(_L("Data Length from CData::Read(TInt64 aPos, TDesC& , TInt Length, TRequestStatus aStatus) : %d"), buf1.Length());
+	INFO_PRINTF2(_L("Data Length from RFile::Read(TInt64 aPos, TDesC& , TInt Length, TRequestStatus aStatus): %d"), buf2.Length());
+
+	if (buf1 !=buf2 ||  buf1.Length() != buf2.Length())
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+	// read negative position this should return KErrArgument, dont supply -ve pos to RFile as will panic test
+	INFO_PRINTF1(_L("Asynchronous read from CAF supplying a negative offset within the file"));
+	pos1 = -1;
+	status = KRequestPending;
+	err = data->Read(pos1,buf1,5,status);
+	if(err!=KErrArgument)
+		{
+		INFO_PRINTF2(_L("ERROR Unexpected return value: %d"),err);
+		SetTestStepResult(EFail);
+		}
+		
+	// Read asynchronously supplying an offset of 0 and a length greater than size of file using both CAF and RFile
+	INFO_PRINTF1(_L("Asynchronous read of length greater than size of file from CAF and RFile supplying an offset of 0 within the file"));
+	TBuf8<256> buf3;
+	TBuf8<256> buf4;
+	pos1 = 0;
+	pos2 = 0;
+	status = KRequestPending;
+	err = data->Read(pos1,buf3,size+1,status);
+	StandardCheckReturnValue(err);
+	User::WaitForRequest(status);
+	status = KRequestPending;
+	file.Read(pos2, buf4,size+1, status);
+	User::WaitForRequest(status);
+	INFO_PRINTF2(_L("Data Length from CData::Read(TInt64 aPos, TDesC& , TInt Length, TRequestStatus aStatus) : %d"), buf3.Size());
+	INFO_PRINTF2(_L("Data Length from RFile::Read(TInt64 aPos, TDesC& , TInt Length, TRequestStatus aStatus): %d"), buf4.Size());
+
+	pos1=0;
+	pos2=0;
+	data->Seek64(ESeekCurrent, pos1);
+	file.Seek(ESeekCurrent,pos2);
+	if (buf3 != buf4 || pos1 != pos2 || buf3.Length() != buf4.Length() || pos1 != size || 
+									pos2 != size || buf3.Size() != pos1 || buf4.Size() != pos2)
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// Read asynchronously supplying an offset of size/4 and a length greater than size of file using both CAF and RFile
+	INFO_PRINTF1(_L("Asynchronous read of length greater than size of file from CAF and RFile supplying an offset within the file"));
+	pos1 = size/4;
+	pos2 = size/4;
+	status = KRequestPending;
+	err = data->Read(pos1,buf3,size+1,status);
+	StandardCheckReturnValue(err);
+	User::WaitForRequest(status);
+	status = KRequestPending;
+	file.Read(pos2, buf4,size+1, status);
+	User::WaitForRequest(status);
+	INFO_PRINTF2(_L("Data Length from CData::Read(TInt64 aPos, TDesC& , TInt Length, TRequestStatus aStatus) : %d"), buf3.Size());
+	INFO_PRINTF2(_L("Data Length from RFile::Read(TInt64 aPos, TDesC& , TInt Length, TRequestStatus aStatus): %d"), buf4.Size());
+
+	pos1=0;
+	pos2=0;
+	data->Seek64(ESeekCurrent, pos1);
+	file.Seek(ESeekCurrent,pos2);
+	if (buf3 != buf4 || pos1 != pos2 || buf3.Size() != buf4.Size() || pos1 != size || pos2 != size)
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}	
+	
+	CleanupStack::PopAndDestroy(2, data);
+	
+	__UHEAP_MARKEND;
+	
+	if (TestStepResult() != EFail)
+		{
+		SetTestStepResult(EPass);
+		}
+
+	return TestStepResult();
+	}
+
+#endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+/*
+ * This step retrieves the attributes of a file using the CAF framework
+ *
+ */
+
+CCAFAttributesStep::~CCAFAttributesStep()
+	{
+	}
+
+CCAFAttributesStep::CCAFAttributesStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFAttributesStep);
+	}
+
+
+TVerdict CCAFAttributesStep::doTestStepL()
+	{
+	CContent *content;
+	CAttribute *attrs; 
+	TPtrC fileName;
+	TBool Protected;
+	TBool Forwardable;
+	
+	
+	TBool Value;
+
+	SetTestStepResult(EFail);
+
+	GetStringFromConfig(ConfigSection(),_L("filename"),fileName);
+	GetBoolFromConfig(ConfigSection(),_L("Protected"),Protected);
+	GetBoolFromConfig(ConfigSection(),_L("Forwardable"),Forwardable);
+
+
+	INFO_PRINTF2(_L("Check attributes of file: %S"), &fileName);	
+
+	__UHEAP_MARK;
+
+	// Open a file and retrieve the attributes
+	content = CContent::NewLC(fileName);
+	attrs = content->NewAttributeL(ETrue);
+	CleanupStack::PushL(attrs);
+
+	// Assume all the attributes are what we expect them to be
+	SetTestStepResult(EPass);
+
+	Value = attrs->ResponseSet().IsSet(EIsProtected);
+	if(Value != Protected)
+		{
+		SetTestStepResult(EFail);
+		Protected ? INFO_PRINTF1(_L("File is Protected")) : INFO_PRINTF1(_L("File is not Protected"));
+		}
+
+	Value = attrs->ResponseSet().IsSet(EIsForwardable);
+	if(Value != Forwardable)
+		{
+		SetTestStepResult(EFail);
+		Forwardable ? INFO_PRINTF1(_L("File is Forwardable")) : INFO_PRINTF1(_L("File is not Forwardable"));
+		}
+
+	CleanupStack::PopAndDestroy(2, content); 
+
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+/*
+ * This step retrieves the string attributes of a file using the CAF framework
+ *
+ */
+
+CCAFStringAttributesStep::~CCAFStringAttributesStep()
+	{
+	}
+
+CCAFStringAttributesStep::CCAFStringAttributesStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFStringAttributesStep);
+	}
+
+
+TVerdict CCAFStringAttributesStep::doTestStepL()
+	{
+	TInt expectedResult;
+	TInt attribute;
+	TPtrC expectedValue;
+	TBuf <256> value; //this will be used to test KErrOverFlow when transactionid is 257char long.
+	TInt result = KErrNone;
+	TPtrC uri;
+	TPtrC uniqueId;
+
+	SetTestStepResult(EPass);
+
+	GetIntFromConfig(ConfigSection(),_L("stringattribute"),attribute);
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetStringFromConfig(ConfigSection(),_L("uniqueid"),uniqueId);
+	GetStringFromConfig(ConfigSection(),_L("value"),expectedValue);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	__UHEAP_MARK;
+	CContent *content = CContent::NewLC(uri);
+	CData *data = content->OpenContentL(EPeek, uniqueId);
+	result = data->GetStringAttribute(attribute, value);
+	delete data;
+	if(result != expectedResult)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF3(_L("CData::GetStringAttribute() Expected result: %d, actual result: %d"), expectedResult, result);
+		}
+	if(value != expectedValue)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF3(_L("CData::GetStringAttribute() Expected value: %S, actual result: %S"), &expectedValue, &value);
+		}
+
+	CleanupStack::PopAndDestroy(content);		
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+
+	}
+
+
+
+
+/* 
+ * Step reads from a CData from multiple threads
+ *
+ */
+
+CCAFMultiThreadCDataStep::~CCAFMultiThreadCDataStep()
+	{
+	}
+
+CCAFMultiThreadCDataStep::CCAFMultiThreadCDataStep(CCAFServer& aParent)
+: iParent(aParent)
+	{
+	SetTestStepName(KCAFMultiThreadCDataStep);
+	}
+
+TVerdict CCAFMultiThreadCDataStep::doTestStepL()
+	{
+	TBuf8<2> buf;
+
+	__UHEAP_MARK;
+	_LIT(KCDataThread,"CData_Thread");
+
+	SetTestStepResult(EInconclusive);
+	
+	INFO_PRINTF1(_L("Multi Thread CData Test"));
+	
+	TPtrC uri;
+	GetStringFromConfig(ConfigSection(),_L("URI"),uri);
+
+	INFO_PRINTF1(_L("Creating data object from content"));
+	CContent* content = CContent::NewLC(uri);
+	CData* data = content->OpenContentL(EPeek);
+	CleanupStack::PushL(data);
+
+	TInt size, pos;
+
+	// Create a mutex for communication between our thread and the new thread
+	RSemaphore threadSemaphore;
+	threadSemaphore.CreateGlobal(KCDataThreadSemaphore(), 1, EOwnerProcess);
+	threadSemaphore.Wait(); 
+
+	// fire up a new thread, stack size and heap size 8k, might need to be bigger in the future 
+	RThread readerThread;
+	User::LeaveIfError(readerThread.Create(KCDataThread(),CCAFMultiThreadCDataStep::ReaderThreadEntry,8192, KMinHeapSize, 8192, (TAny *) data, EOwnerProcess));
+	
+	// request notification of thread completion
+	TRequestStatus stat;
+	readerThread.Logon(stat);
+	readerThread.Resume();	
+	
+	data->DataSizeL(size);
+	pos = size/2;
+	data->Seek(ESeekStart,pos);
+	data->Read(buf);
+
+	threadSemaphore.Wait(); // wait for thread function to run and signal the semaphore
+	threadSemaphore.Signal(); // finished with semaphore
+	threadSemaphore.Close(); // so close
+
+	User::WaitForRequest(stat); // wait for thread to finish
+	TInt error=(readerThread.ExitType()==EExitPanic) ? KErrGeneral : stat.Int();
+	User::LeaveIfError(error);
+	readerThread.Close();  // close the thread
+	
+	CleanupStack::PopAndDestroy(data);
+	CleanupStack::PopAndDestroy(content);
+
+	__UHEAP_MARKEND;
+	
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TInt CCAFMultiThreadCDataStep::ReaderThreadEntry(TAny *aPtr)
+	{
+	TBuf8 <2> buf;
+	CData *data = reinterpret_cast <CData *> (aPtr);
+
+	// create a trap handler
+	CTrapCleanup* cleanup = CTrapCleanup::New();
+
+	RSemaphore threadSemaphore;
+	threadSemaphore.OpenGlobal(KCDataThreadSemaphore() ,EOwnerProcess);
+
+	data->Read(buf);
+	threadSemaphore.Signal(); // allow original thread to continue
+	threadSemaphore.Close();
+	
+	delete cleanup;
+	return KErrNone;
+	}
+
+
+/* 
+ * Obtains the mime type from a CData
+ *
+ */
+
+CCAFMimeTypeCDataStep::~CCAFMimeTypeCDataStep()
+	{
+	}
+
+CCAFMimeTypeCDataStep::CCAFMimeTypeCDataStep(CCAFServer& aParent)
+: iParent(aParent)
+	{
+	SetTestStepName(KCAFMimeTypeCDataStep);
+	}
+
+TVerdict CCAFMimeTypeCDataStep::doTestStepL()
+	{
+	__UHEAP_MARK;
+
+
+	SetTestStepResult(EFail);
+	
+	INFO_PRINTF1(_L("CData MimeType Test"));
+	
+	TPtrC uri;
+	TPtrC expectedMimeType;
+	TBool mimeTypeKnown=EFalse;
+
+	// Load INI parameters
+	GetStringFromConfig(ConfigSection(),_L("URI"),uri);
+	GetStringFromConfig(ConfigSection(),_L("ContentMimeType"),expectedMimeType);
+	GetBoolFromConfig(ConfigSection(),_L("Known"),mimeTypeKnown);
+
+	// convert to Des8
+	HBufC8 *expected = ConvertDes16toHBufC8LC(expectedMimeType);
+
+	// Create CContent and CData
+	INFO_PRINTF1(_L("Creating data object from content"));
+	CContent* content = CContent::NewLC(uri);
+	CData* data = content->OpenContentL(EPeek);
+	CleanupStack::PushL(data);
+
+	// Get mime type from CData
+	INFO_PRINTF1(_L("Checking mime type"));
+	HBufC8 *buffer = HBufC8::NewLC(KCafTestMaxDataTypeLength);
+	TPtr8 ptr = buffer->Des();
+	TBool r = data->GetMimeTypeL(ptr);
+
+	// check if result matches expected result
+	if(r == mimeTypeKnown && *buffer == *expected)
+		{
+		SetTestStepResult(EPass);
+		}
+
+	CleanupStack::PopAndDestroy(4,expected);
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+	/*
+ * This step tests file sharing modes
+ *
+ */
+
+CCAFShareModeStep::~CCAFShareModeStep()
+	{
+	}
+
+CCAFShareModeStep::CCAFShareModeStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFShareModeStep);
+	}
+
+
+TVerdict CCAFShareModeStep::doTestStepL()
+	{
+	TVerdict verdict = EFail;
+	TRAPD(err, verdict = doShareModeStepL());
+	if(err != KErrNone)
+		{
+		if(err != KErrInUse)
+			{
+			User::Leave(err);
+			}
+		else
+			{
+			User::Leave(KErrGeneral);
+			}
+		}
+	return verdict;	
+	}
+
+TVerdict CCAFShareModeStep::doShareModeStepL()	
+	{
+	CAttribute *attr = NULL;
+	RFile file;	
+	RFs fs;
+	TPtrC fileName;
+	TInt err = 0;
+	
+	SetTestStepResult(EPass);
+
+	GetStringFromConfig(ConfigSection(),_L("FileName"),fileName);
+
+	// This function works if I step through everything but fails
+	// when run or step over the TRAP
+//	User::Leave(KErrGeneral);
+	
+
+	__UHEAP_MARK;
+	
+	INFO_PRINTF2(_L("Creating Content object for file: %S"), &fileName);	
+	CContent* content= CContent::NewL(fileName);	
+	CData *data = NULL;
+	
+	fs.Connect();
+	CleanupClosePushL(fs);
+
+
+	INFO_PRINTF1(_L("Testing EContentShareReadOnly"));	
+	User::LeaveIfError(file.Open(fs, fileName, EFileShareReadersOnly | EFileRead | EFileStream));
+	CleanupClosePushL(file);
+	data = content->OpenContentL(EPeek);
+	delete data;
+	data = NULL;
+	data = content->OpenContentL(EPeek, EContentShareReadOnly);
+	delete data;
+	data = NULL;
+	TRAP(err, data = content->OpenContentL(EPeek, EContentShareReadWrite));
+	delete data;
+	data = NULL;
+	
+	// We can open read-write because CAF never writes.
+	
+	if(err != KErrNone)
+		{
+		SetTestStepResult(EFail);
+		}
+	
+	// However, exclusive mode should be impossible.
+	
+	TRAP(err, data = content->OpenContentL(EPeek, EContentShareExclusive));
+	delete data;
+	data = NULL;
+	if(err != KErrInUse)
+		{
+		SetTestStepResult(EFail);
+		}
+	CleanupStack::PopAndDestroy(&file); 
+	delete content;
+
+	
+	INFO_PRINTF1(_L("Testing EContentShareReadWrite"));	
+	content = CContent::NewL(fileName, EContentShareReadWrite);
+	User::LeaveIfError(file.Open(fs, fileName, EFileShareReadersOrWriters | EFileRead | EFileStream));
+	CleanupClosePushL(file);
+	data = content->OpenContentL(EPeek, EContentShareReadWrite);
+	delete data;
+	data = NULL;
+	
+	// We should be able to open read-only
+	
+	TRAP(err, data = content->OpenContentL(EPeek, EContentShareReadOnly));
+	delete data;
+	data = NULL;
+	if(err != KErrNone)
+		{
+		SetTestStepResult(EFail);
+		}
+		
+	// but not share exclusive
+		
+	TRAP(err, data = content->OpenContentL(EPeek, EContentShareExclusive));
+	delete data;
+	data = NULL;
+	if(err != KErrInUse)
+		{
+		SetTestStepResult(EFail);
+		}
+	CleanupStack::PopAndDestroy(&file);
+	
+	
+	// Reopen the file with write attributes, and make sure ReadOnly becomes impossible 
+	User::LeaveIfError(file.Open(fs, fileName, EFileShareReadersOrWriters | EFileRead | EFileWrite | EFileStream));
+	CleanupClosePushL(file);
+	
+	TRAP(err, data = content->OpenContentL(EPeek, EContentShareReadOnly));
+	delete data;
+	data = NULL;
+	if(err != KErrInUse)
+		{
+		SetTestStepResult(EFail);
+		}
+	
+	CleanupStack::PopAndDestroy(&file);
+	delete content;
+	
+	
+	INFO_PRINTF1(_L("Testing EContentShareExclusive"));	
+	User::LeaveIfError(file.Open(fs, fileName, EFileShareExclusive | EFileRead | EFileStream));
+	CleanupClosePushL(file);
+	TRAP(err, data = CData::NewL(TVirtualPathPtr(fileName), EPeek, EContentShareReadOnly));
+	delete data;
+	data = NULL;
+	if(err != KErrInUse)
+		{
+		SetTestStepResult(EFail);
+		}
+	TRAP(err, data = CData::NewL(TVirtualPathPtr(fileName), EPeek, EContentShareReadWrite));
+	delete data;
+	data = NULL;
+	if(err != KErrInUse)
+		{
+		SetTestStepResult(EFail);
+		}
+	TRAP(err, data = CData::NewL(TVirtualPathPtr(fileName), EPeek, EContentShareExclusive));
+	delete data;
+	data = NULL;
+	if(err != KErrInUse)
+		{
+		SetTestStepResult(EFail);
+		}
+	CleanupStack::PopAndDestroy(&file); 
+	
+	INFO_PRINTF1(_L("Testing CContent::NewAttributeL"));	
+	content = CContent::NewL(fileName, EContentShareReadWrite);
+	User::LeaveIfError(file.Open(fs, fileName, EFileShareAny | EFileRead | EFileStream));
+	CleanupClosePushL(file);
+	attr = content->NewAttributeL(ETrue,EContentShareReadWrite);
+	delete attr;
+	attr = NULL;
+	TRAP(err, attr = content->NewAttributeL(ETrue));
+	delete attr;
+	attr = NULL;
+	if(err != KErrInUse)
+		{
+		SetTestStepResult(EFail);
+		}
+	CleanupStack::PopAndDestroy(2, &fs); // fs, file
+	delete content;
+
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+CCAFHandleSizeStep::CCAFHandleSizeStep(CCAFServer& aParent)
+:iParent(aParent)
+{
+	SetTestStepName(KCAFHandleSizeStep);	
+}
+
+CCAFHandleSizeStep::~CCAFHandleSizeStep()
+{
+	
+	
+}	
+
+TVerdict CCAFHandleSizeStep::doTestStepL()
+	{
+	__UHEAP_MARK;
+	
+	SetTestStepResult(EInconclusive);
+	
+	INFO_PRINTF1(_L("Basic Open Content Test"));
+	
+	TPtrC uri1;
+	TPtrC uri2;
+	GetStringFromConfig(ConfigSection(),_L("URI1"),uri1);
+	GetStringFromConfig(ConfigSection(),_L("URI2"),uri2);
+
+	INFO_PRINTF2(_L("Creating content object with uri: %S"), &uri1);
+	
+	RFile file1;
+	User::LeaveIfError(file1.Open(iParent.Fs(), uri1, EFileRead));	
+	CleanupClosePushL(file1);	
+		
+	CContent* content = CContent::NewLC(file1);
+
+	INFO_PRINTF1(_L("Creating data object from content"));
+
+	CData* data = content->OpenContentL(EPeek);
+	CleanupStack::PushL(data);
+
+	TInt size = 0;
+	data->DataSizeL(size);
+	INFO_PRINTF2(_L("Size of content from caf: %d"),size);
+	CleanupStack::PopAndDestroy(data);
+	CleanupStack::PopAndDestroy(content);
+	
+	TInt pos = 0;
+	file1.Seek(ESeekStart, pos);
+
+	INFO_PRINTF2(_L("Creating CData object with uri: %S"), &uri1);
+	TInt size1 = 0;
+	data = CData::NewL(file1, KDefaultContentObject(), EPeek);
+	CleanupStack::PushL(data);
+	data->DataSizeL(size1);
+	INFO_PRINTF2(_L("Size of content from caf CData::NewL(): %d"),size1);
+	CleanupStack::PopAndDestroy(data);
+	CleanupStack::PopAndDestroy(&file1);
+	
+	INFO_PRINTF2(_L("Opening standard RFile interface with uri: %S"),&uri2);
+	RFile file2;
+	User::LeaveIfError(file2.Open(iParent.Fs(), uri2, EFileRead));
+	
+	TInt size2;
+	file2.Size(size2);
+	file2.Close();
+
+	INFO_PRINTF2(_L("Size of content from f32: %d"),size2);
+
+	if(size == size2 && size1 == size2)
+		{
+		SetTestStepResult(EPass);
+		}
+	else
+		{
+		SetTestStepResult(EFail);
+		}
+	
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+CCAFHandleSeekReadStep::~CCAFHandleSeekReadStep()
+{
+	
+}
+
+CCAFHandleSeekReadStep::CCAFHandleSeekReadStep(CCAFServer& aParent)
+: iParent(aParent)
+	{
+	SetTestStepName(KCAFHandleSeekReadStep);
+	}
+	
+TVerdict CCAFHandleSeekReadStep::doTestStepL()
+	{
+	SetTestStepResult(EInconclusive);
+	
+	TBuf8<2> buf1;
+	TBuf8<2> buf2;
+	TRequestStatus status;
+
+	__UHEAP_MARK;
+	INFO_PRINTF1(_L("Basic Open Content Test"));
+	
+	TPtrC uri1;
+	TPtrC uri2;
+	GetStringFromConfig(ConfigSection(),_L("URI1"),uri1);
+	GetStringFromConfig(ConfigSection(),_L("URI2"),uri2);
+
+	INFO_PRINTF2(_L("Creating content object with uri: %S"), &uri1);
+	RFile file1;
+	User::LeaveIfError(file1.Open(iParent.Fs(), uri1, EFileRead | EFileShareReadersOnly));	
+	CleanupClosePushL(file1);		
+	CContent* content = CContent::NewLC(file1);
+
+	INFO_PRINTF1(_L("Creating data object from content"));
+	CData* data = content->OpenContentL(EPeek);
+	CleanupStack::PushL(data);
+
+	// Now, open the same file using RFile
+	RFile file2;
+	INFO_PRINTF2(_L("Opening standard RFile interface with uri: %S"),&uri2);
+	//User::LeaveIfError(file2.Open(iParent.Fs(), uri2, EFileRead | EFileShareReadersOnly));
+	TInt res = file2.Open(iParent.Fs(), uri2, EFileRead | EFileShareReadersOnly);
+	CleanupClosePushL(file2);
+
+	TInt size = 0;
+	file2.Size(size);
+	INFO_PRINTF2(_L("Size of content from f32: %d"),size);
+	
+	// Seek and read from start using both CAF and RFile
+	TInt pos1 = size/4;
+	data->Seek(ESeekStart, pos1);
+	TInt pos2 = size/4;
+	file2.Seek(ESeekStart, pos2);
+	data->Read(buf1);
+	file2.Read(buf2);
+	INFO_PRINTF2(_L("Position from ESeekStart test using CData: %d"), pos1);
+	INFO_PRINTF2(_L("Position from ESeekStart test using RFile: %d"), pos2);
+	if (buf1 != buf2 || pos1 != pos2 || pos1 != size/4)
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// set the location within the file then retrieve the current location within the file
+	pos1=0;
+	pos2=0;
+	data->Seek(ESeekCurrent, pos1);
+	file2.Seek(ESeekCurrent, pos2);
+
+	INFO_PRINTF2(_L("Current position using CData: %d"), pos1);
+	INFO_PRINTF2(_L("Current position using RFile: %d"), pos2);
+
+	if(pos1 != pos2 || pos1 != (size/4 + buf1.Length()))
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// Seek and read from current using both CAF and RFile
+	pos1 = size/4;
+	data->Seek(ESeekCurrent, pos1);
+	pos2 = size/4;
+	file2.Seek(ESeekCurrent, pos2);
+	data->Read(buf1);
+	file2.Read(buf2);
+	INFO_PRINTF2(_L("Position from ESeekCurrent test using CData: %d"), pos1);
+	INFO_PRINTF2(_L("Position from ESeekCurrent test using RFile: %d"), pos2);
+	if (buf1 != buf2 || pos1 != pos2 || pos1 != (size/2 + buf1.Length()))
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// Seek and read from end using both CAF and RFile
+	pos1 = -size/4;
+	data->Seek(ESeekEnd, pos1);
+	pos2 = -size/4;
+	file2.Seek(ESeekEnd, pos2);
+	data->Read(buf1);
+	file2.Read(buf2);
+	INFO_PRINTF2(_L("Position from ESeekEnd test using CData: %d"), pos1);
+	INFO_PRINTF2(_L("Position from ESeekEnd test using RFile: %d"), pos2);
+	if (buf1 != buf2 || pos1 != pos2 || pos1 != (size - size/4))
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// Test other overloaded forms of CData::Read
+
+	// Read only 1 byte using both CAF and RFile
+	pos1 = size/4;
+	data->Seek(ESeekStart, pos1);
+	pos2 = size/4;
+	file2.Seek(ESeekStart, pos2);
+	data->Read(buf1,1);
+	file2.Read(buf2,1);
+	INFO_PRINTF2(_L("Data Length from  CData::Read(TDesC& ,TInt Length) : %d"), buf1.Length());
+	INFO_PRINTF2(_L("Data Length from  RFile::Read(TDesC& , TInt Length): %d"), buf2.Length());
+	
+	pos1=0;
+	pos2=0;
+	data->Seek(ESeekCurrent, pos1);
+	file2.Seek(ESeekCurrent,pos2);
+	if (buf1 != buf2 || pos1 != pos2 || buf1.Length() != buf2.Length())
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// Read asynchronously using both CAF and RFile
+	INFO_PRINTF1(_L("Asynchronous read from CAF and RFile"));
+	pos1 = size/4;
+	data->Seek(ESeekStart, pos1);
+	pos2 = size/4;
+	file2.Seek(ESeekStart, pos2);
+	status = KRequestPending;
+	data->Read(buf1,status);
+	User::WaitForRequest(status);
+	status = KRequestPending;
+	file2.Read(buf2,status);
+	User::WaitForRequest(status);
+	INFO_PRINTF2(_L("Data length from  CData::Read(TDesC& ,TRequestStatus& aStatus): %d"), buf1.Length());
+	INFO_PRINTF2(_L("Data length from  RFile::Read(TDesC& , TRequestStatus& aStatus): %d"), buf2.Length());
+
+	pos1=0;
+	pos2=0;
+	data->Seek(ESeekCurrent, pos1);
+	file2.Seek(ESeekCurrent,pos2);
+	if (buf1 != buf2 || pos1 != pos2 || buf1.Length() != buf2.Length())
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// Read only 1 byte asynchronously using both CAF and RFile
+	INFO_PRINTF1(_L("Asynchronous read of 1 byte from CAF and RFile"));
+	pos1 = size/4;
+	data->Seek(ESeekStart, pos1);
+	pos2 = size/4;
+	file2.Seek(ESeekStart, pos2);
+	status = KRequestPending;
+	data->Read(buf1,1,status);
+	User::WaitForRequest(status);
+	status = KRequestPending;
+	file2.Read(buf2,1, status);
+	User::WaitForRequest(status);
+	INFO_PRINTF2(_L("Data Length from CData::Read(TDesC& ,TInt Length, TRequestStatus aStatus) : %d"), buf1.Length());
+	INFO_PRINTF2(_L("Data Length from RFile::Read(TDesC& , TInt Length, TRequestStatus aStatus): %d"), buf2.Length());
+
+	pos1=0;
+	pos2=0;
+	data->Seek(ESeekCurrent, pos1);
+	file2.Seek(ESeekCurrent,pos2);
+	if (buf1 != buf2 || pos1 != pos2 || buf1.Length() != buf2.Length())
+		{
+		INFO_PRINTF1(_L("ERROR buffers or position do not match"));
+		SetTestStepResult(EFail);
+		}
+
+	// read past EOF
+	pos1 = size+1;
+	pos2 = size+1;
+	data->Seek(ESeekStart, pos1);
+	file2.Seek(ESeekStart, pos2);
+	data->Read(buf1);
+	file2.Read(buf2);
+
+	if(buf1.Length() != 0 || buf1.Length() != 0)
+		{
+		INFO_PRINTF1(_L("ERROR data read past EOF"));
+		SetTestStepResult(EFail);
+		}
+	
+	CleanupStack::PopAndDestroy(4);
+
+	__UHEAP_MARKEND;
+
+	if (TestStepResult() != EFail)
+		{
+		SetTestStepResult(EPass);
+		}
+
+	return TestStepResult();
+	}
+
+/* 
+ * Step reads from a CData from multiple threads using RFile handle
+ *
+ */
+ 
+CCAFHandleMultiThreadCDataStep::~CCAFHandleMultiThreadCDataStep()
+ {
+  	
+ }
+   
+ CCAFHandleMultiThreadCDataStep::CCAFHandleMultiThreadCDataStep(CCAFServer& aParent)
+ :iParent(aParent)
+ {
+ 	
+ 	SetTestStepName(KCAFHandleMultiThreadCDataStep);
+ }
+ 
+TVerdict CCAFHandleMultiThreadCDataStep::doTestStepL()
+	 {
+	TBuf8<2> buf;
+
+	__UHEAP_MARK;
+	_LIT(KCDataThread,"CData_Thread");
+
+	SetTestStepResult(EInconclusive);
+	
+	INFO_PRINTF1(_L("Multi Thread CData Test using RFile Handle"));
+	
+	TPtrC uri;
+	GetStringFromConfig(ConfigSection(),_L("URI"),uri);
+
+	INFO_PRINTF1(_L("Creating data object from content"));
+	RFile file;
+	User::LeaveIfError(file.Open(iParent.Fs(), uri, EFileRead));	
+		
+	CleanupClosePushL(file);
+		
+	CContent* content = CContent::NewLC(file);
+	CData* data = content->OpenContentL(EPeek);
+	CleanupStack::PushL(data);
+
+	TInt size, pos;
+
+	// Create a mutex for communication between our thread and the new thread
+	RSemaphore threadSemaphore;
+	threadSemaphore.CreateGlobal(KCDataThreadSemaphore(), 1, EOwnerProcess);
+	threadSemaphore.Wait(); 
+
+	// fire up a new thread, stack size and heap size 8k, might need to be bigger in the future 
+	RThread readerThread;
+	User::LeaveIfError(readerThread.Create(KCDataThread(),CCAFMultiThreadCDataStep::ReaderThreadEntry,8192, KMinHeapSize, 8192, (TAny *) data, EOwnerProcess));
+	
+	// request notification of thread completion
+	TRequestStatus stat;
+	readerThread.Logon(stat);
+	readerThread.Resume();	
+	
+
+	data->DataSizeL(size);
+	pos = size/2;
+	data->Seek(ESeekStart,pos);
+	data->Read(buf);
+
+	threadSemaphore.Wait(); // wait for thread function to run and signal the semaphore
+	threadSemaphore.Signal(); // finished with semaphore
+	threadSemaphore.Close(); // so close
+
+	User::WaitForRequest(stat); // wait for thread to finish
+	TInt error=(readerThread.ExitType()==EExitPanic) ? KErrGeneral : stat.Int();
+	User::LeaveIfError(error);
+	readerThread.Close();  // close the thread
+	
+	CleanupStack::PopAndDestroy(data);
+	CleanupStack::PopAndDestroy(content);
+	CleanupStack::PopAndDestroy(&file); //file
+	
+
+	__UHEAP_MARKEND;
+	
+	SetTestStepResult(EPass);
+	return TestStepResult();	
+}
+
+TInt CCAFHandleMultiThreadCDataStep::ReaderThreadEntry(TAny *aPtr)
+	{
+	TBuf8 <2> buf;
+	CData *data = reinterpret_cast <CData *> (aPtr);
+
+	// create a trap handler
+	CTrapCleanup* cleanup = CTrapCleanup::New();
+
+	RSemaphore threadSemaphore;
+	threadSemaphore.OpenGlobal(KCDataThreadSemaphore() ,EOwnerProcess);
+
+	data->Read(buf);
+	threadSemaphore.Signal(); // allow original thread to continue
+	threadSemaphore.Close();
+	
+	delete cleanup;
+	return KErrNone;
+	}
+
+/* 
+ * Data attribute step
+ *
+ */
+
+CCAFDataAttributeStep::~CCAFDataAttributeStep()
+	{
+	}
+
+CCAFDataAttributeStep::CCAFDataAttributeStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFDataAttributeStep);
+	}
+
+TVerdict CCAFDataAttributeStep::doTestStepL()
+	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    TBool wmdrmFlag = EFalse;     
+    GetBoolFromConfig(ConfigSection(),_L("wmdrmEnabled"), wmdrmFlag);     
+         
+    if(wmdrmFlag)     
+        {     
+        TVerdict verdict = doWmdrmTestStepL();     
+        return verdict;     
+        }     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+  
+	TInt attribute;
+	TInt value = KErrNone;
+	TInt expectedValue = KErrNone;
+	TPtrC uri;
+	TPtrC uniqueId;
+
+	SetTestStepResult(EPass);
+
+	GetIntFromConfig(ConfigSection(),_L("attribute"),attribute);
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetStringFromConfig(ConfigSection(),_L("uniqueid"),uniqueId);
+	GetIntFromConfig(ConfigSection(),_L("value"),expectedValue);
+
+	__UHEAP_MARK;
+	CContent *content = CContent::NewLC(uri);
+	CData *data = content->OpenContentL(EPeek, uniqueId);
+	User::LeaveIfError(data->GetAttribute(attribute, value));
+	delete data;
+	if(expectedValue != value)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF3(_L("CData::GetAttribute() Expected value: %d, actual value: %d"), expectedValue, value);
+		}
+	
+	CleanupStack::PopAndDestroy(content);		    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * Data attributeset step
+ *
+ */
+
+CCAFDataAttributeSetStep::~CCAFDataAttributeSetStep()
+	{
+	}
+
+CCAFDataAttributeSetStep::CCAFDataAttributeSetStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFDataAttributeSetStep);
+	}
+
+TVerdict CCAFDataAttributeSetStep::doTestStepL()
+	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    TBool wmdrmFlag = EFalse;     
+    GetBoolFromConfig(ConfigSection(),_L("wmdrmEnabled"), wmdrmFlag);     
+         
+    if(wmdrmFlag)     
+        {     
+        TVerdict verdict = doWmdrmTestStepL();     
+        return verdict;     
+        }     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
+	TInt expectedValue1;
+	TInt expectedValue2;
+	TInt value1;
+	TInt value2;
+	TInt attribute1;
+	TInt attribute2;
+	TInt result = KErrNone;
+	TPtrC uri;
+	TPtrC uniqueId;
+
+	SetTestStepResult(EPass);
+
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetStringFromConfig(ConfigSection(),_L("uniqueid"),uniqueId);
+	GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1);
+	GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2);
+	GetIntFromConfig(ConfigSection(),_L("value1"),expectedValue1);
+	GetIntFromConfig(ConfigSection(),_L("value2"),expectedValue2);
+
+	__UHEAP_MARK;
+	CContent *content = CContent::NewLC(uri);
+	RAttributeSet attributeSet;
+	CleanupClosePushL(attributeSet);
+	attributeSet.AddL(attribute1);
+	attributeSet.AddL(attribute2);
+
+	CData *data = content->OpenContentL(EPeek, uniqueId);
+	result = data->GetAttributeSet(attributeSet);
+	delete data;
+	if(result != KErrNone)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF1(_L("CData::GetAttribute() failed"));
+		}
+	User::LeaveIfError(attributeSet.GetValue(attribute1, value1));
+	User::LeaveIfError(attributeSet.GetValue(attribute2, value2));
+	if(value1 != expectedValue1 || value2 != expectedValue2 || attributeSet.Count() != 2)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF1(_L("CData::GetAttributeSet() values don't match expected values"));
+		}
+	CleanupStack::PopAndDestroy(&attributeSet);		
+	CleanupStack::PopAndDestroy(content);		
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+/* 
+ * Data string attribute step
+ *
+ */
+
+CCAFDataStringAttributeStep::~CCAFDataStringAttributeStep()
+	{
+	}
+
+CCAFDataStringAttributeStep::CCAFDataStringAttributeStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFDataStringAttributeStep);
+	}
+
+TVerdict CCAFDataStringAttributeStep::doTestStepL()
+	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    TBool wmdrmFlag = EFalse;     
+    GetBoolFromConfig(ConfigSection(),_L("wmdrmEnabled"), wmdrmFlag);     
+         
+    if(wmdrmFlag)     
+        {     
+        TVerdict verdict = doWmdrmTestStepL();     
+        return verdict;     
+        }     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
+	TInt expectedResult;
+	TInt attribute;
+	TPtrC expectedValue;
+	TBuf <200> value;
+	TInt result = KErrNone;
+	TPtrC uri;
+	TPtrC uniqueId;
+
+	SetTestStepResult(EPass);
+
+	GetIntFromConfig(ConfigSection(),_L("attribute"),attribute);
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetStringFromConfig(ConfigSection(),_L("uniqueid"),uniqueId);
+	GetStringFromConfig(ConfigSection(),_L("value"),expectedValue);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	__UHEAP_MARK;
+	CContent *content = CContent::NewLC(uri);
+	CData *data = content->OpenContentL(EPeek, uniqueId);
+	result = data->GetStringAttribute(attribute, value);
+	delete data;
+	if(result != expectedResult)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF3(_L("CData::GetStringAttribute() Expected result: %d, actual result: %d"), expectedResult, result);
+		}
+	if(value != expectedValue)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF3(_L("CData::GetStringAttribute() Expected value: %S, actual result: %S"), &expectedValue, &value);
+		}
+
+	CleanupStack::PopAndDestroy(content);		
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * Data StringAttributeSet step
+ *
+ */
+
+CCAFDataStringAttributeSetStep::~CCAFDataStringAttributeSetStep()
+	{
+	}
+
+CCAFDataStringAttributeSetStep::CCAFDataStringAttributeSetStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFDataStringAttributeSetStep);
+	}
+
+TVerdict CCAFDataStringAttributeSetStep::doTestStepL()
+	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    TBool wmdrmFlag = EFalse;     
+    GetBoolFromConfig(ConfigSection(),_L("wmdrmEnabled"), wmdrmFlag);     
+         
+    if(wmdrmFlag)     
+        {     
+        TVerdict verdict = doWmdrmTestStepL();     
+        return verdict;     
+        }     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+  
+	TPtrC expectedValue1;
+	TPtrC expectedValue2;
+	TBuf <200> value1;
+	TBuf <200> value2;
+	TInt attribute1;
+	TInt attribute2;
+	TInt result = KErrNone;
+	TInt result1;
+	TInt result2;
+	TPtrC uri;
+	TPtrC uniqueId;
+
+	SetTestStepResult(EPass);
+
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetStringFromConfig(ConfigSection(),_L("uniqueid"),uniqueId);
+	GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1);
+	GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2);
+	GetStringFromConfig(ConfigSection(),_L("value1"),expectedValue1);
+	GetStringFromConfig(ConfigSection(),_L("value2"),expectedValue2);
+	GetIntFromConfig(ConfigSection(),_L("result1"),result1);
+	GetIntFromConfig(ConfigSection(),_L("result2"),result2);
+
+	__UHEAP_MARK;
+	CContent *content = CContent::NewLC(uri);
+	RStringAttributeSet attributeSet;
+	CleanupClosePushL(attributeSet);
+	attributeSet.AddL(attribute1);
+	attributeSet.AddL(attribute2);
+	
+	CData *data = content->OpenContentL(EPeek, uniqueId);
+	result = data->GetStringAttributeSet(attributeSet);
+	delete data;
+	if(result != KErrNone)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF1(_L("CData::GetAttribute() failed"));
+		}
+	if(result1 != attributeSet.GetValue(attribute1, value1))
+		{
+		INFO_PRINTF1(_L("RStringAttributeSet::GetValue failed"));
+		}
+	if(result2 != attributeSet.GetValue(attribute2, value2))
+		{
+		INFO_PRINTF1(_L("RStringAttributeSet::GetValue failed"));
+		}
+	if( value1 != expectedValue1 || value2 != expectedValue2 || attributeSet.Count() != 2)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF1(_L("CData::GetAttributeSet() values don't match expected values"));
+		}
+	CleanupStack::PopAndDestroy(&attributeSet);		
+	CleanupStack::PopAndDestroy(content);		
+	
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+CCAFExecuteIntentStep::~CCAFExecuteIntentStep()
+	{
+	}
+
+CCAFExecuteIntentStep::CCAFExecuteIntentStep(CCAFServer& aParent)
+: iParent(aParent)
+	{
+	SetTestStepName(KCAFSizeStep);
+	}
+
+TVerdict CCAFExecuteIntentStep::doTestStepL()
+	{
+	__UHEAP_MARK;
+	
+	SetTestStepResult(EInconclusive);
+	
+	INFO_PRINTF1(_L("Execute Intent Test"));
+	
+	TPtrC fileName;
+	TPtrC uniqueId;
+	TInt intent = EPeek;
+	TInt expectedResult = KErrNone;
+	
+	GetStringFromConfig(ConfigSection(),_L("FileName"),fileName);
+	GetStringFromConfig(ConfigSection(),_L("UniqueId"),uniqueId);
+	GetIntFromConfig(ConfigSection(),_L("Intent"),intent);
+	GetIntFromConfig(ConfigSection(),_L("ExpectedResult"),expectedResult);
+	
+	INFO_PRINTF3(_L("Creating CData object with filename: %S, UniqueId: %S"), &fileName, &uniqueId);
+	
+	CData* data = NULL;
+	
+	TRAPD(err, data = CData::NewL(TVirtualPathPtr(fileName, uniqueId),static_cast<TIntent>(intent), EContentShareReadOnly));
+	
+	if(err != expectedResult)
+		{
+		INFO_PRINTF2(_L("Unexpected result, EvaluateIntent() returned %d"), err);
+		}
+	else
+		{
+		SetTestStepResult(EPass);
+		if(err == KErrNone)
+			{
+			err = data->ExecuteIntent(static_cast<TIntent>(intent));
+			if(err == KErrNone)
+				{
+				TBuf8 <128> buffer;
+				TInt length = 128;
+			
+				// read the entire content object
+				while(err == KErrNone && length > 0)
+					{
+					err = data->Read(buffer);
+					length = buffer.Length();
+					}
+				if(err != KErrEof && err != KErrNone)
+					{
+					INFO_PRINTF2(_L("Unexpected error while reading content object: %d"), err);
+					SetTestStepResult(EFail);
+					}
+				}
+			else
+				{
+				INFO_PRINTF2(_L("Unexpected error, EvaluteIntent succeeded but ExecuteIntent failed with error: %d"), err);
+				SetTestStepResult(EFail);
+				}
+			}
+		}
+		
+	delete data;
+	
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * DRM File Open Performance Test Step
+ *
+ */
+
+CCAFDRMFileOpenPerformanceTest::~CCAFDRMFileOpenPerformanceTest()
+	{
+	iIterationSum = 0;
+	}
+
+CCAFDRMFileOpenPerformanceTest::CCAFDRMFileOpenPerformanceTest(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFDRMFileOpenPerformanceStep);
+	}
+
+TVerdict CCAFDRMFileOpenPerformanceTest::doTestStepL()
+	{
+	__UHEAP_MARK;
+
+	INFO_PRINTF1(_L("DRM File Open Performance Test"));
+	
+	TPtrC inputFileName;
+	TInt maxValue = 0 ,iterCount = 0;
+
+	GetStringFromConfig(ConfigSection(),_L("FileName"),inputFileName);
+	GetIntFromConfig(ConfigSection(),_L("IterationCount"),iterCount);
+	GetIntFromConfig(ConfigSection(),_L("MaxTimeLimitInMS"),maxValue);
+		
+	iIterationSum=0;
+	// iterated iterCount times to get the average time taken to open the file.
+	for (TInt i = 0; i < iterCount; ++i)
+		{
+		OpenAndReadFileContentL(inputFileName);
+		}
+		
+	TInt tickPeriod;
+	HAL::Get(HAL::ENanoTickPeriod, tickPeriod);
+	TInt nTickPeriodMS = tickPeriod / KCafTestSecToMS;
+
+	TInt avgTimeForFileOpen = (iIterationSum * nTickPeriodMS) / iterCount;
+	if((avgTimeForFileOpen > maxValue))
+		{
+		INFO_PRINTF1(_L("Performance Test failed."));
+		SetTestStepResult(EFail);
+		}
+
+	INFO_PRINTF2(_L("Expected maximum time to open DRM file in millisecs is : %d"), maxValue);
+	INFO_PRINTF2(_L("Obtained time in millisecs is: %d"), avgTimeForFileOpen);
+	
+	__UHEAP_MARKEND;
+	
+	return TestStepResult();
+	}
+	
+void CCAFDRMFileOpenPerformanceTest::OpenAndReadFileContentL(const TDesC& aFileName)
+	{
+	TPtrC uniqueIdentifier;
+
+	GetStringFromConfig(ConfigSection(),_L("UniqueId"),uniqueIdentifier);
+	CContent *content = CContent::NewLC(aFileName);
+	CData *data = NULL;
+	TUint32 tickCounterValBeforeFileOpen, tickCounterValAfterFileOpen;
+	if(uniqueIdentifier.Length() > 0)
+		{
+		tickCounterValBeforeFileOpen = User::NTickCount();
+		data = content->OpenContentL(EPeek,uniqueIdentifier);
+		tickCounterValAfterFileOpen = User::NTickCount();
+		}
+	else
+		{
+		tickCounterValBeforeFileOpen = User::NTickCount();
+		data = content->OpenContentL(EPeek);
+		tickCounterValAfterFileOpen = User::NTickCount();
+		}
+	delete data;
+	// finished with Data object
+	CleanupStack::PopAndDestroy(content);	
+	iIterationSum += tickCounterValAfterFileOpen - tickCounterValBeforeFileOpen;
+	}
+	
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+      
+CWmdrmCAFContentStep::~CWmdrmCAFContentStep()     
+    {     
+    }     
+      
+CWmdrmCAFContentStep::CWmdrmCAFContentStep()     
+    {     
+    SetTestStepName(KWmdrmCAFContentStep);     
+    }     
+      
+      
+TVerdict CWmdrmCAFContentStep::doTestStepL()     
+    {     
+    SetTestStepResult(EFail);     
+    
+    TBool protectedVal;
+    GetBoolFromConfig(ConfigSection(),_L("attribValue1"), protectedVal);     
+    TBool forwardable;     
+    GetBoolFromConfig(ConfigSection(),_L("attribValue2"), forwardable);     
+         
+    TBool headerDataPresent = ETrue;     
+    GetBoolFromConfig(ConfigSection(),_L("headerDataFlag"), headerDataPresent);     
+         
+    INFO_PRINTF1(_L("Verify CContent APIs for WMDRM content"));      
+         
+    __UHEAP_MARK;     
+         
+    CContent* content = NULL;     
+         
+    // this condition verifies that CContent construction leaves with KErrMissingWmdrmHeaderData,     
+    // when no header data is provided.     
+    if(!headerDataPresent)     
+        {     
+        content = CContent::NewL(KNullDesC8());     
+        return EPass;     
+        }     
+         
+    // create a dummy header data.     
+    HBufC8* headerData = CreateWmdrmHeaderLC();     
+         
+    // Open a file and retrieve the attributes.     
+    // If headerDataPresent is false, the code will never reach here.s     
+    content = CContent::NewL(*headerData);     
+    CleanupStack::PushL(content);     
+    CAttribute* attrs = content->NewAttributeL(ETrue);     
+    CleanupStack::PushL(attrs);     
+      
+    TBool value1 = attrs->ResponseSet().IsSet(EIsProtected);     
+    TBool value2 = attrs->ResponseSet().IsSet(EIsForwardable);     
+    if(value1 == protectedVal && value2 == forwardable)     
+        {     
+        SetTestStepResult(EPass);     
+        }     
+      
+    CleanupStack::PopAndDestroy(3, headerData);      
+      
+    __UHEAP_MARKEND;     
+    return TestStepResult();     
+    }     
+      
+      
+CWmdrmCAFDataStep::~CWmdrmCAFDataStep()     
+    {     
+    }     
+      
+CWmdrmCAFDataStep::CWmdrmCAFDataStep()     
+    {     
+    SetTestStepName(KWmdrmCAFDataStep);     
+    }     
+      
+TVerdict CWmdrmCAFDataStep::doTestStepL()     
+    {     
+    SetTestStepResult(EFail);     
+         
+    TInt attribute;     
+    TInt expectedValue = KErrNone;     
+      
+    GetIntFromConfig(ConfigSection(),_L("attribute"), attribute);     
+    GetIntFromConfig(ConfigSection(),_L("value"), expectedValue);     
+         
+__UHEAP_MARK;     
+      
+    HBufC8* headerData = CreateWmdrmHeaderLC();     
+         
+    CContent *content = CContent::NewLC(*headerData);     
+    CData *data = content->OpenContentL(EPeek);     
+    TInt value = KErrNone;     
+    User::LeaveIfError(data->GetAttribute(attribute, value));     
+    delete data;     
+         
+    if(expectedValue == value)     
+        {     
+        SetTestStepResult(EPass);     
+        }     
+    else     
+        {     
+        INFO_PRINTF3(_L("CData::GetAttribute() Expected value: %d, actual value: %d"), expectedValue, value);        
+        }     
+         
+    CleanupStack::PopAndDestroy(2, headerData);                      
+__UHEAP_MARKEND;     
+         
+    return TestStepResult();     
+    }     
+      
+      
+CWmdrmCAFReadStep::~CWmdrmCAFReadStep()     
+    {     
+    }     
+      
+CWmdrmCAFReadStep::CWmdrmCAFReadStep()     
+    {     
+    SetTestStepName(KWmdrmCAFReadStep);     
+    }     
+      
+      
+TVerdict CWmdrmCAFReadStep::doTestStepL()     
+    {     
+    SetTestStepResult(EFail);     
+         
+    TBool synchronous = EFalse;     
+    GetBoolFromConfig(ConfigSection(),_L("synchronous"), synchronous);     
+    TBool intent = EFalse;     
+    GetBoolFromConfig(ConfigSection(),_L("intent"), intent);     
+    TPtrC inputPacket;     
+    GetStringFromConfig(ConfigSection(),_L("inputPacket"), inputPacket);     
+    TPtrC expectedOutput;     
+    GetStringFromConfig(ConfigSection(),_L("outputPacket"), expectedOutput);     
+         
+__UHEAP_MARK;     
+    TPtrC header;     
+    HBufC8* headerData = NULL;     
+         
+    if(GetStringFromConfig(ConfigSection(),_L("header"), header))     
+        {     
+        headerData = ConvertDes16toHBufC8LC(header);     
+        }     
+    else     
+        {     
+        headerData = CreateWmdrmHeaderLC();      
+        }     
+         
+    TInt result = 0;     
+    if(!synchronous)     
+        {     
+        result = TestAsynchronousReadL(*headerData, intent, inputPacket, expectedOutput);     
+        }     
+    else     
+        {     
+        result = TestSynchronousReadL(*headerData, intent, inputPacket, expectedOutput);     
+        }     
+      
+    if(result == KErrNone)     
+        {     
+        SetTestStepResult(EPass);     
+        }     
+             
+    CleanupStack::PopAndDestroy(headerData);     
+__UHEAP_MARKEND;     
+      
+    return TestStepResult();     
+    }     
+         
+TInt CWmdrmCAFReadStep::TestSynchronousReadL(const TDesC8& aHeaderData, TBool aIntent, TDesC& aInputPacket, TDesC& aExpectedOutput)     
+    {     
+__UHEAP_MARK;     
+    CData* data = NULL;     
+    TInt returnVal = KErrGeneral;     
+         
+    if(aIntent)     
+        {     
+        data = CData::NewL(aHeaderData, EPeek);     
+        }     
+    else     
+        {     
+        data = CData::NewL(aHeaderData);     
+        }     
+         
+    CleanupStack::PushL(data);     
+         
+    if(aInputPacket.Length() <= 0)     
+        {     
+        // dummy output buffer.This loop essentially tests the error condition KErrInsufficientDataPacketLength.     
+        TBuf8<2> outputBuffer;     
+        User::LeaveIfError(data->Read(KNullDesC8(), outputBuffer));     
+        }     
+             
+    else     
+        {     
+        HBufC8* inputPacket = ConvertDes16toHBufC8LC(aInputPacket);     
+        HBufC8* outputPacket = HBufC8::NewLC(aInputPacket.Length());     
+        TPtr8 outputPacketPtr = outputPacket->Des();     
+         
+        User::LeaveIfError(data->Read(*inputPacket, outputPacketPtr));     
+        HBufC8* expectedOutput = ConvertDes16toHBufC8LC(aExpectedOutput);     
+        if(expectedOutput->Compare(*outputPacket) == KErrNone)     
+            {     
+            returnVal = KErrNone;        
+            }     
+         
+        CleanupStack::PopAndDestroy(3, inputPacket);         
+        }     
+         
+    CleanupStack::PopAndDestroy(data);     
+__UHEAP_MARKEND;     
+         
+    return returnVal;     
+    }     
+         
+TInt CWmdrmCAFReadStep::TestAsynchronousReadL(const TDesC8& aHeaderData, TBool aIntent, TDesC& aInputPacket, TDesC& aExpectedOutput)     
+    {     
+__UHEAP_MARK;     
+    CData* data = NULL;     
+    TInt returnVal = KErrGeneral;     
+         
+    if(aIntent)     
+        {     
+        data = CData::NewL(aHeaderData, EPeek);     
+        }     
+    else     
+        {     
+        data = CData::NewL(aHeaderData);     
+        }     
+         
+    CleanupStack::PushL(data);     
+         
+    if(aInputPacket.Length() <= 0)     
+        {     
+        TBuf8<2> outputBuffer;     
+        User::LeaveIfError(data->Read(KNullDesC8(), outputBuffer));     
+        }     
+             
+    else     
+        {     
+        HBufC8* inputPacket = ConvertDes16toHBufC8LC(aInputPacket);     
+        HBufC8* outputPacket = HBufC8::NewLC(aInputPacket.Length());     
+        TPtr8 outputPacketPtr = outputPacket->Des();     
+         
+        TRequestStatus status;     
+        data->Read(*inputPacket, outputPacketPtr, status);     
+        User::WaitForRequest(status);     
+         
+        if(status.Int() != KErrNone)     
+            {     
+            CleanupStack::PopAndDestroy(3, data);     
+            return status.Int();     
+            }     
+             
+        HBufC8* expectedOutput = ConvertDes16toHBufC8LC(aExpectedOutput);     
+        if(expectedOutput->Compare(*outputPacket) == KErrNone)     
+            {     
+            returnVal = KErrNone;     
+            }     
+         
+        CleanupStack::PopAndDestroy(3, inputPacket);     
+        }     
+         
+    CleanupStack::PopAndDestroy(data);     
+__UHEAP_MARKEND;     
+         
+    return returnVal;     
+    }     
+         
+TVerdict CCAFDataAttributeStep::doWmdrmTestStepL()     
+    {     
+    SetTestStepResult(EFail);     
+         
+    TInt attribVal;     
+    GetIntFromConfig(ConfigSection(),_L("attribute"), attribVal);     
+         
+    TInt expectedValue;     
+    GetIntFromConfig(ConfigSection(),_L("value"), expectedValue);     
+      
+__UHEAP_MARK;     
+    TPtrC header;     
+    HBufC8* headerData = NULL;     
+         
+    if(GetStringFromConfig(ConfigSection(),_L("header"), header))     
+        {     
+        headerData = ConvertDes16toHBufC8LC(header);     
+        }     
+    else     
+        {     
+        headerData = CreateWmdrmHeaderLC();      
+        }     
+             
+    CContent *content = CContent::NewLC(*headerData);     
+    CData *data = content->OpenContentL(EPeek);     
+    TInt value;     
+    User::LeaveIfError(data->GetAttribute(attribVal, value));     
+    delete data;     
+         
+    if(expectedValue == value)     
+        {     
+        SetTestStepResult(EPass);     
+        }     
+    else     
+        {     
+        INFO_PRINTF3(_L("CData::GetAttribute() Expected value: %d, actual value: %d"), expectedValue, value);        
+        }     
+         
+    CleanupStack::PopAndDestroy(2, headerData);                      
+__UHEAP_MARKEND;     
+      
+    return TestStepResult();     
+    }     
+         
+      
+TVerdict CCAFDataAttributeSetStep::doWmdrmTestStepL()     
+    {     
+    SetTestStepResult(EFail);     
+         
+    TInt attribute1;     
+    GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1);     
+         
+    TInt attribute2;     
+    GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2);     
+         
+    TInt expectedValue1;     
+    GetIntFromConfig(ConfigSection(),_L("value1"),expectedValue1);     
+         
+    TInt expectedValue2;     
+    GetIntFromConfig(ConfigSection(),_L("value2"),expectedValue2);     
+      
+__UHEAP_MARK;     
+      
+    TPtrC header;     
+    HBufC8* headerData = NULL;     
+         
+    if(GetStringFromConfig(ConfigSection(),_L("header"), header))     
+        {     
+        headerData = ConvertDes16toHBufC8LC(header);     
+        }     
+    else     
+        {     
+        headerData = CreateWmdrmHeaderLC();      
+        }     
+         
+    CContent *content = CContent::NewLC(*headerData);     
+    CData *data = content->OpenContentL(EPeek);     
+                     
+    RAttributeSet attributeSet;     
+    CleanupClosePushL(attributeSet);     
+    attributeSet.AddL(attribute1);     
+    attributeSet.AddL(attribute2);     
+             
+    TInt result = data->GetAttributeSet(attributeSet);     
+    delete data;     
+         
+    if(result == KErrNone)     
+        {     
+        TInt value1;         
+        User::LeaveIfError(attributeSet.GetValue(attribute1, value1));     
+             
+        TInt value2;     
+        User::LeaveIfError(attributeSet.GetValue(attribute2, value2));     
+             
+        if(expectedValue1 == value1 && expectedValue2 == value2 && attributeSet.Count() == 2)     
+            {     
+            SetTestStepResult(EPass);     
+            }     
+        else     
+            {     
+            INFO_PRINTF1(_L("CData::GetAttributeSet() values don't match expected values"));     
+            }     
+        }     
+         
+    else     
+        {     
+        INFO_PRINTF1(_L("CData::GetAttributeSet() failed"));     
+        }     
+             
+    CleanupStack::PopAndDestroy(3, headerData);          
+         
+__UHEAP_MARKEND;     
+      
+    return TestStepResult();     
+    }     
+      
+      
+TVerdict CCAFDataStringAttributeStep::doWmdrmTestStepL()     
+    {     
+    SetTestStepResult(EFail);     
+         
+    TInt attribVal;     
+    GetIntFromConfig(ConfigSection(),_L("attribute"),attribVal);     
+         
+    TPtrC expectedValue;     
+    GetStringFromConfig(ConfigSection(),_L("value"),expectedValue);     
+         
+    TInt expectedResult;     
+    GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);     
+         
+__UHEAP_MARK;     
+    TPtrC header;     
+    HBufC8* headerData = NULL;     
+         
+    if(GetStringFromConfig(ConfigSection(),_L("header"), header))     
+        {     
+        headerData = ConvertDes16toHBufC8LC(header);     
+        }     
+    else     
+        {     
+        headerData = CreateWmdrmHeaderLC();      
+        }     
+         
+    CContent *content = CContent::NewLC(*headerData);     
+    CData *data = content->OpenContentL(EPeek);     
+                 
+    TBuf <200> value;     
+    TInt result = data->GetStringAttribute(attribVal, value);     
+    delete data;     
+         
+    if(result == expectedResult && value == expectedValue)     
+        {     
+        SetTestStepResult(EPass);     
+        }     
+    else     
+        {     
+        INFO_PRINTF3(_L("CData::GetStringAttribute() Expected result: %d, actual result: %d"), expectedResult, result);     
+        INFO_PRINTF3(_L("CData::GetStringAttribute() Expected value: %S, actual value: %S"), &expectedValue, &value);     
+        }     
+             
+    CleanupStack::PopAndDestroy(2, headerData);          
+             
+__UHEAP_MARKEND;     
+      
+    return TestStepResult();     
+    }     
+      
+      
+TVerdict CCAFDataStringAttributeSetStep::doWmdrmTestStepL()     
+    {     
+    SetTestStepResult(EFail);     
+      
+    TInt attribute1;         
+    GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1);     
+         
+    TInt attribute2;     
+    GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2);     
+         
+    TPtrC expectedValue1;     
+    GetStringFromConfig(ConfigSection(),_L("value1"),expectedValue1);     
+         
+    TPtrC expectedValue2;     
+    GetStringFromConfig(ConfigSection(),_L("value2"),expectedValue2);     
+         
+__UHEAP_MARK;     
+    TPtrC header;     
+    HBufC8* headerData = NULL;     
+         
+    if(GetStringFromConfig(ConfigSection(),_L("header"), header))     
+        {     
+        headerData = ConvertDes16toHBufC8LC(header);     
+        }     
+    else     
+        {     
+        headerData = CreateWmdrmHeaderLC();      
+        }     
+         
+    CContent *content = CContent::NewLC(*headerData);     
+    CData *data = content->OpenContentL(EPeek);     
+         
+    RStringAttributeSet attributeSet;     
+    CleanupClosePushL(attributeSet);     
+    attributeSet.AddL(attribute1);     
+    attributeSet.AddL(attribute2);     
+             
+    TInt result = data->GetStringAttributeSet(attributeSet);     
+    delete data;     
+             
+    TBuf <200> value1;     
+    TBuf <200> value2;     
+    if(result == KErrNone)     
+        {     
+        TInt result3 = attributeSet.GetValue(attribute1, value1);     
+        TInt result4 = attributeSet.GetValue(attribute2, value2);     
+                 
+        if(value1 == expectedValue1 && value2 == expectedValue2 && attributeSet.Count() == 2     
+         && result3 == KErrNone && result4 == KErrNone)     
+            {     
+            SetTestStepResult(EPass);     
+            }     
+        else     
+            {     
+            INFO_PRINTF3(_L("RStringAttributeSet::GetValue() for attribute1.Expected value: %S, actual value: %S"), &expectedValue1, &value1);     
+            INFO_PRINTF3(_L("RStringAttributeSet::GetValue() for attribute2.Expected value: %S, actual value: %S"), &expectedValue2, &value2);     
+            INFO_PRINTF3(_L("RStringAttributeSet::GetValue() for attribute1. Expected result: %d, actual result: %d"), 0, result3);     
+            INFO_PRINTF3(_L("RStringAttributeSet::GetValue() for attribute2. Expected result: %d, actual result: %d"), 0, result4);      
+            }     
+        }     
+    else     
+        {     
+        INFO_PRINTF1(_L("CData::GetStringAttributeSet() failed"));     
+        }        
+         
+    CleanupStack::PopAndDestroy(3, headerData);          
+      
+__UHEAP_MARKEND;     
+      
+    return TestStepResult();     
+    }     
+      
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/Consumerstep.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,443 @@
+/*
+* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+
+#if (!defined __CONSUMER_STEP_H__)
+#define __CONSUMER_STEP_H__
+#include <test/testexecutestepbase.h>
+
+#include "cafstep.h"
+
+// Constants used to name test cases 
+_LIT(KCAFSizeStep,"CAFSizeStep");
+#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+_LIT(KCAFSizeStep64,"CAFSizeStep64");
+_LIT(KCAFSeekReadStep64,"CAFSeekReadStep64");
+#endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+_LIT(KCAFSeekReadStep,"CAFSeekReadStep");
+_LIT(KCAFAttributesStep,"CAFAttributesStep");
+_LIT(KCAFStringAttributesStep,"CAFStringAttributesStep");
+_LIT(KCAFMultiThreadCDataStep,"CAFMultiThreadCDataStep");
+_LIT(KCAFMimeTypeCDataStep,"CAFMimeTypeCDataStep");
+_LIT(KCAFShareModeStep,"CAFShareModeStep");
+_LIT(KCAFHandleSizeStep,"CAFHandleSizeStep");
+_LIT(KCAFHandleSeekReadStep,"CAFHandleSeekReadStep");
+_LIT(KCAFHandleMultiThreadCDataStep,"CAFHandleMultiThreadCDataStep");
+_LIT(KCAFDataAttributeStep,"CAFDataAttributeStep");
+_LIT(KCAFDataAttributeSetStep,"CAFDataAttributeSetStep");
+_LIT(KCAFDataStringAttributeStep,"CAFDataStringAttributeStep");
+_LIT(KCAFDataStringAttributeSetStep,"CAFDataStringAttributeSetStep");
+_LIT(KCAFExecuteIntentStep,"CAFExecuteIntentStep");
+_LIT(KCAFDRMFileOpenPerformanceStep, "CAFDRMFileOpenPerformanceStep");
+
+//#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+_LIT(KWmdrmCAFContentStep,"WmdrmCAFContentStep");     
+_LIT(KWmdrmCAFDataStep,"WmdrmCAFDataStep");     
+_LIT(KWmdrmCAFReadStep, "WmdrmCAFReadStep");     
+//#endif //SYMBIAN_SDP-WMDRM 
+
+/* 
+* Used to open one file with RFile and the DRM packaged version of the same file with 
+* CContent::Open() and compare the reported sizes
+* It can be used with two identical, non DRM file to check the operation of F32Agent
+* The ini file used with this test expects only one parameter
+*
+* URI1 - The name of the file used for this test
+* 
+*/
+class CCAFSizeStep : public CCAFStep
+	{
+public:
+	CCAFSizeStep(CCAFServer& aParent);
+	~CCAFSizeStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+
+#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+/* 
+* 64bit version of CCAFSizeStep 
+* If the agent to be tested implemented 64bit functions, this test step will test 64bit functions
+* under the same scenario as its 32bit counterpart. If 64bit functions are not implemented, this test step
+* can also ensure that fallback to 32bit functions works properly  
+*/
+class CCAFSizeStep64 : public CCAFStep
+	{
+public:
+	CCAFSizeStep64(CCAFServer& aParent);
+	~CCAFSizeStep64();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+#endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+
+/* 
+* Used to test file Seek and Read operations on DRM protected content.
+* Opens one file with RFile and the DRM packaged version of the same file with 
+* CContent::Open() and does a series of Seek and Read operations.
+* Verifies that the CAF and the agent corresponding to the DRM content implement 
+* all polymorphic versions of Read() and Seek() correctly
+* It can also be used with two identical, non DRM file to check the operation of F32Agent
+* The ini file used with this test expects only one parameter
+*
+* URI1 - The name of the file used for this test
+* 
+*/
+class CCAFSeekReadStep : public CCAFStep
+	{
+public:
+	CCAFSeekReadStep(CCAFServer& aParent);
+	~CCAFSeekReadStep();
+	virtual TVerdict doTestStepL();
+private:
+	void StandardCheckReturnValue(TInt aReturnValue);
+private:
+	CCAFServer& iParent;
+	};
+
+#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+/* 
+* 64bit version of CAFSeekReadStep
+* If the agent to be tested implemented 64bit functions, this test step will test 64bit functions
+* under the same scenario as its 32bit counterpart. If 64bit functions are not implemented, this test step
+* can also ensure that fallback to 32bit functions works properly 
+* 
+*/
+class CCAFSeekReadStep64 : public CCAFStep
+	{
+public:
+	CCAFSeekReadStep64(CCAFServer& aParent);
+	~CCAFSeekReadStep64();
+	virtual TVerdict doTestStepL();
+private:
+	void StandardCheckReturnValue(TInt aReturnValue);
+private:
+	CCAFServer& iParent;
+	};
+#endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+
+/* 
+* Used to test CContent::Attributes()
+* The INI file specifies the file to retrieve the attributes from.
+* @internalComponent
+*/
+class CCAFAttributesStep : public CCAFStep
+	{
+public:
+	CCAFAttributesStep(CCAFServer& aParent);
+	~CCAFAttributesStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+
+/* 
+* Used to test Content::StringAttributes()
+* The INI file specifies the file to retrieve the attributes from.
+* @internalComponent
+*/
+class CCAFStringAttributesStep : public CCAFStep
+	{
+public:
+	CCAFStringAttributesStep(CCAFServer& aParent);
+	~CCAFStringAttributesStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+
+
+/* 
+* Used to test multi-threaded read from CContent
+* @internalComponent
+*/
+class CCAFMultiThreadCDataStep : public CCAFStep
+	{
+public:
+	CCAFMultiThreadCDataStep(CCAFServer& aParent);
+	~CCAFMultiThreadCDataStep();
+	virtual TVerdict doTestStepL();
+	static TInt ReaderThreadEntry(TAny *aPtr);
+private:
+	CCAFServer& iParent;
+	};
+
+
+/* 
+* Used to test finding the mime type from CData
+* @internalComponent
+*/
+class CCAFMimeTypeCDataStep: public CCAFStep
+	{
+public:
+	CCAFMimeTypeCDataStep(CCAFServer& aParent);
+	~CCAFMimeTypeCDataStep();
+	virtual TVerdict doTestStepL();
+	static TInt ReaderThreadEntry(TAny *aPtr);
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test content sharing modes
+* @internalComponent
+*/
+class CCAFShareModeStep: public CCAFStep
+	{
+public:
+	CCAFShareModeStep(CCAFServer& aParent);
+	~CCAFShareModeStep();
+	virtual TVerdict doTestStepL();
+	TVerdict doShareModeStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+
+/* 
+* Used to open one file with RFile and the DRM packaged version of the same file with 
+* CContent::Open() by passing RFile handle and compare the reported sizes
+* It can be used with two identical, non DRM file to check the operation of F32Agent
+* The ini file used with this test expects only one parameter
+*
+* URI1 - The name of the file used for this test
+* 
+*/
+class CCAFHandleSizeStep : public CCAFStep
+	{
+public:
+	CCAFHandleSizeStep(CCAFServer& aParent);
+	~CCAFHandleSizeStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};	
+
+/* 
+* Used to test file Seek and Read operations on DRM protected content.
+* Opens one file with RFile and the DRM packaged version of the same file with 
+* CContent::Open() by passing RFile handle and does a series of Seek and Read operations.
+* Verifies that the CAF and the agent corresponding to the DRM content implement 
+* all polymorphic versions of Read() and Seek() correctly
+* It can also be used with two identical, non DRM file to check the operation of F32Agent
+* The ini file used with this test expects only one parameter
+*
+* URI1 - The name of the file used for this test
+*/
+class CCAFHandleSeekReadStep : public CCAFStep
+	{
+public:
+	CCAFHandleSeekReadStep(CCAFServer& aParent);
+	~CCAFHandleSeekReadStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test multi-threaded read from CContent
+* @internalComponent
+*/
+class CCAFHandleMultiThreadCDataStep : public CCAFStep
+	{
+public:
+	CCAFHandleMultiThreadCDataStep(CCAFServer& aParent);
+	~CCAFHandleMultiThreadCDataStep();
+	virtual TVerdict doTestStepL();
+	static TInt ReaderThreadEntry(TAny *aPtr);
+private:
+	CCAFServer& iParent;
+	};
+	
+/* 
+* Used to test CManager::GetAttribute()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+*
+* @internalComponent Exposure internally
+*/
+class CCAFDataAttributeStep : public CCAFStep
+	{
+public:
+	CCAFDataAttributeStep(CCAFServer& aParent);
+	~CCAFDataAttributeStep();
+	virtual TVerdict doTestStepL();
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    TVerdict doWmdrmTestStepL();     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CManager::GetAttributeSet()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+*
+* @internalComponent Exposure internally
+*/
+class CCAFDataAttributeSetStep : public CCAFStep
+	{
+public:
+	CCAFDataAttributeSetStep(CCAFServer& aParent);
+	~CCAFDataAttributeSetStep();
+	virtual TVerdict doTestStepL();
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    TVerdict doWmdrmTestStepL();     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CContent::GetAttribute()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+*
+* @internalComponent Exposure internally
+*/
+class CCAFDataStringAttributeStep : public CCAFStep
+	{
+public:
+	CCAFDataStringAttributeStep(CCAFServer& aParent);
+	~CCAFDataStringAttributeStep();
+	virtual TVerdict doTestStepL();
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    TVerdict doWmdrmTestStepL();     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CData::GetStringAttributeSet()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+*
+* @internalComponent Exposure internally
+*/
+class CCAFDataStringAttributeSetStep : public CCAFStep
+	{
+public:
+	CCAFDataStringAttributeSetStep(CCAFServer& aParent);
+	~CCAFDataStringAttributeSetStep();
+	virtual TVerdict doTestStepL();
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    TVerdict doWmdrmTestStepL();     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+private:
+	CCAFServer& iParent;
+	};
+
+class CCAFExecuteIntentStep : public CCAFStep
+	{
+public:
+	CCAFExecuteIntentStep(CCAFServer& aParent);
+	~CCAFExecuteIntentStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+	
+/*
+* Used to test DRM File Open perfomance.
+* The INI file specifies the file to be opened , the iteration count and the maximum time limit for 
+* file open operation(in millisecs).
+* If the obtained time doesn't fall within the provided limit (in the INI parameters) , the test case fails.
+*
+* @internalComponent Exposure internally
+*/
+
+class CCAFDRMFileOpenPerformanceTest : public CCAFStep
+	{
+	public:
+	CCAFDRMFileOpenPerformanceTest(CCAFServer& aParent);
+	~CCAFDRMFileOpenPerformanceTest();
+	virtual TVerdict doTestStepL();
+	
+	private:
+	// Read content from file using CAF
+	void OpenAndReadFileContentL(const TDesC& aFileName);
+	
+	private:
+
+	CCAFServer& iParent;
+	TUint32 iIterationSum;
+	};
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+/* Used to test behaviour of CContent object creation and attribute APIs for WMDRM content.  +-   
+* @internalComponent Exposure internally     
+*/     
+class CWmdrmCAFContentStep : public CCAFStep     
+    {     
+public:     
+    CWmdrmCAFContentStep();     
+    ~CWmdrmCAFContentStep();     
+    virtual TVerdict doTestStepL();     
+    };     
+      
+      
+/* Used to test the behaviour of CData object creation and attribute APIs for WMDRM content.     
+* @internalComponent Exposure internally     
+*/     
+class CWmdrmCAFDataStep : public CCAFStep     
+    {     
+public:     
+    CWmdrmCAFDataStep();     
+    ~CWmdrmCAFDataStep();     
+    virtual TVerdict doTestStepL();     
+    };     
+      
+         
+/* Used to test synchronous and asynchronous behaviour of ReadL() APIs of CData class for WMDRM content.     
+* @internalComponent Exposure internally     
+*/     
+class CWmdrmCAFReadStep : public CCAFStep     
+    {     
+public:     
+    CWmdrmCAFReadStep();     
+    ~CWmdrmCAFReadStep();     
+    virtual TVerdict doTestStepL();     
+      
+private:     
+    TInt TestSynchronousReadL(const TDesC8& aHeaderData, TBool aIntent, TDesC& aInputPacket, TDesC& aExpectedOuput);     
+    TInt TestAsynchronousReadL(const TDesC8& aHeaderData, TBool aIntent, TDesC& aInputPacket, TDesC& aExpectedOuput);     
+    };       
+      
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/Contentstep.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,1271 @@
+/*
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <test/testexecutelog.h>
+#include <caf/content.h>
+#include <caf/data.h>
+#include <caf/attribute.h>
+#include "cafserver.h"
+#include "bitset.h"
+#include "contentstep.h"
+#include "embeddedobject.h"
+#include "streamableptrarray.h"
+#include "attributeset.h"
+#include "stringattributeset.h"
+#include <caf/agentfactory.h>
+
+using namespace ContentAccess;
+
+/* 
+ * Content attribute step
+ *
+ */
+
+CCAFContentAttributeStep::~CCAFContentAttributeStep()
+	{
+	}
+
+CCAFContentAttributeStep::CCAFContentAttributeStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFContentAttributeStep);
+	}
+
+TVerdict CCAFContentAttributeStep::doTestStepL()
+	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    TBool wmdrmFlag = EFalse;     
+    GetBoolFromConfig(ConfigSection(),_L("wmdrmEnabled"), wmdrmFlag);     
+         
+    if(wmdrmFlag)     
+        {     
+        TVerdict verdict = doWmdrmTestStepL();     
+        return verdict;     
+        }     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
+	TInt attribute;
+	TInt value = KErrNone;
+	TInt expectedValue;
+	TInt unresolvedUri = EFalse;
+	TPtrC uri;
+	TPtrC uniqueId;
+
+	SetTestStepResult(EPass);
+
+	GetIntFromConfig(ConfigSection(),_L("attribute"),attribute);
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetStringFromConfig(ConfigSection(),_L("uniqueid"),uniqueId);
+	GetIntFromConfig(ConfigSection(),_L("value"),expectedValue);
+	GetIntFromConfig(ConfigSection(),_L("unresolveduri"),unresolvedUri);
+	
+
+	__UHEAP_MARK;
+	
+	// Open using file name
+	CContent *content = CContent::NewLC(uri);
+	value = expectedValue+1;
+	User::LeaveIfError(content->GetAttribute(attribute, value, uniqueId));
+	if(expectedValue != value )
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF3(_L("CContent::GetAttribute() Expected value: %d, actual value: %d"), expectedValue, value);
+		}
+	CleanupStack::PopAndDestroy(content);		    		
+	
+	// Open using file handle
+   	// cannot do if URI is unresolved - i.e. if it contains "Reference Test Agent" instead of actual private directory name
+   	if (!unresolvedUri) 
+		{
+		RFile file;
+		file.Open(iParent.Fs(), uri, EFileShareReadersOnly);		
+		content = CContent::NewLC(file);
+		file.Close();
+		value = expectedValue+1;
+		User::LeaveIfError(content->GetAttribute(attribute, value, uniqueId));
+		if(expectedValue != value)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF3(_L("CContent::GetAttribute() Expected value: %d, actual value: %d"), expectedValue, value);
+			}
+		CleanupStack::PopAndDestroy(content);		    		
+		}
+		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * Content attributeset step
+ *
+ */
+
+CCAFContentAttributeSetStep::~CCAFContentAttributeSetStep()
+	{
+	}
+
+CCAFContentAttributeSetStep::CCAFContentAttributeSetStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFContentAttributeSetStep);
+	}
+
+TVerdict CCAFContentAttributeSetStep::doTestStepL()
+	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    TBool wmdrmFlag = EFalse;     
+    GetBoolFromConfig(ConfigSection(),_L("wmdrmEnabled"), wmdrmFlag);     
+         
+    if(wmdrmFlag)     
+        {     
+        TVerdict verdict = doWmdrmTestStepL();     
+        return verdict;     
+        }     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+  
+	TInt value1;
+	TInt value2;
+	TInt expectedValue1;
+	TInt expectedValue2;
+	TInt attribute1;
+	TInt attribute2;
+	TInt result = KErrNone;
+	TInt unresolvedUri = EFalse;
+	TPtrC uri;
+	TPtrC uniqueId;
+
+	SetTestStepResult(EPass);
+
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetStringFromConfig(ConfigSection(),_L("uniqueid"),uniqueId);
+	GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1);
+	GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2);
+	GetIntFromConfig(ConfigSection(),_L("value1"),expectedValue1);
+	GetIntFromConfig(ConfigSection(),_L("value2"),expectedValue2);
+	GetIntFromConfig(ConfigSection(),_L("unresolveduri"),unresolvedUri);
+
+	__UHEAP_MARK;
+	// open using filename
+	CContent *content = CContent::NewLC(uri);
+	RAttributeSet attributeSet;
+	CleanupClosePushL(attributeSet);
+	attributeSet.AddL(attribute1);
+	attributeSet.AddL(attribute2);
+
+	if(uniqueId == KDefaultContentObject())
+		{
+		result = content->GetAttributeSet(attributeSet);
+		}
+	else
+		{
+		result = content->GetAttributeSet(attributeSet, uniqueId);
+		}
+	if(result != KErrNone)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF1(_L("CContent::GetAttribute() failed"));
+		}
+	
+	User::LeaveIfError(attributeSet.GetValue(attribute1, value1));
+	User::LeaveIfError(attributeSet.GetValue(attribute2, value2));
+	if(expectedValue1 != value1 || expectedValue2 != value2 || attributeSet.Count() != 2)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF1(_L("CContent::GetAttributeSet() values don't match expected values"));
+		}
+	CleanupStack::PopAndDestroy(&attributeSet);		
+	CleanupStack::PopAndDestroy(content);		
+    		
+   	// Open using file handle
+   	// cannot do if URI is unresolved - i.e. if it contains "Reference Test Agent" instead of actual private directory name
+   	if (!unresolvedUri) 
+		{
+		RFile file;
+		file.Open(iParent.Fs(), uri, EFileShareReadersOnly);		
+		content = CContent::NewLC(file);
+		file.Close(); 		
+	    		
+		CleanupClosePushL(attributeSet);
+		attributeSet.AddL(attribute1);
+		attributeSet.AddL(attribute2);
+
+		result = content->GetAttributeSet(attributeSet, uniqueId);
+		if(result != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF1(_L("CContent::GetAttribute() failed"));
+			}
+			
+		User::LeaveIfError(attributeSet.GetValue(attribute1, value1));
+		User::LeaveIfError(attributeSet.GetValue(attribute2, value2));
+		if(expectedValue1 != value1 || expectedValue2 != value2 || attributeSet.Count() != 2)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF1(_L("CContent::GetAttributeSet() values don't match expected values"));
+			}
+		CleanupStack::PopAndDestroy(&attributeSet);		
+		CleanupStack::PopAndDestroy(content);		
+	   	}
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+/* 
+ * Content string attribute step
+ *
+ */
+
+CCAFContentStringAttributeStep::~CCAFContentStringAttributeStep()
+	{
+	}
+
+CCAFContentStringAttributeStep::CCAFContentStringAttributeStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFContentStringAttributeStep);
+	}
+
+TVerdict CCAFContentStringAttributeStep::doTestStepL()
+	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    TBool wmdrmFlag = EFalse;     
+    GetBoolFromConfig(ConfigSection(),_L("wmdrmEnabled"), wmdrmFlag);     
+         
+    if(wmdrmFlag)     
+        {     
+        TVerdict verdict = doWmdrmTestStepL();     
+        return verdict;     
+        }     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
+	TInt expectedResult;
+	TInt attribute;
+	TInt unresolvedUri = EFalse;
+	TPtrC expectedValue;
+	TBuf <200> value;
+	TInt result = KErrNone;
+	TPtrC uri;
+	TPtrC uniqueId;
+
+	SetTestStepResult(EPass);
+
+	GetIntFromConfig(ConfigSection(),_L("attribute"),attribute);
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetStringFromConfig(ConfigSection(),_L("uniqueid"),uniqueId);
+	GetStringFromConfig(ConfigSection(),_L("value"),expectedValue);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+	GetIntFromConfig(ConfigSection(),_L("unresolveduri"),unresolvedUri);
+
+	__UHEAP_MARK;
+	
+	// Open using file name
+	CContent *content = CContent::NewLC(uri);
+	
+	if(uniqueId == KDefaultContentObject())
+		{
+		result = content->GetStringAttribute(attribute, value);
+		}
+	else
+		{
+		result = content->GetStringAttribute(attribute, value, uniqueId);
+		}
+	if(result != expectedResult)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF3(_L("CContent::GetStringAttribute() Expected result: %d, actual result: %d"), expectedResult, result);
+		}
+	if(value != expectedValue)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF3(_L("CContent::GetStringAttribute() Expected value: %S, actual result: %S"), &expectedValue, &value);
+		}
+
+	CleanupStack::PopAndDestroy(content);		
+
+   	// Open using file handle
+   	// cannot do if URI is unresolved - i.e. if it contains "Reference Test Agent" instead of actual private directory name
+   	if (!unresolvedUri) 
+	   	{
+		RFile file;
+		file.Open(iParent.Fs(), uri, EFileShareReadersOnly);		
+		content = CContent::NewLC(file);
+		file.Close(); 		
+
+		result = content->GetStringAttribute(attribute, value, uniqueId);
+		if(result != expectedResult)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF3(_L("CContent::GetStringAttribute() Expected result: %d, actual result: %d"), expectedResult, result);
+			}
+		else if(value != expectedValue)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF3(_L("CContent::GetStringAttribute() Expected value: %S, actual result: %S"), &expectedValue, &value);
+			}
+		CleanupStack::PopAndDestroy(content);		
+		}		
+
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * Content StringAttributeSet step
+ *
+ */
+
+CCAFContentStringAttributeSetStep::~CCAFContentStringAttributeSetStep()
+	{
+	}
+
+CCAFContentStringAttributeSetStep::CCAFContentStringAttributeSetStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFContentStringAttributeSetStep);
+	}
+
+TVerdict CCAFContentStringAttributeSetStep::doTestStepL()
+	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    TBool wmdrmFlag = EFalse;     
+    GetBoolFromConfig(ConfigSection(),_L("wmdrmEnabled"), wmdrmFlag);     
+         
+    if(wmdrmFlag)     
+        {     
+        TVerdict verdict = doWmdrmTestStepL();     
+        return verdict;     
+        }     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
+	TPtrC expectedValue1;
+	TPtrC expectedValue2;
+	TBuf <200> value1;
+	TBuf <200> value2;
+	TInt result1;
+	TInt result2;
+	TInt attribute1;
+	TInt attribute2;
+	TInt result = KErrNone;
+	TInt unresolvedUri = EFalse;
+	TPtrC uri;
+	TPtrC uniqueId;
+
+	SetTestStepResult(EPass);
+
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetStringFromConfig(ConfigSection(),_L("uniqueid"),uniqueId);
+	GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1);
+	GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2);
+	GetStringFromConfig(ConfigSection(),_L("value1"),expectedValue1);
+	GetStringFromConfig(ConfigSection(),_L("value2"),expectedValue2);
+	GetIntFromConfig(ConfigSection(),_L("result1"),result1);
+	GetIntFromConfig(ConfigSection(),_L("result2"),result2);
+	GetIntFromConfig(ConfigSection(),_L("unresolveduri"),unresolvedUri);
+
+	__UHEAP_MARK;
+	
+	// Open using file name
+	CContent *content = CContent::NewLC(uri);
+	RStringAttributeSet attributeSet;
+	CleanupClosePushL(attributeSet);
+	attributeSet.AddL(attribute1);
+	attributeSet.AddL(attribute2);
+	
+	if(uniqueId == KDefaultContentObject())
+		{
+		result = content->GetStringAttributeSet(attributeSet);	
+		}
+	else
+		{
+		result = content->GetStringAttributeSet(attributeSet, uniqueId);
+		}
+	if(result != KErrNone)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF1(_L("CContent::GetAttribute() failed"));
+		}
+	if(result1 != attributeSet.GetValue(attribute1, value1))
+		{
+		INFO_PRINTF1(_L("RStringAttributeSet::GetValue failed"));
+		}
+	if(result2 != attributeSet.GetValue(attribute2, value2))
+		{
+		INFO_PRINTF1(_L("RStringAttributeSet::GetValue failed"));
+		}
+	if(value1 != expectedValue1 || value2 != expectedValue2 || attributeSet.Count() != 2)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF1(_L("CContent::GetAttributeSet() values don't match expected values"));
+		}
+	CleanupStack::PopAndDestroy(&attributeSet);		
+	CleanupStack::PopAndDestroy(content);		
+	
+    		
+   	// Open using file handle
+   	// cannot do if URI is unresolved - i.e. if it contains "Reference Test Agent" instead of actual private directory name
+   	if (!unresolvedUri) 
+		{	
+		RFile file;
+		file.Open(iParent.Fs(), uri, EFileShareReadersOnly);		
+		content = CContent::NewLC(file);
+		file.Close(); 		
+
+		CleanupClosePushL(attributeSet);
+		attributeSet.AddL(attribute1);
+		attributeSet.AddL(attribute2);
+
+		result = content->GetStringAttributeSet(attributeSet, uniqueId);	
+			
+		if(result != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF1(_L("CContent::GetAttribute() failed"));
+			}
+
+		if(result1 != attributeSet.GetValue(attribute1, value1))
+			{
+			INFO_PRINTF1(_L("RStringAttributeSet::GetValue failed"));
+			}
+		if(result2 != attributeSet.GetValue(attribute2, value2))
+			{
+			INFO_PRINTF1(_L("RStringAttributeSet::GetValue failed"));
+			}
+		
+		if(value1 != expectedValue1 || value2 != expectedValue2 || attributeSet.Count() != 2)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF1(_L("CContent::GetAttributeSet() values don't match expected values"));
+			}
+		CleanupStack::PopAndDestroy(&attributeSet);		
+		CleanupStack::PopAndDestroy(content);		
+		}
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+
+/* 
+ * This step tests the notification functions
+ *
+ */
+
+CCAFContentNotifyStep::~CCAFContentNotifyStep()
+	{
+	}
+
+CCAFContentNotifyStep::CCAFContentNotifyStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFContentNotifyStep);
+	}
+
+
+TVerdict CCAFContentNotifyStep::doTestStepL()
+	{
+	TPtrC uri;
+	TInt result;
+	TRequestStatus status = KRequestPending;
+	
+	TInt Status1;
+	TInt Cancel1;
+	TInt Cancel2;
+	
+	
+	SetTestStepResult(EPass);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetIntFromConfig(ConfigSection(),_L("Status1"),Status1);
+	GetIntFromConfig(ConfigSection(),_L("Cancel1"),Cancel1);
+	GetIntFromConfig(ConfigSection(),_L("Cancel2"),Cancel2);
+
+	INFO_PRINTF2(_L("Performing notification tests on %S"), &uri);
+
+	__UHEAP_MARK;
+	CContent *content = CContent::NewLC(uri);
+	// Wait for rights 
+	content->NotifyStatusChange(ERightsAvailable, status);
+	User::WaitForRequest(status);
+	if(status.Int() != Status1)
+		{
+		INFO_PRINTF3(_L("Status expected: %d returned unexpected status %d"), Status1, status.Int());
+		SetTestStepResult(EFail);
+		}
+	result = content->CancelNotifyStatusChange(status);
+	if(result != Cancel1)
+		{
+		INFO_PRINTF3(_L("Cancel request expected return value: %d returned unexpected value %d"), Cancel1, result);
+		SetTestStepResult(EFail);
+		}
+	
+	// Wait for rights expired but cancel before they arrive
+	content->NotifyStatusChange(ERightsExpired, status);
+	result = content->CancelNotifyStatusChange(status);
+	if(result != Cancel2)
+		{
+		INFO_PRINTF3(_L("Cancel2 request expected return value: %d returned unexpected value %d"), Cancel2, result);
+		SetTestStepResult(EFail);
+		}
+	
+	CleanupStack::PopAndDestroy(content);
+	
+   		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * This step sets a property in the agents
+ *
+ */
+
+CCAFContentSetPropertyStep::~CCAFContentSetPropertyStep()
+	{
+	}
+
+CCAFContentSetPropertyStep::CCAFContentSetPropertyStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFContentSetPropertyStep);
+	}
+
+
+TVerdict CCAFContentSetPropertyStep::doTestStepL()
+	{
+	TInt expectedResult;
+	TInt result;
+	TPtrC uri;
+
+	SetTestStepResult(EFail);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF2(_L("Set Property expected result: %d"), expectedResult);
+
+	__UHEAP_MARK;
+
+	CContent *content = CContent::NewLC(uri);
+	result = content->SetProperty(EAgentPropertyBufferSize, 100);
+	CleanupStack::PopAndDestroy(content);
+	
+	if(result == expectedResult)
+		{	
+		SetTestStepResult(EPass);
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("SetProperty() returned with unexpected error: %d"), result);
+		}
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+/* 
+ * This step asks the agent to display information about a file
+ *
+ */
+
+CCAFContentDisplayInfoStep::~CCAFContentDisplayInfoStep()
+	{
+	}
+
+CCAFContentDisplayInfoStep::CCAFContentDisplayInfoStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFContentDisplayInfoStep);
+	}
+
+
+TVerdict CCAFContentDisplayInfoStep::doTestStepL()
+	{
+	TPtrC uri;
+	TInt expectedResult;
+	TInt result;
+
+	SetTestStepResult(EFail);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF3(_L("DisplayInfo for %S expected result: %d"), &uri, expectedResult);
+
+	__UHEAP_MARK;
+
+	CContent *content = CContent::NewLC(uri);
+	TRAP(result, content->DisplayInfoL(EFileProperties));
+	CleanupStack::PopAndDestroy(content);
+	
+	if(result == expectedResult)
+		{	
+		SetTestStepResult(EPass);
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("DisplayInfoL() left with unexpected error: %d"), result);
+		}
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * This step attempts to perform an agent specific command
+ *
+ */
+
+CCAFContentAgentSpecificStep::~CCAFContentAgentSpecificStep()
+	{
+	}
+
+CCAFContentAgentSpecificStep::CCAFContentAgentSpecificStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFContentAgentSpecificStep);
+	}
+
+
+TVerdict CCAFContentAgentSpecificStep::doTestStepL()
+	{
+	TPtrC input16;
+	TPtrC output16;
+	TPtrC uri;
+	TInt expectedResult;
+	TInt command;
+	TInt result;
+	TBuf8 <100> actualOutput;
+	TBuf8 <100> output;
+	TBuf8 <100> input;
+
+
+	SetTestStepResult(EPass);
+
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetIntFromConfig(ConfigSection(),_L("command"),command);
+	GetStringFromConfig(ConfigSection(),_L("input"),input16);
+	GetStringFromConfig(ConfigSection(),_L("output"),output16);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	input.Copy(input16);
+	output.Copy(output16);
+
+	__UHEAP_MARK;
+	CContent *content = CContent::NewLC(uri);
+
+	INFO_PRINTF1(_L("Running synchronous Agent specific command"));
+	actualOutput.SetLength(0);
+	result = content->AgentSpecificCommand(command, input, actualOutput);
+	if(result != expectedResult)
+		{	
+		SetTestStepResult(EFail);
+		INFO_PRINTF3(_L("Async Expected result: %d, actual result: %d"), expectedResult, result);
+		}
+	else if(actualOutput != output)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF3(_L("Async Expected output: %S, actual output: %S"), &output, &actualOutput);
+		}
+
+	INFO_PRINTF1(_L("Running asynchronous Agent specific command"));
+	TRequestStatus status;
+	actualOutput.SetLength(0);
+	content->AgentSpecificCommand(command, input, actualOutput, status);
+	User::WaitForRequest(status);
+	if(status.Int() != expectedResult)
+		{	
+		SetTestStepResult(EFail);
+		INFO_PRINTF3(_L("Async Expected result: %d, actual result: %d"), expectedResult, status.Int());
+		}
+	else if(actualOutput != output)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF3(_L("Async Expected output: %S, actual output: %S"), &output, &actualOutput);
+		}
+	
+	CleanupStack::PopAndDestroy(content);		
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+/* 
+ * This step tests the rights request functions
+ *
+ */
+
+CCAFContentRequestRightsStep::~CCAFContentRequestRightsStep()
+	{
+	}
+
+CCAFContentRequestRightsStep::CCAFContentRequestRightsStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFContentRequestRightsStep);
+	}
+
+
+TVerdict CCAFContentRequestRightsStep::doTestStepL()
+	{
+	TPtrC uri;
+	TInt result;
+	TRequestStatus status = KRequestPending;
+	
+	TInt Status1;
+	TInt Cancel1;
+	TInt Cancel2;
+	
+	
+	SetTestStepResult(EPass);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetIntFromConfig(ConfigSection(),_L("Status1"),Status1);
+	GetIntFromConfig(ConfigSection(),_L("Cancel1"),Cancel1);
+	GetIntFromConfig(ConfigSection(),_L("Cancel2"),Cancel2);
+
+	INFO_PRINTF2(_L("Performing Request Rights tests on %S"), &uri);
+
+	__UHEAP_MARK;
+	CContent *content = CContent::NewLC(uri);
+	// Wait for rights 
+	content->RequestRights(status);
+	User::WaitForRequest(status);
+	if(status.Int() != Status1)
+		{
+		INFO_PRINTF3(_L("Status expected: %d returned unexpected status %d"), Status1, status.Int());
+		SetTestStepResult(EFail);
+		}
+	result = content->CancelRequestRights(status);
+	if(result != Cancel1)
+		{
+		INFO_PRINTF3(_L("Cancel request expected return value: %d returned unexpected value %d"), Cancel1, result);
+		SetTestStepResult(EFail);
+		}
+	
+	// Wait for rights expired but cancel before they arrive
+	content->RequestRights(status);
+	result = content->CancelRequestRights(status);
+	if(result != Cancel2)
+		{
+		INFO_PRINTF3(_L("Cancel2 request expected return value: %d returned unexpected value %d"), Cancel2, result);
+		SetTestStepResult(EFail);
+		}
+	
+	CleanupStack::PopAndDestroy(content);
+	
+   		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+
+/* 
+ * This step tests the rights request functions
+ *
+ */
+
+CCAFContentEmbeddedObjectsStep::~CCAFContentEmbeddedObjectsStep()
+	{
+	}
+
+CCAFContentEmbeddedObjectsStep::CCAFContentEmbeddedObjectsStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFContentEmbeddedObjectsStep);
+	}
+
+
+TVerdict CCAFContentEmbeddedObjectsStep::doTestStepL()
+	{
+	TPtrC uri;
+	TInt expectedCount;
+	TInt expectedResult;
+	
+	SetTestStepResult(EPass);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetIntFromConfig(ConfigSection(),_L("count"),expectedCount);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF2(_L("Finding embedded objects within %S"), &uri);
+
+	__UHEAP_MARK;
+	CContent *content = CContent::NewLC(uri);
+
+	RStreamablePtrArray <CEmbeddedObject> array;
+	CleanupClosePushL(array);
+
+	// Wait for rights
+	TRAPD(result, content->GetEmbeddedObjectsL(array));
+	if(result != expectedResult)
+		{
+		INFO_PRINTF3(_L("GetEmbeddedObjectsL() returned result of %d, expected %d"), result, expectedResult);
+		SetTestStepResult(EFail);
+		}
+	
+	if((result == KErrNone) && (array.Count() != expectedCount))
+			{
+			INFO_PRINTF3(_L("GetEmbeddedObjectsL() found %d objects, expected %d"), array.Count(), expectedCount);
+			SetTestStepResult(EFail);
+			}
+
+	CleanupStack::PopAndDestroy(&array);	
+	CleanupStack::PopAndDestroy(content);
+	
+   		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * This step tests the rights request functions
+ *
+ */
+
+CCAFContentEmbeddedObjectTypeStep::~CCAFContentEmbeddedObjectTypeStep()
+	{
+	}
+
+CCAFContentEmbeddedObjectTypeStep::CCAFContentEmbeddedObjectTypeStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFContentEmbeddedObjectTypeStep);
+	}
+
+
+TVerdict CCAFContentEmbeddedObjectTypeStep::doTestStepL()
+	{
+	TPtrC uri;
+	TInt expectedContent;
+	TInt expectedContainers;
+	TInt expectedContainerResult;
+	TInt expectedContentResult;
+
+	SetTestStepResult(EPass);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetIntFromConfig(ConfigSection(),_L("contentcount"),expectedContent);
+	GetIntFromConfig(ConfigSection(),_L("containercount"),expectedContainers);
+	GetIntFromConfig(ConfigSection(),_L("containerresult"),expectedContainerResult);
+	GetIntFromConfig(ConfigSection(),_L("contentresult"),expectedContentResult);
+
+	INFO_PRINTF2(_L("Finding embedded objects within %S"), &uri);
+
+	__UHEAP_MARK;
+	CContent *content = CContent::NewLC(uri);
+
+	RStreamablePtrArray <CEmbeddedObject> array;
+	CleanupClosePushL(array);
+
+	// get embedded objects
+	TRAPD(result, content->GetEmbeddedObjectsL(array, EContainerObject));
+
+	if(result != expectedContainerResult)
+		{
+		INFO_PRINTF3(_L("GetEmbeddedObjectsL() returned result of %d, expected %d"), result, expectedContainerResult);
+		SetTestStepResult(EFail);
+		}
+
+	if((result == KErrNone) && (array.Count() != expectedContainers))
+		{
+		INFO_PRINTF3(_L("GetEmbeddedObjectsL() found %d container objects, expected %d"), array.Count(), expectedContainers);
+		SetTestStepResult(EFail);
+		}
+
+	// clear array
+	array.ResetAndDestroy();
+	
+	// get embedded objects
+	TRAP(result, content->GetEmbeddedObjectsL(array, EContentObject));
+
+	if(result != expectedContentResult)
+		{
+		INFO_PRINTF3(_L("GetEmbeddedObjectsL() returned result of %d, expected %d"), result, expectedContentResult);
+		SetTestStepResult(EFail);
+		}
+
+	if((result == KErrNone) && (array.Count() != expectedContent))
+		{
+		INFO_PRINTF3(_L("GetEmbeddedObjectsL() found %d content objects, expected %d"), array.Count(), expectedContent);
+		SetTestStepResult(EFail);
+		}
+
+
+	CleanupStack::PopAndDestroy(&array);	
+	CleanupStack::PopAndDestroy(content);
+	
+   		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * This step tests the rights request functions
+ *
+ */
+
+CCAFContentSearchStep::~CCAFContentSearchStep()
+	{
+	}
+
+CCAFContentSearchStep::CCAFContentSearchStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFContentSearchStep);
+	}
+
+
+TVerdict CCAFContentSearchStep::doTestStepL()
+	{
+	TPtrC uri;
+	TPtrC mimeType16;
+	TInt result;
+	TInt expectedCount;
+	TInt expectedResult;
+	TBuf8 <255> mimeType8;
+	
+	SetTestStepResult(EPass);
+
+	// Find the file, mimetype, expected return code and expected count from the INI file
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetIntFromConfig(ConfigSection(),_L("count"),expectedCount);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+	GetStringFromConfig(ConfigSection(),_L("mimetype"),mimeType16);
+
+	mimeType8.Copy(mimeType16);
+
+	INFO_PRINTF3(_L("Search for embedded %S objects within %S"), &mimeType16, &uri);
+
+	__UHEAP_MARK;
+	CContent *content = CContent::NewLC(uri);
+
+	RStreamablePtrArray <CEmbeddedObject> array;
+	CleanupClosePushL(array);
+
+	// get embedded objects
+	result = content->Search(array, mimeType8, ETrue);
+	
+	if(result != expectedResult)
+		{
+		INFO_PRINTF3(_L("Search() return value %d, expected %d"), result, expectedResult);
+		SetTestStepResult(EFail);
+		}
+	
+	if(array.Count() != expectedCount)
+		{
+		INFO_PRINTF3(_L("Search() found %d objects, expected %d"), array.Count(), expectedCount);
+		SetTestStepResult(EFail);
+		}
+
+	CleanupStack::PopAndDestroy(&array);	
+	CleanupStack::PopAndDestroy(content);
+	
+   		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * This step tests the container open/close functions
+ *
+ */
+
+CCAFContentContainerStep::~CCAFContentContainerStep()
+	{
+	}
+
+CCAFContentContainerStep::CCAFContentContainerStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFContentContainerStep);
+	}
+
+
+TVerdict CCAFContentContainerStep::doTestStepL()
+	{
+	TPtrC uri;
+	TPtrC uniqueId;
+	TInt result;
+	TInt openResult;
+	TInt closeResult;
+	
+	
+	SetTestStepResult(EPass);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetStringFromConfig(ConfigSection(),_L("uniqueId"),uniqueId);
+	GetIntFromConfig(ConfigSection(),_L("openResult"),openResult);
+	GetIntFromConfig(ConfigSection(),_L("closeResult"),closeResult);
+
+	INFO_PRINTF2(_L("Opening embedded container within %S"), &uri);
+
+	__UHEAP_MARK;
+	CContent *content = CContent::NewLC(uri);
+
+	result = content->OpenContainer(uniqueId);
+	if(result != openResult)
+		{
+		SetTestStepResult(EFail);	
+		INFO_PRINTF3(_L("OpenContainer() returned %d, expected %d"), result, openResult);
+		}
+	result = content->CloseContainer();
+	if(result != closeResult)
+		{
+		SetTestStepResult(EFail);	
+		INFO_PRINTF3(_L("CloseContainer() returned %d, expected %d"), result, closeResult);
+		}
+	CleanupStack::PopAndDestroy(content);
+   		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+      
+// The following methods test the various content attribute APIs for WMDRM content.     
+      
+TVerdict CCAFContentAttributeStep::doWmdrmTestStepL()     
+    {     
+    SetTestStepResult(EFail);     
+         
+    TInt attribVal;     
+    GetIntFromConfig(ConfigSection(),_L("attribute"), attribVal);     
+         
+    TInt expectedValue;     
+    GetIntFromConfig(ConfigSection(),_L("value"), expectedValue);     
+      
+__UHEAP_MARK;     
+    TPtrC header;     
+    HBufC8* headerData = NULL;     
+         
+    if(GetStringFromConfig(ConfigSection(),_L("header"), header))     
+        {     
+        headerData = ConvertDes16toHBufC8LC(header);     
+        }     
+    else     
+        {     
+        headerData = CreateWmdrmHeaderLC();      
+        }     
+             
+    CContent *content = CContent::NewLC(*headerData);     
+    TInt value;     
+    User::LeaveIfError(content->GetAttribute(attribVal, value));     
+         
+    if(expectedValue == value)     
+        {     
+        SetTestStepResult(EPass);     
+        }     
+    else     
+        {     
+        INFO_PRINTF3(_L("CContent::GetAttribute() Expected value: %d, actual value: %d"), expectedValue, value);     
+        }     
+         
+    CleanupStack::PopAndDestroy(2, headerData);                      
+__UHEAP_MARKEND;     
+      
+    return TestStepResult();     
+    }     
+         
+      
+TVerdict CCAFContentAttributeSetStep::doWmdrmTestStepL()     
+    {     
+    SetTestStepResult(EFail);     
+         
+    TInt attribute1;     
+    GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1);     
+         
+    TInt attribute2;     
+    GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2);     
+         
+    TInt expectedValue1;     
+    GetIntFromConfig(ConfigSection(),_L("value1"),expectedValue1);     
+         
+    TInt expectedValue2;     
+    GetIntFromConfig(ConfigSection(),_L("value2"),expectedValue2);     
+      
+__UHEAP_MARK;     
+      
+    TPtrC header;     
+    HBufC8* headerData = NULL;     
+         
+    if(GetStringFromConfig(ConfigSection(),_L("header"), header))     
+        {     
+        headerData = ConvertDes16toHBufC8LC(header);     
+        }     
+    else     
+        {     
+        headerData = CreateWmdrmHeaderLC();      
+        }     
+         
+    CContent *content = CContent::NewLC(*headerData);     
+                     
+    RAttributeSet attributeSet;     
+    CleanupClosePushL(attributeSet);     
+    attributeSet.AddL(attribute1);     
+    attributeSet.AddL(attribute2);     
+             
+    TInt result = content->GetAttributeSet(attributeSet);     
+    if(result == KErrNone)     
+        {     
+        TInt value1;         
+        User::LeaveIfError(attributeSet.GetValue(attribute1, value1));     
+             
+        TInt value2;     
+        User::LeaveIfError(attributeSet.GetValue(attribute2, value2));     
+             
+        if(expectedValue1 == value1 && expectedValue2 == value2 && attributeSet.Count() == 2)     
+            {     
+            SetTestStepResult(EPass);     
+            }     
+        else     
+            {     
+            INFO_PRINTF1(_L("CContent::GetAttributeSet() values don't match expected values"));     
+            }     
+        }     
+         
+    else     
+        {     
+        INFO_PRINTF1(_L("CContent::GetAttributeSet() failed"));     
+        }     
+             
+    CleanupStack::PopAndDestroy(3, headerData);          
+         
+__UHEAP_MARKEND;     
+      
+    return TestStepResult();     
+    }     
+      
+      
+TVerdict CCAFContentStringAttributeStep::doWmdrmTestStepL()     
+    {     
+    SetTestStepResult(EFail);     
+         
+    TInt attribVal;     
+    GetIntFromConfig(ConfigSection(),_L("attribute"),attribVal);     
+         
+    TPtrC expectedValue;     
+    GetStringFromConfig(ConfigSection(),_L("value"),expectedValue);     
+         
+    TInt expectedResult;     
+    GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);     
+         
+__UHEAP_MARK;     
+    TPtrC header;     
+    HBufC8* headerData = NULL;     
+         
+    if(GetStringFromConfig(ConfigSection(),_L("header"), header))     
+        {     
+        headerData = ConvertDes16toHBufC8LC(header);     
+        }     
+    else     
+        {     
+        headerData = CreateWmdrmHeaderLC();      
+        }     
+         
+    CContent *content = CContent::NewLC(*headerData);     
+                 
+    TBuf <200> value;     
+    TInt result = content->GetStringAttribute(attribVal, value);     
+    if(result == expectedResult && value == expectedValue)     
+        {     
+        SetTestStepResult(EPass);     
+        }     
+    else     
+        {     
+        INFO_PRINTF3(_L("CContent::GetStringAttribute() Expected result: %d, actual result: %d"), expectedResult, result);     
+        INFO_PRINTF3(_L("CContent::GetStringAttribute() Expected value: %S, actual value: %S"), &expectedValue, &value);     
+        }     
+             
+    CleanupStack::PopAndDestroy(2, headerData);          
+             
+__UHEAP_MARKEND;     
+      
+    return TestStepResult();     
+    }     
+      
+      
+TVerdict CCAFContentStringAttributeSetStep::doWmdrmTestStepL()     
+    {     
+    SetTestStepResult(EFail);     
+      
+    TInt attribute1;         
+    GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1);     
+         
+    TInt attribute2;     
+    GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2);     
+         
+    TPtrC expectedValue1;     
+    GetStringFromConfig(ConfigSection(),_L("value1"),expectedValue1);     
+         
+    TPtrC expectedValue2;     
+    GetStringFromConfig(ConfigSection(),_L("value2"),expectedValue2);     
+         
+__UHEAP_MARK;     
+    TPtrC header;     
+    HBufC8* headerData = NULL;     
+         
+    if(GetStringFromConfig(ConfigSection(),_L("header"), header))     
+        {     
+        headerData = ConvertDes16toHBufC8LC(header);     
+        }     
+    else     
+        {     
+        headerData = CreateWmdrmHeaderLC();      
+        }     
+         
+    CContent *content = CContent::NewLC(*headerData);     
+         
+    RStringAttributeSet attributeSet;     
+    CleanupClosePushL(attributeSet);     
+    attributeSet.AddL(attribute1);     
+    attributeSet.AddL(attribute2);     
+             
+    TInt result = content->GetStringAttributeSet(attributeSet);     
+    TBuf <200> value1;     
+    TBuf <200> value2;     
+    if(result == KErrNone)     
+        {     
+        TInt result3 = attributeSet.GetValue(attribute1, value1);     
+        TInt result4 = attributeSet.GetValue(attribute2, value2);     
+                 
+        if(value1 == expectedValue1 && value2 == expectedValue2 && attributeSet.Count() == 2     
+         && result3 == KErrNone && result4 == KErrNone)     
+            {     
+            SetTestStepResult(EPass);     
+            }     
+        else     
+            {     
+            INFO_PRINTF3(_L("RStringAttributeSet::GetValue() for attribute1.Expected value: %S, actual value: %S"), &expectedValue1, &value1);     
+            INFO_PRINTF3(_L("RStringAttributeSet::GetValue() for attribute2.Expected value: %S, actual value: %S"), &expectedValue2, &value2);     
+            INFO_PRINTF3(_L("RStringAttributeSet::GetValue() for attribute1. Expected result: %d, actual result: %d"), 0, result3);     
+            INFO_PRINTF3(_L("RStringAttributeSet::GetValue() for attribute2. Expected result: %d, actual result: %d"), 0, result4);      
+            }     
+        }     
+    else     
+        {     
+        INFO_PRINTF1(_L("CContent::GetStringAttributeSet() failed"));     
+        }        
+         
+    CleanupStack::PopAndDestroy(3, headerData);          
+      
+__UHEAP_MARKEND;     
+      
+    return TestStepResult();     
+    }     
+      
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/ManagerStep.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,1860 @@
+/*
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <test/testexecutelog.h>
+#include <apmstd.h>
+
+#include "cafserver.h"
+#include "ManagerStep.h"
+#include "manager.h"
+#include "dirstreamable.h"
+#include "virtualpathptr.h"
+#include "agent.h"
+#include "attributeset.h"
+#include "stringattributeset.h"
+#include "contentIterator.h"
+
+using namespace ContentAccess;
+
+
+
+/* 
+ * This step deletes a file using the CAF framework
+ *
+ */
+
+CCAFDeleteStep::~CCAFDeleteStep()
+	{
+	}
+
+CCAFDeleteStep::CCAFDeleteStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFDeleteStep);
+	}
+
+
+TVerdict CCAFDeleteStep::doTestStepL()
+	{
+	TPtrC fileName;
+
+	TInt expectedResult;
+	TInt result;
+
+	SetTestStepResult(EFail);
+
+	// Find the file to delete and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("filename"),fileName);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF3(_L("Delete File %S Expected result: %d"), &fileName, expectedResult);
+
+	__UHEAP_MARK;
+
+	TRAP(result, CManager::DeleteFileL(fileName));
+
+	if(result != KErrNone)
+		{
+		INFO_PRINTF2(_L("Delete file left: %d"), result);
+		if(result== expectedResult)
+			{
+			SetTestStepResult(EPass);
+			}
+		}
+	else if(result == expectedResult)
+		{	
+		SetTestStepResult(EPass);
+		}
+	else INFO_PRINTF2(_L("Delete file left with error: %d"), result);
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+/* 
+ * This step copies a file using the CAF framework
+ *
+ */
+
+CCAFCopyFileStep::~CCAFCopyFileStep()
+	{
+	}
+
+CCAFCopyFileStep::CCAFCopyFileStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFCopyFileStep);
+	}
+
+
+TVerdict CCAFCopyFileStep::doTestStepL()
+	{
+	TPtrC source;
+	TPtrC destination;
+
+	TInt expectedResult;
+	TInt result;
+
+	SetTestStepResult(EFail);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("source"),source);
+	GetStringFromConfig(ConfigSection(),_L("destination"),destination);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF4(_L("Copy %S to %S, Expected result: %d"), &source, &destination, expectedResult);
+
+	__UHEAP_MARK;
+
+	CManager *manager = CManager::NewLC();
+
+	result = manager->CopyFile(source, destination);
+	if(result == expectedResult)
+		{
+		SetTestStepResult(EPass);			
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("CopyFile(source as filename overload) returned with unexpected error: %d"), result);
+		}
+	// set up 2nd overload testing
+	RFs fs;
+	RFile file;
+
+	// read the input file and pass it to the CAF
+	fs.Connect();
+	CleanupClosePushL(fs);
+	User::LeaveIfError(fs.ShareProtected());		
+
+	result = file.Open(fs, source, EFileRead | EFileStream | EFileShareAny);
+	if (result == KErrNone)
+		{
+		CleanupClosePushL(file);
+		
+		// test the RFile overload
+		result = manager->CopyFile(file, destination);
+		
+		if ((result == expectedResult)&&(TestStepResult()==EPass))
+			{
+			SetTestStepResult(EPass);			
+			}
+		else 
+			{
+			INFO_PRINTF2(_L("CopyFile(source as RFile handle overload) returned with unexpected error: %d"), result);
+			}
+			
+		CleanupStack::PopAndDestroy(&file); 
+		
+		}
+	else if ((result == expectedResult)&&(TestStepResult()==EPass))
+		{
+		SetTestStepResult(EPass);			
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("CopyFile(source as RFile handle overload) returned with unexpected error: %d"), result);
+		}
+		
+	CleanupStack::PopAndDestroy(&fs); 
+
+	CleanupStack::PopAndDestroy(manager);
+	    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+/* 
+ * This step renames a file using the CAF framework
+ *
+ */
+
+CCAFRenameFileStep::~CCAFRenameFileStep()
+	{
+	}
+
+CCAFRenameFileStep::CCAFRenameFileStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFRenameFileStep);
+	}
+
+
+TVerdict CCAFRenameFileStep::doTestStepL()
+	{
+	TPtrC source;
+	TPtrC destination;
+
+	TInt expectedResult;
+	TInt result;
+
+	SetTestStepResult(EFail);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("source"),source);
+	GetStringFromConfig(ConfigSection(),_L("destination"),destination);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF4(_L("Rename from %S to %S, Expected result: %d"), &source, &destination, expectedResult);
+
+	__UHEAP_MARK;
+
+	CManager *manager = CManager::NewLC();
+	result = manager->RenameFile(source, destination);
+	CleanupStack::PopAndDestroy(manager);
+	
+	if(result == expectedResult)
+		{	
+		SetTestStepResult(EPass);
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("RenameFile() returned with unexpected error: %d"), result);
+		}
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+/* 
+ * This step creates a directory using the CAF framework
+ *
+ */
+
+CCAFMkDirStep::~CCAFMkDirStep()
+	{
+	}
+
+CCAFMkDirStep::CCAFMkDirStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFMkDirStep);
+	}
+
+
+TVerdict CCAFMkDirStep::doTestStepL()
+	{
+	TPtrC path;
+	TInt expectedResult;
+	TInt result;
+
+	SetTestStepResult(EFail);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("path"),path);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF3(_L("Create directory %S, Expected result: %d"), &path, expectedResult);
+
+	__UHEAP_MARK;
+
+	CManager *manager = CManager::NewLC();
+	result = manager->MkDir(path);
+	CleanupStack::PopAndDestroy(manager);
+	
+	if(result == expectedResult)
+		{	
+		SetTestStepResult(EPass);
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("MkDir() returned with unexpected error: %d"), result);
+		}
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+/* 
+ * This step creates several directory using the CAF framework
+ *
+ */
+
+CCAFMkDirAllStep::~CCAFMkDirAllStep()
+	{
+	}
+
+CCAFMkDirAllStep::CCAFMkDirAllStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFMkDirAllStep);
+	}
+
+
+TVerdict CCAFMkDirAllStep::doTestStepL()
+	{
+	TPtrC path;
+	TInt expectedResult;
+	TInt result;
+
+	SetTestStepResult(EFail);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("path"),path);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF3(_L("Create directory %S, Expected result: %d"), &path, expectedResult);
+
+	__UHEAP_MARK;
+
+	CManager *manager = CManager::NewLC();
+	// remove directory in case it already exists
+	manager->RmDir(path);
+	result = manager->MkDirAll(path);
+	CleanupStack::PopAndDestroy(manager);
+	
+	if(result == expectedResult)
+		{	
+		SetTestStepResult(EPass);
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("MkDirAll() returned with unexpected error: %d"), result);
+		}
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * This step removes a directory using the CAF framework
+ *
+ */
+
+CCAFRmDirStep::~CCAFRmDirStep()
+	{
+	}
+
+CCAFRmDirStep::CCAFRmDirStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFRmDirStep);
+	}
+
+
+TVerdict CCAFRmDirStep::doTestStepL()
+	{
+	TPtrC path;
+	TInt expectedResult;
+	TInt result;
+
+	SetTestStepResult(EFail);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("path"),path);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF3(_L("Remove directory %S, Expected result: %d"), &path, expectedResult);
+
+	__UHEAP_MARK;
+
+	CManager *manager = CManager::NewLC();
+	result = manager->RmDir(path);
+	CleanupStack::PopAndDestroy(manager);
+	
+	if(result == expectedResult)
+		{	
+		SetTestStepResult(EPass);
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("RmDir() returned with unexpected error: %d"), result);
+		}
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * This step lists the contents of a directory using the CAF framework
+ *
+ */
+
+CCAFGetDirStep::~CCAFGetDirStep()
+	{
+	}
+
+CCAFGetDirStep::CCAFGetDirStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFGetDirStep);
+	}
+
+
+TVerdict CCAFGetDirStep::doTestStepL()
+	{
+	TPtrC path;
+	TInt expectedResult;
+	TInt result;
+	TInt GetDirAPI = 0;
+
+	CDir *entrylist = NULL;
+	CDir *dirlist = NULL;
+	CDir *filelist = NULL;
+
+
+	SetTestStepResult(EFail);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("path"),path);
+	GetIntFromConfig(ConfigSection(),_L("API"),GetDirAPI);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF3(_L("List contents of directory %S, Expected result: %d"), &path, expectedResult);
+
+	__UHEAP_MARK;
+
+	CManager *manager = CManager::NewLC();
+	if(GetDirAPI == 1)
+		{
+		result = manager->GetDir(path,ESortByName, KEntryAttNormal, entrylist);
+		}
+	else if(GetDirAPI == 2)
+		{
+		result = manager->GetDir(path,ESortByName, KEntryAttNormal, entrylist, dirlist);
+		}
+	else
+		{
+		result = manager->GetDir(path,TUidType(), ESortByName, filelist);
+		}
+	CleanupStack::PopAndDestroy(manager);
+
+	if(entrylist)
+		{
+		INFO_PRINTF2(_L("%d items in EntryList:"), entrylist->Count());	
+		DisplayList(*entrylist);
+		delete entrylist;
+		entrylist = NULL;
+		}
+
+	if(dirlist)
+		{
+		INFO_PRINTF2(_L("%d items in DirList:"), dirlist->Count());	
+		DisplayList(*dirlist);
+		delete dirlist;
+		dirlist = NULL;
+		}
+	
+	if(filelist)
+		{
+		INFO_PRINTF2(_L("%d items in FileList:"), filelist->Count());	
+		DisplayList(*filelist);
+		delete filelist;
+		filelist = NULL;
+		}
+	
+	if(result == expectedResult)
+		{	
+		SetTestStepResult(EPass);
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("GetDir() returned with unexpected error: %d"), result);
+		}
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+void CCAFGetDirStep::DisplayList(CDir& aDir)
+	{
+	TInt i = 0;
+	for(i = 0; i < aDir.Count(); i++)
+		{
+		INFO_PRINTF2(_L("			%S"), &aDir[i].iName );	
+		}
+	}
+	
+	
+/* 
+ * This step tests the notification functions
+ *
+ */
+
+CCAFManagerNotifyStep::~CCAFManagerNotifyStep()
+	{
+	}
+
+CCAFManagerNotifyStep::CCAFManagerNotifyStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerNotifyStep);
+	}
+
+
+TVerdict CCAFManagerNotifyStep::doTestStepL()
+	{
+	TPtrC uri;
+	TInt result;
+	TRequestStatus status = KRequestPending;
+	
+	TInt Status1;
+	TInt Cancel1;
+	TInt Cancel2;
+	
+	
+	SetTestStepResult(EPass);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("path"),uri);
+	GetIntFromConfig(ConfigSection(),_L("Status1"),Status1);
+	GetIntFromConfig(ConfigSection(),_L("Cancel1"),Cancel1);
+	GetIntFromConfig(ConfigSection(),_L("Cancel2"),Cancel2);
+
+	INFO_PRINTF2(_L("Performing notification tests on %S"), &uri);
+
+	__UHEAP_MARK;
+	CManager *manager = CManager::NewLC();
+	// Wait for rights 
+	manager->NotifyStatusChange(uri, ERightsAvailable, status);
+	User::WaitForRequest(status);
+	if(status.Int() != Status1)
+		{
+		INFO_PRINTF3(_L("Status expected: %d returned unexpected status %d"), Status1, status.Int());
+		SetTestStepResult(EFail);
+		}
+	result = manager->CancelNotifyStatusChange(uri, status);
+	if(result != Cancel1)
+		{
+		INFO_PRINTF3(_L("Cancel request expected return value: %d returned unexpected value %d"), Cancel1, result);
+		SetTestStepResult(EFail);
+		}
+	
+	// Wait for rights expired but cancel before they arrive
+	manager->NotifyStatusChange(uri, ERightsExpired, status);
+	result = manager->CancelNotifyStatusChange(uri, status);
+	if(result != Cancel2)
+		{
+		INFO_PRINTF3(_L("Cancel2 request expected return value: %d returned unexpected value %d"), Cancel2, result);
+		SetTestStepResult(EFail);
+		}
+	
+	CleanupStack::PopAndDestroy(manager);
+	
+   		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * This step sets a property in the agents
+ *
+ */
+
+CCAFManagerSetPropertyStep::~CCAFManagerSetPropertyStep()
+	{
+	}
+
+CCAFManagerSetPropertyStep::CCAFManagerSetPropertyStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerSetPropertyStep);
+	}
+
+
+TVerdict CCAFManagerSetPropertyStep::doTestStepL()
+	{
+	TInt expectedResult;
+	TInt result;
+
+	SetTestStepResult(EFail);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF2(_L("Set Property expected result: %d"), expectedResult);
+
+	__UHEAP_MARK;
+
+	CManager *manager = CManager::NewLC();
+	result = manager->SetProperty(EAgentPropertyBufferSize, 100);
+	CleanupStack::PopAndDestroy(manager);
+	
+	// dummy test Agent expects KErrNotSupported
+	if(result == expectedResult || result == KErrNotSupported)
+		{	
+		SetTestStepResult(EPass);
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("SetProperty() returned with unexpected error: %d"), result);
+		}
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+/* 
+ * This step asks the agent to display information about a file
+ *
+ */
+
+CCAFManagerDisplayInfoStep::~CCAFManagerDisplayInfoStep()
+	{
+	}
+
+CCAFManagerDisplayInfoStep::CCAFManagerDisplayInfoStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerDisplayInfoStep);
+	}
+
+
+TVerdict CCAFManagerDisplayInfoStep::doTestStepL()
+	{
+	TPtrC uri;
+	TInt expectedResult;
+	TInt result;
+
+	SetTestStepResult(EFail);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF3(_L("DisplayInfo for %S expected result: %d"), &uri, expectedResult);
+
+	__UHEAP_MARK;
+
+	CManager *manager = CManager::NewLC();
+	TRAP(result, manager->DisplayInfoL(EFileProperties, TVirtualPathPtr(uri)));
+	CleanupStack::PopAndDestroy(manager);
+	
+	if(result == expectedResult)
+		{	
+		SetTestStepResult(EPass);
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("DisplayInfoL() left with unexpected error: %d"), result);
+		}
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * This step asks CAF for a list of agents
+ *
+ */
+
+CCAFManagerListAgentsStep::~CCAFManagerListAgentsStep()
+	{
+	}
+
+CCAFManagerListAgentsStep::CCAFManagerListAgentsStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerListAgentsStep);
+	}
+
+
+TVerdict CCAFManagerListAgentsStep::doTestStepL()
+	{
+	TPtrC uri;
+	TInt expectedResult;
+	TInt expectedNumber;
+	TInt result;
+
+	RArray <TAgent> agents;
+	
+	SetTestStepResult(EFail);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetIntFromConfig(ConfigSection(),_L("count"),expectedNumber);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF2(_L("List agents expected result: %d"), expectedResult);
+
+	__UHEAP_MARK;
+
+	CManager *manager = CManager::NewLC();
+	TRAP(result, manager->ListAgentsL(agents));
+	CleanupStack::PopAndDestroy(manager);
+	
+	TInt i = 0;
+	for (i = 0; i < agents.Count(); i++)
+		{
+		TPtrC agentName = agents[i].Name();
+		INFO_PRINTF2(_L("			%S"), &agentName);
+		}
+		
+	INFO_PRINTF2(_L("List agents expected result: %d"), expectedResult);
+
+	if(result == expectedResult)
+		{	
+		if(expectedNumber == agents.Count())
+			{
+			SetTestStepResult(EPass);
+			}
+		else
+			{
+			INFO_PRINTF2(_L("Expected number of agents: %d"), expectedNumber);
+			}
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("ListAgents left with unexpected error: %d"), result);
+		}
+		
+	agents.Close();
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * This step attempts to perform an agent specific command
+ *
+ */
+
+CCAFManagerAgentSpecificStep::~CCAFManagerAgentSpecificStep()
+	{
+	}
+
+CCAFManagerAgentSpecificStep::CCAFManagerAgentSpecificStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerAgentSpecificStep);
+	}
+
+
+TVerdict CCAFManagerAgentSpecificStep::doTestStepL()
+	{
+	TPtrC input16;
+	TPtrC output16;
+	TInt expectedResult;
+	TInt command;
+	TInt result;
+	TBuf8 <100> actualOutput;
+	TBuf8 <100> output;
+	TBuf8 <100> input;
+	TInt index = 0;
+
+	RArray <TAgent> agents;
+	_LIT(KTestAgentName, "Reference Test Agent");
+	
+	SetTestStepResult(EPass);
+
+	GetIntFromConfig(ConfigSection(),_L("command"),command);
+	GetStringFromConfig(ConfigSection(),_L("input"),input16);
+	GetStringFromConfig(ConfigSection(),_L("output"),output16);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	input.Copy(input16);
+	output.Copy(output16);
+
+	__UHEAP_MARK;
+	CManager *manager = CManager::NewLC();
+	TRAP(result, manager->ListAgentsL(agents));
+
+	INFO_PRINTF1(_L("Running synchronous Agent specific command"));
+	actualOutput.SetLength(0);
+	if(result == KErrNone && agents.Count() > 0)
+		{
+		for(index = 0; index < agents.Count(); index++)
+			{
+			if(agents[index].Name() == KTestAgentName())
+				{
+				break;
+				}
+			}
+		result = manager->AgentSpecificCommand(agents[index],command, input, actualOutput);
+		}
+	else
+		{
+		SetTestStepResult(EFail);
+		}
+	if(result != expectedResult)
+		{	
+		SetTestStepResult(EFail);
+		INFO_PRINTF3(_L("Async Expected result: %d, actual result: %d"), expectedResult, result);
+		}
+	else if(actualOutput != output)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF3(_L("Async Expected output: %S, actual output: %S"), &output, &actualOutput);
+		}
+
+	INFO_PRINTF1(_L("Running asynchronous Agent specific command"));
+	TRequestStatus status;
+	actualOutput.SetLength(0);
+	if((result == KErrNone || result == expectedResult) && agents.Count() > 0)
+		{
+		manager->AgentSpecificCommand(agents[index], command, input, actualOutput, status);
+		User::WaitForRequest(status);
+		}
+	else
+		{
+		SetTestStepResult(EFail);
+		}
+	if(status.Int() != expectedResult)
+		{	
+		SetTestStepResult(EFail);
+		INFO_PRINTF3(_L("Async Expected result: %d, actual result: %d"), expectedResult, status.Int());
+		}
+	else if(actualOutput != output)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF3(_L("Async Expected output: %S, actual output: %S"), &output, &actualOutput);
+		}
+	
+	CleanupStack::PopAndDestroy(manager);		
+	agents.Close();
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * This step attempts to display configuration information
+ *
+ */
+
+CCAFManagerDisplayConfigStep::~CCAFManagerDisplayConfigStep()
+	{
+	}
+
+CCAFManagerDisplayConfigStep::CCAFManagerDisplayConfigStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerDisplayConfigStep);
+	}
+
+TVerdict CCAFManagerDisplayConfigStep::doTestStepL()
+	{
+	TInt expectedResult;
+	TInt result = KErrNone;
+
+	RArray <TAgent> agents;
+	CManager *manager;
+
+	SetTestStepResult(EPass);
+
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	__UHEAP_MARK;
+	manager = CManager::NewL();
+	CleanupStack::PushL(manager);
+	TRAP(result, manager->ListAgentsL(agents));
+		
+	if(result == KErrNone && agents.Count() > 0)
+		{
+		TRAP(result, manager->DisplayManagementInfoL(agents[0]));
+		}
+	else
+		{
+		SetTestStepResult(EFail);
+		}
+	if(result != expectedResult && result != KErrNotSupported) // dummy test agent expects -5
+		{	
+		SetTestStepResult(EFail);
+		INFO_PRINTF3(_L("Expected result: %d, actual result: %d"), expectedResult, result);
+		}
+
+	CleanupStack::PopAndDestroy(manager);		
+	agents.Close();
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * Manager attribute step
+ *
+ */
+
+CCAFManagerAttributeStep::~CCAFManagerAttributeStep()
+	{
+	}
+
+CCAFManagerAttributeStep::CCAFManagerAttributeStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerAttributeStep);
+	}
+
+TVerdict CCAFManagerAttributeStep::doTestStepL()
+	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    TBool wmdrmFlag = EFalse;     
+    GetBoolFromConfig(ConfigSection(),_L("wmdrmEnabled"), wmdrmFlag);     
+         
+    if(wmdrmFlag)     
+        {     
+        TVerdict verdict = doWmdrmTestStepL();     
+        return verdict;     
+        }     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT    
+
+	TInt attribute;
+	TInt value = KErrNone;
+	TInt expectedValue;
+	TPtrC uri;
+	TPtrC uniqueId;
+
+	CManager *manager;
+
+	SetTestStepResult(EPass);
+
+	GetIntFromConfig(ConfigSection(),_L("attribute"),attribute);
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetStringFromConfig(ConfigSection(),_L("uniqueid"),uniqueId);
+	GetIntFromConfig(ConfigSection(),_L("value"),expectedValue);
+
+	__UHEAP_MARK;
+	manager = CManager::NewL();
+	if(manager)
+		{
+		CleanupStack::PushL(manager);
+		User::LeaveIfError(manager->GetAttribute(attribute, value, TVirtualPathPtr(uri, uniqueId)));
+		if(expectedValue!= value)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF3(_L("CManager::GetAttribute() Expected value: %d, actual value: %d"), expectedValue, value);
+			}
+		CleanupStack::PopAndDestroy(manager);		
+		}
+	else
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF1(_L("CManager construction failed"));
+		}
+	
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * Manager attributeset step
+ *
+ */
+
+CCAFManagerAttributeSetStep::~CCAFManagerAttributeSetStep()
+	{
+	}
+
+CCAFManagerAttributeSetStep::CCAFManagerAttributeSetStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerAttributeSetStep);
+	}
+
+TVerdict CCAFManagerAttributeSetStep::doTestStepL()
+	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    TBool wmdrmFlag = EFalse;     
+    GetBoolFromConfig(ConfigSection(),_L("wmdrmEnabled"), wmdrmFlag);     
+         
+    if(wmdrmFlag)     
+        {     
+        TVerdict verdict = doWmdrmTestStepL();     
+        return verdict;     
+        }     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT    
+
+	TInt value1;
+	TInt value2;
+	TInt expectedValue1;
+	TInt expectedValue2;
+	TInt attribute1;
+	TInt attribute2;
+	TInt result = KErrNone;
+	TPtrC uri;
+	TPtrC uniqueId;
+
+	CManager *manager;
+
+	SetTestStepResult(EPass);
+
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetStringFromConfig(ConfigSection(),_L("uniqueid"),uniqueId);
+	GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1);
+	GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2);
+	GetIntFromConfig(ConfigSection(),_L("value1"),expectedValue1);
+	GetIntFromConfig(ConfigSection(),_L("value2"),expectedValue2);
+
+	__UHEAP_MARK;
+	manager = CManager::NewL();
+	if(manager)
+		{
+		CleanupStack::PushL(manager);
+		RAttributeSet attributeSet;
+		CleanupClosePushL(attributeSet);
+		attributeSet.AddL(attribute1);
+		attributeSet.AddL(attribute2);
+		result = manager->GetAttributeSet(attributeSet, TVirtualPathPtr(uri, uniqueId));
+		if(result != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF1(_L("CManager::GetAttribute() failed"));
+			}
+		User::LeaveIfError(attributeSet.GetValue(attribute1, value1));
+		User::LeaveIfError(attributeSet.GetValue(attribute2, value2));
+		if(expectedValue1 != value1 || expectedValue2 != value2 || attributeSet.Count() != 2)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF1(_L("CManager::GetAttributeSet() values don't match expected values"));
+			}
+		CleanupStack::PopAndDestroy(&attributeSet);		
+		CleanupStack::PopAndDestroy(manager);		
+		}
+	else
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF1(_L("CManager construction failed"));
+		}
+	
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+/* 
+ * Manager string attribute step
+ *
+ */
+
+CCAFManagerStringAttributeStep::~CCAFManagerStringAttributeStep()
+	{
+	}
+
+CCAFManagerStringAttributeStep::CCAFManagerStringAttributeStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerStringAttributeStep);
+	}
+
+TVerdict CCAFManagerStringAttributeStep::doTestStepL()
+	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    TBool wmdrmFlag = EFalse;     
+    GetBoolFromConfig(ConfigSection(),_L("wmdrmEnabled"), wmdrmFlag);     
+         
+    if(wmdrmFlag)     
+        {     
+        TVerdict verdict = doWmdrmTestStepL();     
+        return verdict;     
+        }     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT        
+     
+	TInt expectedResult;
+	TInt attribute;
+	TPtrC expectedValue;
+	TBuf <200> value;
+	TInt result = KErrNone;
+	TPtrC uri;
+	TPtrC uniqueId;
+
+	CManager *manager;
+
+	SetTestStepResult(EPass);
+
+	GetIntFromConfig(ConfigSection(),_L("attribute"),attribute);
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetStringFromConfig(ConfigSection(),_L("uniqueid"),uniqueId);
+	GetStringFromConfig(ConfigSection(),_L("value"),expectedValue);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	__UHEAP_MARK;
+	manager = CManager::NewL();
+	if(manager)
+		{
+		CleanupStack::PushL(manager);
+		result = manager->GetStringAttribute(attribute, value, TVirtualPathPtr(uri, uniqueId));
+		if(result != expectedResult)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF3(_L("CManager::GetStringAttribute() Expected result: %d, actual result: %d"), expectedResult, result);
+			}
+		if(value != expectedValue)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF3(_L("CManager::GetStringAttribute() Expected value: %S, actual result: %S"), &expectedValue, &value);
+			}
+
+		CleanupStack::PopAndDestroy(manager);		
+		}
+	else
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF1(_L("CManager construction failed"));
+		}
+	
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * Manager StringAttributeSet step
+ *
+ */
+
+CCAFManagerStringAttributeSetStep::~CCAFManagerStringAttributeSetStep()
+	{
+	}
+
+CCAFManagerStringAttributeSetStep::CCAFManagerStringAttributeSetStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerStringAttributeSetStep);
+	}
+
+TVerdict CCAFManagerStringAttributeSetStep::doTestStepL()
+	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    TBool wmdrmFlag = EFalse;     
+    GetBoolFromConfig(ConfigSection(),_L("wmdrmEnabled"), wmdrmFlag);     
+         
+    if(wmdrmFlag)     
+        {     
+        TVerdict verdict = doWmdrmTestStepL();     
+        return verdict;     
+        }     
+#endif  //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+     
+	TPtrC expectedValue1;
+	TPtrC expectedValue2;
+	TBuf <200> value1;
+	TBuf <200> value2;
+	TInt result1;
+	TInt result2;
+	TInt attribute1;
+	TInt attribute2;
+	TInt result = KErrNone;
+	TPtrC uri;
+	TPtrC uniqueId;
+
+	CManager *manager;
+
+	SetTestStepResult(EPass);
+
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetStringFromConfig(ConfigSection(),_L("uniqueid"),uniqueId);
+	GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1);
+	GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2);
+	GetStringFromConfig(ConfigSection(),_L("value1"),expectedValue1);
+	GetStringFromConfig(ConfigSection(),_L("value2"),expectedValue2);
+	GetIntFromConfig(ConfigSection(),_L("result1"),result1);
+	GetIntFromConfig(ConfigSection(),_L("result2"),result2);
+
+
+	__UHEAP_MARK;
+	manager = CManager::NewL();
+	if(manager)
+		{
+		CleanupStack::PushL(manager);
+		RStringAttributeSet attributeSet;
+		CleanupClosePushL(attributeSet);
+		attributeSet.AddL(attribute1);
+		attributeSet.AddL(attribute2);
+		result = manager->GetStringAttributeSet(attributeSet, TVirtualPathPtr(uri, uniqueId));
+		if(result != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF1(_L("CManager::GetAttribute() failed"));
+			}
+	if(result1 != attributeSet.GetValue(attribute1, value1))
+		{
+		INFO_PRINTF1(_L("RStringAttributeSet::GetValue failed"));
+		}
+	if(result2 != attributeSet.GetValue(attribute2, value2))
+		{
+		INFO_PRINTF1(_L("RStringAttributeSet::GetValue failed"));
+		}
+	if(value1 != expectedValue1 || value2 != expectedValue2 || attributeSet.Count() != 2)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF1(_L("CManager::GetAttributeSet() values don't match expected values"));
+			}
+		CleanupStack::PopAndDestroy(&attributeSet);		
+		CleanupStack::PopAndDestroy(manager);		
+		}
+	else
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF1(_L("CManager construction failed"));
+		}
+	
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+
+
+CIteratorTestStateMachine::CIteratorTestStateMachine(CCAFContentIteratorStep *aParent) : CActive(EPriorityStandard) 
+	{
+	iParent = aParent;
+	}
+		
+CIteratorTestStateMachine::~CIteratorTestStateMachine()
+	{
+	delete iter;	
+	delete iPath;
+	delete iMimeType;
+	}
+
+void CIteratorTestStateMachine::DoCancel()
+	{
+	// Not used
+	CActiveScheduler::Stop();
+	}
+
+
+void CIteratorTestStateMachine::RunTestL(const TDesC& aPath, TBool aRecursive, const TDesC8& aMimeType)
+		{
+		iPath = aPath.AllocL();
+		iMimeType = aMimeType.AllocL();
+		iRecursive = aRecursive;
+			
+		// This function will only return once all files have been found
+		// and the RunL() method calls CActiveScheduler::Stop()
+		CActiveScheduler::Add(this);
+		iStatus = KRequestPending;
+		SetActive();
+		TRequestStatus *ptr = &iStatus;
+		User::RequestComplete(ptr, KErrNone);
+		CActiveScheduler::Start();		
+		}
+		
+void CIteratorTestStateMachine::RunL()
+	{
+	TBuf <KMaxDataTypeLength> mime16;
+	TVirtualPathPtr location(KNullDesC(), KNullDesC());
+	
+	if(iStatus.Int() != KErrNone)
+		{
+		delete iter;
+		iter = NULL;
+		CActiveScheduler::Stop();
+		}
+	else
+		{
+		switch(iState)
+			{
+		case 0: // create iterator
+			iter = CContentIterator::NewL(*iPath, iRecursive, *iMimeType);
+			iStatus = KRequestPending;
+			iter->Next(iStatus);
+			SetActive();
+			iState = 1;
+			break;
+			
+		case 1:   // get result of Next request
+			location = iter->VirtualPath();
+			mime16.Copy(iter->MimeType());
+			iParent->PrintResult(location.URI(), location.UniqueId(), mime16);
+			iStatus = KRequestPending;
+			iter->Next(iStatus);
+			SetActive();
+			break;
+		default:
+			CActiveScheduler::Stop();
+			break;
+			};
+		}
+	}
+
+/* 
+ * Content Iterator Step
+ *
+ */
+
+CCAFContentIteratorStep::~CCAFContentIteratorStep()
+	{
+	}
+
+CCAFContentIteratorStep::CCAFContentIteratorStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFContentIteratorStep);
+	}
+
+TVerdict CCAFContentIteratorStep::doTestStepL()
+	{
+	TPtrC path;
+	TPtrC mimeType;
+	TBuf8 <KMaxDataTypeLength> mimeType8;
+		
+	SetTestStepResult(EPass);
+
+	GetStringFromConfig(ConfigSection(),_L("path"),path);
+	GetStringFromConfig(ConfigSection(),_L("mimetype"),mimeType);
+
+	mimeType8.Copy(mimeType);
+	
+	__UHEAP_MARK;
+	
+	CIteratorTestStateMachine *t = new CIteratorTestStateMachine(this);
+	
+	t->RunTestL(path, ETrue, mimeType8);
+	
+	delete t;	
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+void CCAFContentIteratorStep::PrintResult(const TDesC& aFileName, const TDesC& aUniqueId, const TDesC& aMimeType)
+	{
+	INFO_PRINTF4(_L("File: %S, UniqueId: %S, MimeType: %S"), &aFileName, &aUniqueId, &aMimeType);
+	}
+
+
+/* 
+ * This step asks the agent to display information about a file using the file handle
+ *
+ */
+CCAFManagerDisplayInfoByFileHandleStep::~CCAFManagerDisplayInfoByFileHandleStep()
+	{
+	}
+
+CCAFManagerDisplayInfoByFileHandleStep::CCAFManagerDisplayInfoByFileHandleStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerDisplayInfoByFileHandleStep);
+	}
+
+
+TVerdict CCAFManagerDisplayInfoByFileHandleStep::doTestStepL()
+	{
+	TInt result;
+	
+	//initialisation for testing purposes such as  iUri, iFs, iFile, iExpectedResult and iUniqueId. 
+	InitialiseFileHandleParametersL();
+
+	SetTestStepResult(EFail);
+
+	__UHEAP_MARK;
+	CManager *manager = CManager::NewLC();
+
+	TRAP(result, manager->DisplayInfoL(EFileProperties, iFile, iUniqueId));	
+	if(result == iExpectedResult)
+		{
+		SetTestStepResult(EPass);
+		INFO_PRINTF1(_L("CManager::DisplayInfoL()(RFile handle overload) PASSED"));
+		}
+	else
+		{
+		INFO_PRINTF1(_L("CManager::DisplayInfoL()(RFile handle overload) returned unexpected error"));
+		INFO_PRINTF3(_L("CManager::DisplayInfoL()(RFile handle overload) Expected result: %d, actual result: %d"), iExpectedResult, result);	
+		}
+	
+	//cleanup manager instance
+	CleanupStack::PopAndDestroy(manager);	
+	//cleanup iFs and iFile instances by closing the handles.
+	CleanupStack::PopAndDestroy(2, &iFs);	
+
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * Manager attribute step using file handle.
+ *
+ */
+
+CCAFManagerAttributeByFileHandleStep::~CCAFManagerAttributeByFileHandleStep()
+	{
+	}
+
+CCAFManagerAttributeByFileHandleStep::CCAFManagerAttributeByFileHandleStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerAttributeByFileHandleStep);
+	}
+
+TVerdict CCAFManagerAttributeByFileHandleStep::doTestStepL()
+	{
+	TInt attribute;
+	TInt value = KErrNone;
+	TInt result= KErrNone;
+	TInt expectedValue;
+
+	//initialisation for testing purposes such as  iUri, iFs, iFile, iExpectedResult and iUniqueId. 
+	InitialiseFileHandleParametersL();
+	GetIntFromConfig(ConfigSection(),_L("attribute"),attribute);
+	GetIntFromConfig(ConfigSection(),_L("value"),expectedValue);
+	
+	SetTestStepResult(EFail);
+
+	__UHEAP_MARK;
+	CManager *manager = CManager::NewLC();
+
+	result = manager->GetAttribute(attribute, value, iFile, iUniqueId);
+	//expectedResult has priority over the values collected.
+	if(result == iExpectedResult)
+		{
+		if(value == expectedValue)
+			{
+			SetTestStepResult(EPass);
+			INFO_PRINTF1(_L("CManager::GetAttribute()(RFile handle overload) PASSED"));
+			}
+		else
+			{
+			INFO_PRINTF1(_L("CManager::GetAttribute()(RFile handle overload) values don't match expected values"));
+			INFO_PRINTF3(_L("CManager::GetAttribute()(RFile handle overload) Expected value: %d, actual value: %d"), expectedValue, value);	
+			}	
+		}
+	else
+		{
+		INFO_PRINTF1(_L("CManager::GetAttribute()(RFile handle overload) returned unexpected error"));
+		INFO_PRINTF3(_L("CManager::GetAttribute()(RFile handle overload) Expected result: %d, actual result: %d"), iExpectedResult, result);	
+		}
+	
+	//cleanup manager instance
+	CleanupStack::PopAndDestroy(manager);		
+	//cleanup iFs and iFile instances by closing the handles.
+	CleanupStack::PopAndDestroy(2, &iFs);
+   		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * Manager attributeset step by file handle.
+ *
+ */
+
+CCAFManagerAttributeSetByFileHandleStep::~CCAFManagerAttributeSetByFileHandleStep()
+	{
+	}
+
+CCAFManagerAttributeSetByFileHandleStep::CCAFManagerAttributeSetByFileHandleStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerAttributeSetByFileHandleStep);
+	}
+
+TVerdict CCAFManagerAttributeSetByFileHandleStep::doTestStepL()
+	{
+	TInt value1;
+	TInt value2;
+	TInt expectedValue1;
+	TInt expectedValue2;
+	TInt attribute1;
+	TInt attribute2;
+	TInt result = KErrNone;
+
+	//initialisation for testing purposes such as  iUri, iFs, iFile, iExpectedResult and iUniqueId. 
+	InitialiseFileHandleParametersL();
+	GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1);
+	GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2);
+	GetIntFromConfig(ConfigSection(),_L("value1"),expectedValue1);
+	GetIntFromConfig(ConfigSection(),_L("value2"),expectedValue2);
+
+	SetTestStepResult(EFail);
+
+	__UHEAP_MARK;
+	CManager *manager = CManager::NewLC();
+	
+	RAttributeSet attributeSet;
+	CleanupClosePushL(attributeSet);
+	attributeSet.AddL(attribute1);
+	attributeSet.AddL(attribute2);
+
+	result = manager->GetAttributeSet(attributeSet, iFile, iUniqueId);
+	//expectedResult has priority over the values collected.		
+	if(result == iExpectedResult)
+		{
+		User::LeaveIfError(attributeSet.GetValue(attribute1, value1));
+		User::LeaveIfError(attributeSet.GetValue(attribute2, value2));
+		if(value1 == expectedValue1 && value2 == expectedValue2)
+			{
+			SetTestStepResult(EPass);						
+			INFO_PRINTF1(_L("CManager::GetAttributeSet()(RFile handle overload) PASSED"));	
+			}
+		else
+			{
+			INFO_PRINTF1(_L("CManager::GetAttributeSet()(RFile handle overload) values don't match expected values"));
+			INFO_PRINTF3(_L("CManager::GetAttributeSet()(RFile handle overload) Expected value: %d, actual value: %d"), expectedValue1, value1);	
+			INFO_PRINTF3(_L("CManager::GetAttributeSet()(RFile handle overload) Expected value: %d, actual value: %d"), expectedValue2, value2);	
+			}	
+		}
+	else
+		{
+		INFO_PRINTF1(_L("CManager::GetAttributeSet()(RFile handle overload) returned unexpected error"));
+		INFO_PRINTF3(_L("CManager::GetAttributeSet()(RFile handle overload) Expected result: %d, actual result: %d"), iExpectedResult, result);	
+		}
+
+	//cleanup manager and attributeSet instances		
+	CleanupStack::PopAndDestroy(2, manager);	
+	//cleanup iFs and iFile instances by closing the handles.
+	CleanupStack::PopAndDestroy(2, &iFs);
+	    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+/* 
+ * Manager string attribute step by file handle
+ *
+ */
+
+CCAFManagerStringAttributeByFileHandleStep::~CCAFManagerStringAttributeByFileHandleStep()
+	{
+	}
+
+CCAFManagerStringAttributeByFileHandleStep::CCAFManagerStringAttributeByFileHandleStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerStringAttributeByFileHandleStep);
+	}
+
+TVerdict CCAFManagerStringAttributeByFileHandleStep::doTestStepL()
+	{
+	TInt attribute;
+	TInt result = KErrNone;
+	TPtrC expectedValue;
+	TBuf <200> value;
+	
+	//initialisation for testing purposes such as  iUri, iFs, iFile, iExpectedResult and iUniqueId. 
+	InitialiseFileHandleParametersL();
+	GetIntFromConfig(ConfigSection(),_L("attribute"),attribute);
+	GetStringFromConfig(ConfigSection(),_L("value"),expectedValue);
+	
+	SetTestStepResult(EFail);	
+	
+	__UHEAP_MARK;
+	CManager* manager = CManager::NewLC();
+
+	result = manager->GetStringAttribute(attribute, value, iFile, iUniqueId);
+	//expectedResult has priority over the values collected.		
+	if(result == iExpectedResult)
+		{
+		if (value == expectedValue) 
+			{
+			SetTestStepResult(EPass);
+			INFO_PRINTF1(_L("CManager::GetStringAttribute()(RFile handle overload) PASSED"));
+			}
+		else
+			{
+			INFO_PRINTF1(_L("CManager::GetStringAttribute()(RFile handle overload) values don't match expected values"));
+			INFO_PRINTF3(_L("CManager::GetStringAttribute()(RFile handle overload) Expected value: %S, actual value: %S"), &expectedValue, &value);	
+			}	
+		}
+	else
+		{
+		INFO_PRINTF1(_L("CManager::GetStringAttribute()(RFile handle overload) returned unexpected error"));
+		INFO_PRINTF3(_L("CManager::GetStringAttribute()(RFile handle overload) Expected result: %d, actual result: %d"), iExpectedResult, result);	
+		}
+
+	//cleanup manager instance		
+	CleanupStack::PopAndDestroy(manager);	
+	//cleanup iFs and iFile instances by closing the handles.
+	CleanupStack::PopAndDestroy(2, &iFs);	
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * Manager StringAttributeSet step by file handle.
+ *
+ */
+
+CCAFManagerStringAttributeSetByFileHandleStep::~CCAFManagerStringAttributeSetByFileHandleStep()
+	{
+	}
+
+CCAFManagerStringAttributeSetByFileHandleStep::CCAFManagerStringAttributeSetByFileHandleStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerStringAttributeSetByFileHandleStep);
+	}
+
+TVerdict CCAFManagerStringAttributeSetByFileHandleStep::doTestStepL()
+	{
+	TInt attribute1;
+	TInt attribute2;
+	TInt result = KErrNone;
+	TPtrC expectedValue1;
+	TPtrC expectedValue2;
+	TBuf <200> value1;
+	TBuf <200> value2;
+	
+	//initialisation for testing purposes such as  iUri, iFs, iFile, iExpectedResult and iUniqueId. 
+	InitialiseFileHandleParametersL();
+	GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1);
+	GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2);
+	GetStringFromConfig(ConfigSection(),_L("value1"),expectedValue1);
+	GetStringFromConfig(ConfigSection(),_L("value2"),expectedValue2);
+	
+	SetTestStepResult(EFail);
+
+	__UHEAP_MARK;
+	CManager* manager = CManager::NewLC();
+
+	RStringAttributeSet attributeSet;
+	CleanupClosePushL(attributeSet);
+	attributeSet.AddL(attribute1);
+	attributeSet.AddL(attribute2);
+
+	result = manager->GetStringAttributeSet(attributeSet, iFile, iUniqueId);
+	//expectedResult has priority over the values collected.	
+	if(result == iExpectedResult)
+		{
+		User::LeaveIfError(attributeSet.GetValue(attribute1, value1));
+		User::LeaveIfError(attributeSet.GetValue(attribute2, value2));
+		if (value1 == expectedValue1 && value2 == expectedValue2) 
+			{
+			SetTestStepResult(EPass);						
+			INFO_PRINTF1(_L("CManager::GetStringAttributeSet()(RFile handle overload) PASSED"));
+			}
+		else
+			{
+			INFO_PRINTF1(_L("CManager::GetStringAttributeSet()(RFile handle overload) values don't match expected values"));
+			INFO_PRINTF3(_L("CManager::GetStringAttributeSet()(RFile handle overload) Expected value: %S, actual value: %S"), &expectedValue1, &value1);	
+			INFO_PRINTF3(_L("CManager::GetStringAttributeSet()(RFile handle overload) Expected value: %S, actual value: %S"), &expectedValue2, &value2);				
+			}	
+		}
+	else
+		{
+		INFO_PRINTF1(_L("CManager::GetStringAttributeSet()(RFile handle overload) returned unexpected error"));
+		INFO_PRINTF3(_L("CManager::GetStringAttributeSet()(RFile handle overload) Expected result: %d, actual result: %d"), iExpectedResult, result);	
+		}
+
+	//cleanup manager and attributeSet instances		
+	CleanupStack::PopAndDestroy(2, manager);
+	//cleanup iFs and iFile instances by closing the handles.
+	CleanupStack::PopAndDestroy(2, &iFs);	
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+      
+// The following methods test the various manager attribute APIs for WMDRM content.     
+      
+TVerdict CCAFManagerAttributeStep::doWmdrmTestStepL()     
+    {     
+    SetTestStepResult(EFail);     
+         
+    TInt attribVal;     
+    GetIntFromConfig(ConfigSection(),_L("attribute"), attribVal);     
+         
+    TInt expectedValue;     
+    GetIntFromConfig(ConfigSection(),_L("value"), expectedValue);     
+      
+    __UHEAP_MARK;     
+         
+    TPtrC header;     
+    HBufC8* headerData = NULL;     
+         
+    if(GetStringFromConfig(ConfigSection(),_L("header"), header))     
+        {     
+        headerData = ConvertDes16toHBufC8LC(header);     
+        }     
+    else     
+        {     
+        headerData = CreateWmdrmHeaderLC();      
+        }     
+         
+    TInt value;     
+    CManager *manager = CManager::NewLC();     
+         
+    User::LeaveIfError(manager->GetAttribute(*headerData, attribVal, value));     
+    if(expectedValue == value)     
+        {     
+        SetTestStepResult(EPass);     
+        }     
+    else     
+        {     
+        INFO_PRINTF3(_L("CManager::GetAttribute() Expected value: %d, actual value: %d"), expectedValue, value);     
+        }     
+             
+    CleanupStack::PopAndDestroy(2, headerData);          
+                 
+    __UHEAP_MARKEND;     
+    return TestStepResult();     
+    }     
+         
+      
+TVerdict CCAFManagerAttributeSetStep::doWmdrmTestStepL()     
+    {     
+    SetTestStepResult(EFail);     
+         
+    TInt attribute1;     
+    GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1);     
+         
+    TInt attribute2;     
+    GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2);     
+         
+    TInt expectedValue1;     
+    GetIntFromConfig(ConfigSection(),_L("value1"),expectedValue1);     
+         
+    TInt expectedValue2;     
+    GetIntFromConfig(ConfigSection(),_L("value2"),expectedValue2);     
+      
+__UHEAP_MARK;     
+         
+    TPtrC header;     
+    HBufC8* headerData = NULL;     
+         
+    if(GetStringFromConfig(ConfigSection(),_L("header"), header))     
+        {     
+        headerData = ConvertDes16toHBufC8LC(header);     
+        }     
+    else     
+        {     
+        headerData = CreateWmdrmHeaderLC();      
+        }     
+                 
+    RAttributeSet attributeSet;     
+    CleanupClosePushL(attributeSet);     
+    attributeSet.AddL(attribute1);     
+    attributeSet.AddL(attribute2);     
+             
+    CManager *manager = CManager::NewLC();       
+    TInt result = manager->GetAttributeSet(*headerData, attributeSet);     
+    if(result == KErrNone)     
+        {     
+        SetTestStepResult(EPass);     
+        }     
+    else     
+        {     
+        INFO_PRINTF1(_L("CManager::GetAttributeSet() failed"));     
+        }     
+             
+    TInt value1;         
+    User::LeaveIfError(attributeSet.GetValue(attribute1, value1));     
+             
+    TInt value2;     
+    User::LeaveIfError(attributeSet.GetValue(attribute2, value2));     
+             
+    if(expectedValue1 == value1 && expectedValue2 == value2 && attributeSet.Count() == 2)     
+        {     
+        SetTestStepResult(EPass);     
+        }     
+    else     
+        {     
+        INFO_PRINTF1(_L("CManager::GetAttributeSet() values don't match expected values"));     
+        }     
+             
+    CleanupStack::PopAndDestroy(3, headerData);          
+      
+__UHEAP_MARKEND;     
+      
+    return TestStepResult();     
+    }     
+      
+      
+TVerdict CCAFManagerStringAttributeStep::doWmdrmTestStepL()     
+    {     
+    SetTestStepResult(EFail);     
+         
+    TInt attribVal;     
+    GetIntFromConfig(ConfigSection(),_L("attribute"),attribVal);     
+         
+    TPtrC expectedValue;     
+    GetStringFromConfig(ConfigSection(),_L("value"),expectedValue);     
+         
+    TInt expectedResult;     
+    GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);     
+      
+__UHEAP_MARK;     
+         
+    TPtrC header;     
+    HBufC8* headerData = NULL;     
+         
+    if(GetStringFromConfig(ConfigSection(),_L("header"), header))     
+        {     
+        headerData = ConvertDes16toHBufC8LC(header);     
+        }     
+    else     
+        {     
+        headerData = CreateWmdrmHeaderLC();      
+        }     
+         
+    CManager* manager = CManager::NewLC();           
+    TBuf <200> value;     
+    TInt result = manager->GetStringAttribute(*headerData, attribVal, value);     
+    if(result == expectedResult && value == expectedValue)     
+        {     
+        SetTestStepResult(EPass);     
+        }     
+    else     
+        {     
+        INFO_PRINTF3(_L("CManager::GetStringAttribute() Expected result: %d, actual result: %d"), expectedResult, result);     
+        INFO_PRINTF3(_L("CManager::GetStringAttribute() Expected value: %S, actual value: %S"), &expectedValue, &value);     
+        }     
+             
+    CleanupStack::PopAndDestroy(2, headerData);          
+         
+__UHEAP_MARKEND;     
+      
+    return TestStepResult();     
+    }     
+      
+      
+TVerdict CCAFManagerStringAttributeSetStep::doWmdrmTestStepL()     
+    {     
+    SetTestStepResult(EFail);     
+      
+    TInt attribute1;         
+    GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1);     
+         
+    TInt attribute2;     
+    GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2);     
+         
+    TPtrC expectedValue1;     
+    GetStringFromConfig(ConfigSection(),_L("value1"),expectedValue1);     
+         
+    TPtrC expectedValue2;     
+    GetStringFromConfig(ConfigSection(),_L("value2"),expectedValue2);     
+         
+__UHEAP_MARK;     
+         
+    TPtrC header;     
+    HBufC8* headerData = NULL;     
+         
+    if(GetStringFromConfig(ConfigSection(),_L("header"), header))     
+        {     
+        headerData = ConvertDes16toHBufC8LC(header);     
+        }     
+    else     
+        {     
+        headerData = CreateWmdrmHeaderLC();      
+        }     
+      
+    RStringAttributeSet attributeSet;     
+    CleanupClosePushL(attributeSet);     
+    attributeSet.AddL(attribute1);     
+    attributeSet.AddL(attribute2);     
+             
+    CManager* manager = CManager::NewLC();       
+    TInt result = manager->GetStringAttributeSet(*headerData, attributeSet);     
+    TBuf <200> value1;     
+    TBuf <200> value2;     
+    if(result == KErrNone)     
+        {     
+        TInt result3 = attributeSet.GetValue(attribute1, value1);     
+        TInt result4 = attributeSet.GetValue(attribute2, value2);     
+                 
+        if(value1 == expectedValue1 && value2 == expectedValue2 && attributeSet.Count() == 2     
+         && result3 == KErrNone && result4 == KErrNone)     
+            {     
+            SetTestStepResult(EPass);     
+            }     
+        else     
+            {     
+            INFO_PRINTF3(_L("RStringAttributeSet::GetValue() for attribute1.Expected value: %S, actual value: %S"), &expectedValue1, &value1);     
+            INFO_PRINTF3(_L("RStringAttributeSet::GetValue() for attribute2.Expected value: %S, actual value: %S"), &expectedValue2, &value2);     
+            INFO_PRINTF3(_L("RStringAttributeSet::GetValue() for attribute1. Expected result: %d, actual result: %d"), 0, result3);     
+            INFO_PRINTF3(_L("RStringAttributeSet::GetValue() for attribute2. Expected result: %d, actual result: %d"), 0, result4);      
+            }     
+            }     
+    else     
+        {     
+        INFO_PRINTF1(_L("CManager::GetStringAttributeSet() failed"));     
+        }        
+         
+    CleanupStack::PopAndDestroy(3, headerData);          
+      
+__UHEAP_MARKEND;     
+      
+    return TestStepResult();     
+    }     
+      
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/ManagerStep.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,586 @@
+/*
+* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+
+#if (!defined __MANAGER_STEP_H__)
+#define __MANAGER_STEP_H__
+#include <test/testexecutestepbase.h>
+
+#include "cafstep.h"
+#include <caf/dirstreamable.h>
+#include "contentIterator.h"
+
+// Constants used to name test cases 
+_LIT(KCAFDeleteStep,"CAFDeleteStep");
+_LIT(KCAFCopyFileStep,"CAFCopyFileStep");
+_LIT(KCAFRenameFileStep,"CAFRenameFileStep");
+_LIT(KCAFMkDirStep,"CAFMkDirStep");
+_LIT(KCAFMkDirAllStep,"CAFMkDirAllStep");
+_LIT(KCAFRmDirStep,"CAFRmDirStep");
+_LIT(KCAFGetDirStep,"CAFGetDirStep");
+_LIT(KCAFManagerNotifyStep,"CAFManagerNotifyStep");
+_LIT(KCAFManagerSetPropertyStep,"CAFManagerSetPropertyStep");
+_LIT(KCAFManagerDisplayInfoStep,"CAFManagerDisplayInfoStep");
+_LIT(KCAFManagerListAgentsStep,"CAFManagerListAgentsStep");
+_LIT(KCAFManagerAgentSpecificStep,"CAFManagerAgentSpecificStep");
+_LIT(KCAFManagerDisplayConfigStep,"CAFManagerDisplayConfigStep");
+_LIT(KCAFManagerAttributeStep,"CAFManagerAttributeStep");
+_LIT(KCAFManagerAttributeSetStep,"CAFManagerAttributeSetStep");
+_LIT(KCAFManagerStringAttributeStep,"CAFManagerStringAttributeStep");
+_LIT(KCAFManagerStringAttributeSetStep,"CAFManagerStringAttributeSetStep");
+_LIT(KCAFManagerDisplayInfoByFileHandleStep,"CAFManagerDisplayInfoByFileHandleStep");
+_LIT(KCAFManagerAttributeByFileHandleStep,"CAFManagerAttributeByFileHandleStep");
+_LIT(KCAFManagerAttributeSetByFileHandleStep,"CAFManagerAttributeSetByFileHandleStep");
+_LIT(KCAFManagerStringAttributeByFileHandleStep,"CAFManagerStringAttributeByFileHandleStep");
+_LIT(KCAFManagerStringAttributeSetByFileHandleStep,"CAFManagerStringAttributeSetByFileHandleStep");
+
+
+class CCAFServer;
+
+
+/* 
+* Used to test CManager::DeleteFile()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+* filename - the file to delete
+*
+* result - the expected return code
+*
+* @internalComponent Exposure internally
+*/
+class CCAFDeleteStep : public CCAFStep
+	{
+public:
+	CCAFDeleteStep(CCAFServer& aParent);
+	~CCAFDeleteStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CManager::CopyFile()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+ source - the source file
+ destination - the destination file
+ result - the expected return code
+*
+* @internalComponent Exposure internally
+*/
+class CCAFCopyFileStep : public CCAFStep
+	{
+public:
+	CCAFCopyFileStep(CCAFServer& aParent);
+	~CCAFCopyFileStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CManager::RenameFile()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+ source - the source file
+ destination - the destination file
+ result - the expected return code
+*
+* @internalComponent Exposure internally
+*/
+class CCAFRenameFileStep : public CCAFStep
+	{
+public:
+	CCAFRenameFileStep(CCAFServer& aParent);
+	~CCAFRenameFileStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CManager::MkDir()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+  path - the directory to create
+  result - the expected return code
+*
+* @internalComponent Exposure internally
+*/
+class CCAFMkDirStep : public CCAFStep
+	{
+public:
+	CCAFMkDirStep(CCAFServer& aParent);
+	~CCAFMkDirStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CManager::MkDirAll()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+  path - the directory to create
+  result - the expected return code
+*
+* @internalComponent Exposure internally
+*/
+class CCAFMkDirAllStep : public CCAFStep
+	{
+public:
+	CCAFMkDirAllStep(CCAFServer& aParent);
+	~CCAFMkDirAllStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CManager::RmDir()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+  path - the directory to create
+  result - the expected return code
+*
+* @internalComponent Exposure internally
+*/
+class CCAFRmDirStep : public CCAFStep
+	{
+public:
+	CCAFRmDirStep(CCAFServer& aParent);
+	~CCAFRmDirStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CManager::GetDir()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+  path - the directory to list
+  result - the expected return code
+*
+* @internalComponent Exposure internally
+*/
+class CCAFGetDirStep : public CCAFStep
+	{
+public:
+	CCAFGetDirStep(CCAFServer& aParent);
+	~CCAFGetDirStep();
+	virtual TVerdict doTestStepL();
+private:
+	void DisplayList(CDir& aDir);
+	CCAFServer& iParent;
+	};
+
+
+/* 
+* Used to test CManager::NotifyStatusChange()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+  
+  
+*
+* @internalComponent Exposure internally
+*/
+class CCAFManagerNotifyStep : public CCAFStep
+	{
+public:
+	CCAFManagerNotifyStep(CCAFServer& aParent);
+	~CCAFManagerNotifyStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CManager::SetProperty()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+  
+  
+*
+* @internalComponent Exposure internally
+*/
+class CCAFManagerSetPropertyStep : public CCAFStep
+	{
+public:
+	CCAFManagerSetPropertyStep(CCAFServer& aParent);
+	~CCAFManagerSetPropertyStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CManager::DisplayInfo()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+  
+  
+*
+* @internalComponent Exposure internally
+*/
+class CCAFManagerDisplayInfoStep : public CCAFStep
+	{
+public:
+	CCAFManagerDisplayInfoStep(CCAFServer& aParent);
+	~CCAFManagerDisplayInfoStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+
+/* 
+* Used to test CManager::ListAgents()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+  
+  
+*
+* @internalComponent Exposure internally
+*/
+class CCAFManagerListAgentsStep : public CCAFStep
+	{
+public:
+	CCAFManagerListAgentsStep(CCAFServer& aParent);
+	~CCAFManagerListAgentsStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+
+
+/* 
+* Used to test CManager::AgentSpecificCommand()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+  
+  
+*
+* @internalComponent Exposure internally
+*/
+class CCAFManagerAgentSpecificStep : public CCAFStep
+	{
+public:
+	CCAFManagerAgentSpecificStep(CCAFServer& aParent);
+	~CCAFManagerAgentSpecificStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+
+/* 
+* Used to test CManager::DisplayManagentInfoL()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+  
+  
+*
+* @internalComponent Exposure internally
+*/
+class CCAFManagerDisplayConfigStep : public CCAFStep
+	{
+public:
+	CCAFManagerDisplayConfigStep(CCAFServer& aParent);
+	~CCAFManagerDisplayConfigStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+
+/* 
+* Used to test CManager::GetAttribute()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+  
+  
+*
+* @internalComponent Exposure internally
+*/
+class CCAFManagerAttributeStep : public CCAFStep
+	{
+public:
+	CCAFManagerAttributeStep(CCAFServer& aParent);
+	~CCAFManagerAttributeStep();
+	virtual TVerdict doTestStepL();
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    TVerdict doWmdrmTestStepL();     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CManager::GetAttributeSet()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+  
+  
+*
+* @internalComponent Exposure internally
+*/
+class CCAFManagerAttributeSetStep : public CCAFStep
+	{
+public:
+	CCAFManagerAttributeSetStep(CCAFServer& aParent);
+	~CCAFManagerAttributeSetStep();
+	virtual TVerdict doTestStepL();
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    TVerdict doWmdrmTestStepL();     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+  
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CManager::GetAttribute()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+  
+  
+*
+* @internalComponent Exposure internally
+*/
+class CCAFManagerStringAttributeStep : public CCAFStep
+	{
+public:
+	CCAFManagerStringAttributeStep(CCAFServer& aParent);
+	~CCAFManagerStringAttributeStep();
+	virtual TVerdict doTestStepL();
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    TVerdict doWmdrmTestStepL();     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+  
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CManager::GetStringAttributeSet()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+  
+  
+*
+* @internalComponent Exposure internally
+*/
+class CCAFManagerStringAttributeSetStep : public CCAFStep
+	{
+public:
+	CCAFManagerStringAttributeSetStep(CCAFServer& aParent);
+	~CCAFManagerStringAttributeSetStep();
+	virtual TVerdict doTestStepL();
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    TVerdict doWmdrmTestStepL();     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+  
+private:
+	CCAFServer& iParent;
+	};
+
+
+_LIT(KCAFContentIteratorStep,"CAFContentIteratorStep");
+
+
+/* 
+* Used to test CContentIterator
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+  
+  
+*
+* @internalComponent Exposure internally
+*/
+class CCAFContentIteratorStep : public CCAFStep
+	{
+public:
+	CCAFContentIteratorStep(CCAFServer& aParent);
+	~CCAFContentIteratorStep();
+	virtual TVerdict doTestStepL();
+	void PrintResult(const TDesC& aFileName, const TDesC& aUniqueId, const TDesC& aMimeType);
+	
+private:
+	CCAFServer& iParent;
+	};
+
+
+/** Used by CCAFContentIteratorStep 
+*/
+class CIteratorTestStateMachine : public CActive
+	{
+public:
+	CIteratorTestStateMachine(CCAFContentIteratorStep *aParent);
+	virtual ~CIteratorTestStateMachine();
+	
+	void RunTestL(const TDesC& aPath, TBool aRecursive, const TDesC8& aMimeType);
+		
+	// From CActive
+	virtual void RunL();
+	virtual void DoCancel();
+
+
+private:
+	HBufC *iPath;
+	HBufC8 *iMimeType;
+	TBool iRecursive;
+	ContentAccess::CContentIterator *iter;
+	CCAFContentIteratorStep *iParent;
+	TInt iState;
+	};
+
+
+/* 
+* Used to test CManager::DisplayInfo() (file handle overload)
+*
+* @internalComponent 
+*/
+class CCAFManagerDisplayInfoByFileHandleStep : public CCAFStep
+	{
+public:
+	CCAFManagerDisplayInfoByFileHandleStep(CCAFServer& aParent);
+	~CCAFManagerDisplayInfoByFileHandleStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CManager::GetAttribute() (file handle overload)
+*
+* @internalComponent Exposure internally
+*/
+class CCAFManagerAttributeByFileHandleStep : public CCAFStep
+	{
+public:
+	CCAFManagerAttributeByFileHandleStep(CCAFServer& aParent);
+	~CCAFManagerAttributeByFileHandleStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CManager::GetAttributeSet() (file handle overload)
+*
+* @internalComponent Exposure internally
+*/
+class CCAFManagerAttributeSetByFileHandleStep : public CCAFStep
+	{
+public:
+	CCAFManagerAttributeSetByFileHandleStep(CCAFServer& aParent);
+	~CCAFManagerAttributeSetByFileHandleStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CManager::GetAttribute() (file handle overload)
+*
+* @internalComponent Exposure internally
+*/
+class CCAFManagerStringAttributeByFileHandleStep : public CCAFStep
+	{
+public:
+	CCAFManagerStringAttributeByFileHandleStep(CCAFServer& aParent);
+	~CCAFManagerStringAttributeByFileHandleStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CManager::GetStringAttributeSet() (file handle overload)
+*
+* @internalComponent Exposure internally
+*/
+class CCAFManagerStringAttributeSetByFileHandleStep : public CCAFStep
+	{
+public:
+	CCAFManagerStringAttributeSetByFileHandleStep(CCAFServer& aParent);
+	~CCAFManagerStringAttributeSetByFileHandleStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/OomStep.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,254 @@
+/*
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <test/testexecutelog.h>
+#include <s32mem.h>
+#include "cafserver.h"
+#include "oomstep.h"
+#include "content.h"
+#include "data.h"
+#include "supplier.h"
+#include "cafmimeheader.h"
+#include "importfile.h"
+#include "supplieroutputfile.h"
+#include "attribute.h"
+#include "bitset.h"
+
+using namespace ContentAccess;
+
+const TInt KOomReadContent = 1;
+const TInt KOomSupply = 2;
+
+
+/* 
+ * This step imports a DCF file into CAF 
+ *
+ */
+CCafOomStep::~CCafOomStep()
+	{
+	}
+
+CCafOomStep::CCafOomStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFOomStep);
+	}
+
+
+TVerdict CCafOomStep::doTestStepL()
+	{
+	SetTestStepResult(EInconclusive);
+
+	TInt failCount=1;
+	TInt ret=-1;
+	const TInt MaxAllocationFailures=450;
+
+
+	TInt OomTest = KErrNotFound;
+	GetIntFromConfig(ConfigSection(),_L("OomTest"),OomTest);
+
+
+	if(OomTest == 2)
+		{
+		INFO_PRINTF2(_L("Starting Apparc..."),failCount);	
+		StartApparcServerL();
+		User::After(500000); // Allow async libraries to unload
+		}
+
+
+	while(failCount < MaxAllocationFailures && OomTest > 0)
+		{
+		// Mark heap and set allocation to fail
+		__UHEAP_MARK;	
+
+		switch(OomTest)
+			{
+		case KOomReadContent:
+			INFO_PRINTF2(_L("ReadContent() __UHEAP_FAILNEXT: %d"),failCount);	
+			__UHEAP_FAILNEXT(failCount);
+			TRAP(ret,OomReadContentL());
+			break;
+		case KOomSupply:
+			INFO_PRINTF2(_L("Supply() __UHEAP_FAILNEXT: %d"),failCount);	
+			__UHEAP_FAILNEXT(failCount);
+			TRAP(ret,OomSupplyL());
+			break;
+		default:
+			INFO_PRINTF2(_L("Out of Memory test %d does not exist"),OomTest);
+			SetTestStepResult(EFail);
+			ret = KErrNone;
+			break;
+			};
+
+		User::After(500000); // Allow async libraries to unload
+
+
+		// Check all heap is free'd
+		__UHEAP_MARKEND;
+		
+		// cancel heap failure
+		__UHEAP_RESET;
+		if(ret == KErrNone)
+			{
+			// Allocation failure has been moved all the way through the test
+			// Succeeded after failCount allocations
+			return TestStepResult();
+			}
+		else 
+			{
+			// Try failing a little further into the process
+			failCount++;
+			}
+		}
+
+	// We must have reached our maximum number of allocation failures
+	// There must be some other problem 
+	SetTestStepResult(EFail);
+
+	return TestStepResult();
+	}	
+
+TVerdict CCafOomStep::OomReadContentL()
+	{
+	
+	TBuf8<2> buffer;
+	TRequestStatus status;
+
+	TPtrC uri;
+	GetStringFromConfig(ConfigSection(),_L("URI"),uri);
+
+	CContent* content = CContent::NewLC(uri);
+	CData* data = content->OpenContentL(EPeek);
+	CleanupStack::PushL(data);
+
+	TInt size = 0;
+	data->DataSizeL(size);
+	
+	// Seek and read from start using both CAF and RFile
+	TInt pos = size/4;
+	data->Seek(ESeekStart, pos);
+	data->Read(buffer);
+
+	pos=0;
+	data->Seek(ESeekCurrent, pos);
+	
+	data->Read(buffer,1,status);
+	User::WaitForRequest(status);
+
+	CleanupStack::PopAndDestroy(2, content);
+
+	SetTestStepResult(EPass);
+
+	return TestStepResult();
+	}
+
+
+TVerdict CCafOomStep::OomSupplyL()
+	{
+	SetTestStepResult(EInconclusive);
+
+	RFs fs;
+	RFile file;
+	TBuf8 <128> readBuffer;
+	
+	TPtrC outputDirectory, sourceFileName, suggestedFileName, mimeType;
+	TInt expectedLeave;
+
+	// Get parameters from INI file
+	GetStringFromConfig(ConfigSection(),_L("OutputPath"),outputDirectory);
+	GetStringFromConfig(ConfigSection(),_L("SourceFileName"),sourceFileName);
+	GetStringFromConfig(ConfigSection(),_L("SuggestedFileName"),suggestedFileName);
+	GetStringFromConfig(ConfigSection(),_L("MimeType"),mimeType);
+	GetIntFromConfig(ConfigSection(),_L("LeaveResult"),expectedLeave);
+	
+
+	// delete any file previously supplied, don't care if this 
+	// has errors so trap.
+	Delete(_L("C:\\supplied.drm"));
+	Delete(_L("C:\\receipt.txt"));
+
+
+	HBufC8 *mime = ConvertDes16toHBufC8LC(mimeType);
+
+	CCafMimeHeader *header = CCafMimeHeader::NewL(mime->Des());
+	CleanupStack::PushL(header);
+
+	CSupplier *mySupplier = CSupplier::NewLC();
+	mySupplier->SetOutputDirectoryL(outputDirectory);
+	
+	// ignore return value, just exercises code for CCover
+	mySupplier->IsImportSupported(header->StandardMimeData(EContentType));
+
+	CImportFile *import = NULL;
+	import = mySupplier->ImportFileL(*header, suggestedFileName);
+	CleanupStack::PushL(import);
+
+	// read the input file and pass it to the CAF
+	fs.Connect();
+	CleanupClosePushL(fs);
+	
+	TInt result = file.Open(fs, sourceFileName, EFileRead | EFileStream | EFileShareAny);
+	CleanupClosePushL(file);
+	while(result == KErrNone)
+		{
+		result = file.Read(readBuffer);
+		if(readBuffer.Length() == 0)
+			break;
+		User::LeaveIfError(import->WriteData(readBuffer));
+		}
+	CleanupStack::PopAndDestroy(&file); 
+	User::LeaveIfError(import->WriteDataComplete());
+
+	TInt n = import->OutputFileCountL();
+	if(n > 0)
+		{
+		// get output file type (content or receipt)
+		TOutputType outputType = import->OutputFileL(0).OutputType();
+
+		// get output file name, but ignore it because it would cause a warning
+		import->OutputFileL(0).FileName();
+			
+		// get output file mime type
+		TPtrC8 OutputMimeType = import->OutputFileL(0).MimeTypeL();
+		HBufC *outmime = ConvertDes8toHBufC16LC(OutputMimeType );
+		CleanupStack::PopAndDestroy(outmime); 
+
+		if(outputType != EContent)
+			{
+			SetTestStepResult(EFail);
+			}
+		else
+			{
+			// check an attribute, it's only a reference so no need to delete it
+			import->OutputFileL(0).AttributesL(ETrue);
+			}
+		}
+
+	CleanupStack::PopAndDestroy(&fs); 
+	CleanupStack::PopAndDestroy(import); 
+	CleanupStack::PopAndDestroy(mySupplier); 
+	CleanupStack::PopAndDestroy(header); 
+	CleanupStack::PopAndDestroy(mime); 
+
+	if (TestStepResult() != EFail)
+		{
+		SetTestStepResult(EPass);
+		}
+
+	return TestStepResult();
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/RecognizerStep.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,555 @@
+/*
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* cafstep.cpp
+*
+*/
+
+
+#include <test/testexecutelog.h>
+#include <apgcli.h>
+#include <apmstd.h>
+#include "cafserver.h"
+#include "resolver.h"
+#include "RecognizerStep.h"
+#include "CafApaRecognizer.h"
+
+using namespace ContentAccess;
+
+const TInt KCafTestMaxDataTypeLength = 255;
+const TInt KCAFTestApparcBufferSize = 100;
+
+/* 
+ * This step starts the CAF Apparc recognizer and checks to see that it recognizes the
+ * correct files
+ *
+ */
+
+CCAFRecognizeStep::~CCAFRecognizeStep()
+	{
+	}
+
+CCAFRecognizeStep::CCAFRecognizeStep(CCAFServer& aParent)
+: iParent(aParent)
+	{
+	SetTestStepName(KCAFRecognizeStep);
+	}
+
+/* Tests whether a file opened under the caf framework reports the same size as
+ * RFile.  Only works for files that are owned by the f32agent which doesn't
+ * change the content at all.
+ */
+TVerdict CCAFRecognizeStep::doTestStepL()
+	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    TBool wmdrmFlag = EFalse;     
+    GetBoolFromConfig(ConfigSection(),_L("wmdrmEnabled"), wmdrmFlag);     
+         
+    if(wmdrmFlag)
+        {     
+        TVerdict verdict = doWmdrmTestStepL();     
+        return verdict;     
+        }     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT    
+
+	TBuf8 <KCAFTestApparcBufferSize> buf;
+
+	CAgentResolver *resolver;
+	
+	// If we leave before our DoRecognize is complete, something must have gone seriously wrong
+	SetTestStepResult(EFail);
+
+	TBuf8 <KCafTestMaxDataTypeLength> ContainerMimeType;
+	TBuf8 <KCafTestMaxDataTypeLength> ContentMimeType;
+	TBool result;
+	
+	TPtrC fileName;
+	TBool expectedresult;
+	TPtrC expectedContainerMime, expectedContentMime;
+
+	// Retrieve filename to analyse and expected results from INI file
+	GetStringFromConfig(ConfigSection(),_L("FileName"),fileName);
+	GetStringFromConfig(ConfigSection(),_L("Container"),expectedContainerMime);
+	GetStringFromConfig(ConfigSection(),_L("Content"),expectedContentMime);
+	GetBoolFromConfig(ConfigSection(),_L("Recognized"),expectedresult);
+	
+	if(expectedresult)
+		{
+		INFO_PRINTF4(_L("DoRecognize Test DRM file: %S, Container Mime Type: %S, Content Mime Type: %S"),&fileName, &expectedContainerMime, &expectedContentMime);
+		}
+	else
+		{
+		INFO_PRINTF2(_L("DoRecognize Test non DRM file: %S"), &fileName);	
+		}
+
+	__UHEAP_MARK;
+
+	// Read the first KCAFTestApparcBufferSize bytes into the buffer in the same way apparc would do
+	ReadBufferL(fileName, buf);
+	
+	// Pass the filename and buffer to CAF DoRecognize function
+	resolver = CAgentResolver::NewLC(ETrue);
+    	
+	result = resolver->DoRecognizeL(fileName, buf, ContainerMimeType, ContentMimeType);
+
+	CheckResultL(result, ContainerMimeType, ContentMimeType, expectedresult, expectedContainerMime, expectedContentMime);
+
+	CleanupStack::PopAndDestroy(resolver); 
+
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+void CCAFRecognizeStep::CheckResultL(TBool aResult, TDes8& aContainerMimeType, TDes8& aContentMimeType, TBool aExpectedResult, TDesC16& aExpectedContainerMime, TDesC16& aExpectedContentMime)
+	{
+	// start off by assuming recognition was ok, then check
+	SetTestStepResult(EPass);
+	
+	if(aResult != aExpectedResult)
+		{
+		if(aResult)
+			{
+			INFO_PRINTF1(_L("File was incorrectly recognized as DRM"));	
+			}
+		else
+			{
+			INFO_PRINTF1(_L("File was incorrectly recognized as not DRM"));	
+			}
+		SetTestStepResult(EFail);
+		return;
+		}
+
+	if(!aResult) // not a drm file so we don't care about the mime types
+		return;
+	
+	TInt compare;
+
+	// Convert TDes16 mime types read from the INI file to TPtr8's
+	HBufC8 *container = ConvertDes16toHBufC8LC(aExpectedContainerMime);
+	TPtr8 containerptr(container->Des());
+
+	HBufC8 *content = ConvertDes16toHBufC8LC(aExpectedContentMime);
+	TPtr8 contentptr(content->Des());
+
+	// Compare expected Mime Types vs mime type
+	compare = aContainerMimeType.Compare(containerptr);
+	if(compare != 0)
+		{
+		INFO_PRINTF1(_L("Incorrect Container Mime Type recognized"));	
+		SetTestStepResult(EFail);
+		}
+	compare = aContentMimeType.Compare(contentptr);
+	if(compare != 0)
+		{
+		INFO_PRINTF1(_L("Incorrect Content Mime Type recognized"));	
+		SetTestStepResult(EFail);
+		}
+	CleanupStack::PopAndDestroy(2, container);	
+	}
+
+
+/*
+ * This step starts the CAF Apparc recognizer speed test
+ * Does 1000 recognitions, log file will measure the time
+ *
+ */
+
+CCAFRecognizerSpeedStep::~CCAFRecognizerSpeedStep()
+	{
+	}
+
+CCAFRecognizerSpeedStep::CCAFRecognizerSpeedStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFRecognizerSpeedStep);
+	}
+
+
+TVerdict CCAFRecognizerSpeedStep::doTestStepL()
+	{
+	TBuf8 <KCAFTestApparcBufferSize> buf;
+
+	CAgentResolver *resolver;
+	
+	// If we leave before our DoRecognize is complete, something must have gone seriously wrong
+	SetTestStepResult(EFail);
+
+	TBuf8 <KCafTestMaxDataTypeLength> ContainerMimeType;
+	TBuf8 <KCafTestMaxDataTypeLength> ContentMimeType;
+	
+	TPtrC fileName;
+	TBool expectedresult;
+	TPtrC expectedContainerMime, expectedContentMime;
+
+	// Retrieve filename to analyse and expected results from INI file
+	GetStringFromConfig(ConfigSection(),_L("FileName"),fileName);
+	GetStringFromConfig(ConfigSection(),_L("Container"),expectedContainerMime);
+	GetStringFromConfig(ConfigSection(),_L("Content"),expectedContentMime);
+	GetBoolFromConfig(ConfigSection(),_L("Recognized"),expectedresult);
+	
+	if(expectedresult)
+		{
+		INFO_PRINTF4(_L("DoRecognize Speed Test DRM file: %S, Container Mime Type: %S, Content Mime Type: %S"),&fileName, &expectedContainerMime, &expectedContentMime);
+		}
+	else
+		{
+		INFO_PRINTF2(_L("DoRecognize Speed Test non DRM file: %S"), &fileName);	
+		}
+
+	__UHEAP_MARK;
+
+	// Read the first KCAFTestApparcBufferSize bytes into the buffer in the same way apparc would do
+	ReadBufferL(fileName, buf);
+	
+	// Pass the filename and buffer to CAF DoRecognize function
+	resolver = CAgentResolver::NewLC(ETrue);
+
+	INFO_PRINTF1(_L("Entering measured mile"));	
+	
+	for(TInt Count=0; Count < 1000; Count++)
+		resolver->DoRecognizeL(fileName, buf, ContainerMimeType, ContentMimeType);
+	
+	INFO_PRINTF1(_L("passing mile marker   (1000 recognitions)"));	
+
+    CleanupStack::PopAndDestroy(resolver); 
+
+	__UHEAP_MARKEND;
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+
+/* 
+ * This step starts the CAF Apparc recognizer and checks to see that it recognizes the
+ * correct files
+ *
+ */
+
+CCAFBufferSizeStep::~CCAFBufferSizeStep()
+	{
+	}
+
+CCAFBufferSizeStep::CCAFBufferSizeStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFBufferSizeStep);
+	}
+
+
+/* Apparc uses a buffer to pass data from the start of the file into the apparc recognizer
+* to help it determine what mime type the file is.
+* In CAF this recognition task is actually handed over to the agents. Each one attempts to
+* recognize the file until one is successful or until all agents have rejected the file.
+* Each agent may have it's own preferred size for this buffer. This is configured in each
+* agent's RSS file, under the default_data tag.
+* CAgentResolver::PreferredBufferSize() will return the highest value returned by any agent.
+*/
+TVerdict CCAFBufferSizeStep::doTestStepL()
+	{
+	CAgentResolver *resolver;
+	TInt expectedBufferSize;
+	TInt bufferSize=0;
+
+	SetTestStepResult(EFail);
+
+	
+	// Find the expected max buffer size from the INI file
+	GetIntFromConfig(ConfigSection(),_L("size"),expectedBufferSize);
+
+	INFO_PRINTF2(_L("Expected buffer size: %d"), expectedBufferSize);
+
+	__UHEAP_MARK;
+
+	
+	resolver = CAgentResolver::NewLC(ETrue);
+
+	bufferSize = resolver->PreferredBufferSize();
+
+	INFO_PRINTF2(_L("Caf Preferred buffer size: %d"), bufferSize);
+
+	if(bufferSize == expectedBufferSize)
+		{	
+		SetTestStepResult(EPass);
+		}	
+    		
+	CleanupStack::PopAndDestroy(resolver); 
+
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+
+CCAFApparcStep::~CCAFApparcStep()
+	{
+	}
+
+CCAFApparcStep::CCAFApparcStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFApparcStep);
+	}
+
+
+/*
+ * This step loads the apparc recognizer and gives it a test run by 
+ * pretending to be apparc
+ * 
+ */
+TVerdict CCAFApparcStep::doTestStepL()
+	{
+	TDataType dataType;
+	TDataType dataType2;
+	TDataType dataType3;
+	TDataType dataTypeNull(_L8(""));	
+	TPtrC8 mimeType(KNullDesC8);
+	HBufC16 *displayMime;
+	HBufC16 *displayMime2;
+	TPtrC fileName;
+	TPtrC uri;
+	TPtrC expectedMimeType;
+	TPtrC nullFileName(KNullDesC); 
+	TUid uid = KNullUid;
+	
+	SetTestStepResult(EInconclusive);
+
+	__UHEAP_MARK;
+
+	// Retrieve filename to analyse and expected results from INI file
+	GetStringFromConfig(ConfigSection(),_L("URI"),uri);
+	GetStringFromConfig(ConfigSection(),_L("FileName"),fileName);
+	GetStringFromConfig(ConfigSection(),_L("CafMimeType"),expectedMimeType);
+
+	// Use the Application Architecture Server to find the Mime type 
+	RApaLsSession apparcSession;
+	User::LeaveIfError(apparcSession.Connect());
+	CleanupClosePushL(apparcSession);
+	User::LeaveIfError(apparcSession.AppForDocument(fileName, uid, dataType));
+
+	RFile fileHandle;
+	fileHandle.Open(iParent.Fs(), uri, EFileRead);
+	User::LeaveIfError(apparcSession.AppForDocument(fileHandle, uid, dataType2));
+
+	// Pass in a null file name to make sure it doesn't panic 
+	User::LeaveIfError(apparcSession.AppForDocument(nullFileName, uid, dataType3));
+
+	CleanupStack::PopAndDestroy(&apparcSession);	// close
+
+
+	// check mime type of the file (fileName)
+	mimeType.Set(dataType.Des8());
+	displayMime = ConvertDes8toHBufC16LC(mimeType);
+	TPtr16 displayPtr(displayMime->Des());
+	if(displayPtr.Compare(expectedMimeType) != 0)
+		{
+		INFO_PRINTF2(_L("CAgentResolver returned a mime type of: %S"),&displayPtr);
+		INFO_PRINTF1(_L("Please make sure the configuration file RecCafMimeTypes.txt exists for RECCAF.DLL."));
+		SetTestStepResult(EFail);
+		}
+	else
+		INFO_PRINTF3(_L("File - CAgentResolver returned a mime type of: %S, matching the expected mime type of: %S"),&displayPtr, &expectedMimeType);
+	
+		
+	// check mime type of the file (fileHandle)
+	mimeType.Set(dataType2.Des8());
+	displayMime2 = ConvertDes8toHBufC16LC(mimeType);
+	TPtr16 displayPtr2(displayMime2->Des());
+	if(displayPtr2.Compare(expectedMimeType) != 0)
+		{
+		INFO_PRINTF2(_L("CAgentResolver returned a mime type of: %S"),&displayPtr2);
+		INFO_PRINTF1(_L("Please make sure the configuration file RecCafMimeTypes.txt exists for RECCAF.DLL."));
+		SetTestStepResult(EFail);
+		}	
+	else
+		INFO_PRINTF3(_L("FileHandle - CAgentResolver returned a mime type of: %S, matching the expected mime type of: %S"),&displayPtr2, &expectedMimeType);
+	
+	// Check the returned datatype is null, when a null filename is passed in  
+	if (dataType3 == dataTypeNull)
+		INFO_PRINTF1(_L("A null datatype is returned, when a null file name is passed in"));
+	else 
+		SetTestStepResult(EFail);
+	
+	CleanupStack::PopAndDestroy(displayMime2);		
+	CleanupStack::PopAndDestroy(displayMime);
+	
+	__UHEAP_MARKEND;
+	
+	if (TestStepResult() != EFail)
+		{
+		SetTestStepResult(EPass);
+		}
+	
+	return TestStepResult();
+	}
+
+/* 
+ * This test verifies that upper case Mime types can be recognized.
+ *
+ * See DEF077443: Propagated:CAF should not be performing case sensitive comparisons on MIME types
+ *
+ */
+CCAF_DEF077443_Step::~CCAF_DEF077443_Step()
+	{
+	}
+
+CCAF_DEF077443_Step::CCAF_DEF077443_Step(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAF_DEF077443_Step);
+	}
+
+TVerdict CCAF_DEF077443_Step::doTestStepL()
+	{
+	TDataType dataType;
+	TDataType dataType2;
+	TPtrC8 mimeType(KNullDesC8);
+	HBufC16 *displayMime;
+	HBufC16 *displayMime2;
+	TPtrC upperCaseFileName;
+	TPtrC emptyFileName;
+	TPtrC expectedContentMimeType;
+	TPtrC expectedFileMimeType;
+	TUid uid = KNullUid;
+	
+	SetTestStepResult(EInconclusive);
+
+	__UHEAP_MARK;
+
+	// Retrieve filename to analyse and expected results from INI file.
+	// The CAF resolver forces mime types retrieved from agents to lower case.
+	// When recognising the file mime type and content mine type for a file the
+	// resolver passes the request to each agent. Its possible that the agent will
+	// not use lower case for the file mime type and content mime type. To be 
+	// consistent the resolver should set the returned data to lower case as well.
+	
+	// The test agent takes content mime type from the uppercasetest.drm file.
+	// For this case the content mime type is upper case (e.g. TEXT/PLAIN).
+	GetStringFromConfig(ConfigSection(),_L("FileName1"), upperCaseFileName);
+	GetStringFromConfig(ConfigSection(),_L("CafContentMimeType"), expectedContentMimeType);
+
+	// For a drm file with no recognised content the test agent sets the file mime type
+	// as APPLICATION/TESTAGENT.DRM.
+	// For this case the file emptytest.drm is used.
+	GetStringFromConfig(ConfigSection(),_L("FileName2"), emptyFileName);
+	GetStringFromConfig(ConfigSection(),_L("CafFileMimeType"), expectedFileMimeType);
+	
+	// create empty DRM file
+	RFs fs;
+	RFile file;
+
+	// remove first if exists
+	Delete(emptyFileName);
+
+	fs.Connect();
+	TInt result = file.Create(fs, emptyFileName, EFileWrite);
+	file.Close();
+	fs.Close(); 
+
+	// Use the Application Architecture Server to find the Content Mime type 
+	RApaLsSession apparcSession;
+	User::LeaveIfError(apparcSession.Connect());
+	CleanupClosePushL(apparcSession);
+	User::LeaveIfError(apparcSession.AppForDocument(upperCaseFileName, uid, dataType));
+
+	// Use the Application Architecture Server to find the File Mime type 
+	User::LeaveIfError(apparcSession.AppForDocument(emptyFileName, uid, dataType2));
+
+	CleanupStack::PopAndDestroy(&apparcSession);	// close
+
+	// remove empty file
+	Delete(emptyFileName);
+
+	// check content mime type
+	mimeType.Set(dataType.Des8());
+	displayMime = ConvertDes8toHBufC16LC(mimeType);
+	TPtr16 displayPtr(displayMime->Des());
+	if(displayPtr.Compare(expectedContentMimeType) != 0)
+		{
+		INFO_PRINTF2(_L("CAgentResolver returned a content mime type of: %S"),&displayPtr);
+		INFO_PRINTF1(_L("Please make sure the configuration file RecCafMimeTypes.txt exists for RECCAF.DLL."));
+		SetTestStepResult(EFail);
+		}
+	else
+		INFO_PRINTF3(_L("Content - CAgentResolver returned a mime type of: %S, matching the expected mime type of: %S"),&displayPtr, &expectedContentMimeType);
+	
+	// check file mime type
+	mimeType.Set(dataType2.Des8());
+	displayMime2 = ConvertDes8toHBufC16LC(mimeType);
+	TPtr16 displayPtr2(displayMime2->Des());
+	if(displayPtr2.Compare(expectedFileMimeType) != 0)
+		{
+		INFO_PRINTF2(_L("CAgentResolver returned a file mime type of: %S"),&displayPtr2);
+		INFO_PRINTF1(_L("Please make sure the configuration file RecCafMimeTypes.txt exists for RECCAF.DLL."));
+		SetTestStepResult(EFail);
+		}	
+	else
+		INFO_PRINTF3(_L("File - CAgentResolver returned a mime type of: %S, matching the expected mime type of: %S"),&displayPtr2, &expectedFileMimeType);
+
+	CleanupStack::PopAndDestroy(displayMime2);
+	CleanupStack::PopAndDestroy(displayMime);
+	
+	__UHEAP_MARKEND;
+	
+	if (TestStepResult() != EFail)
+		{
+		SetTestStepResult(EPass);
+		}
+	
+	return TestStepResult();
+	}
+	
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+  
+// Tests DoRecognizeL API for WMDRM content .
+      
+TVerdict CCAFRecognizeStep::doWmdrmTestStepL()     
+    {     
+    SetTestStepResult(EFail);     
+         
+    TPtrC expectedFileMimeType;     
+    GetStringFromConfig(ConfigSection(),_L("filemime"), expectedFileMimeType);     
+         
+    TPtrC expectedContentMimeType;     
+    GetStringFromConfig(ConfigSection(),_L("contentmime"), expectedContentMimeType);     
+         
+    TBool expectedResult;     
+    GetBoolFromConfig(ConfigSection(),_L("recognized"), expectedResult);     
+         
+    __UHEAP_MARK;     
+    TPtrC header;     
+    HBufC8* headerData = NULL;     
+         
+    if(GetStringFromConfig(ConfigSection(),_L("header"), header))     
+        {     
+        headerData = ConvertDes16toHBufC8LC(header);     
+        }     
+    else     
+        {     
+        headerData = CreateWmdrmHeaderLC();      
+        }     
+      
+    // Pass the WMDRM header data to CAF DoRecognize function     
+    CAgentResolver* resolver = CAgentResolver::NewLC(ETrue);     
+             
+    TBuf8 <KCafTestMaxDataTypeLength> fileMimeType;     
+    TBuf8 <KCafTestMaxDataTypeLength> contentMimeType;     
+             
+    TBool result = resolver->DoRecognizeL(*headerData, fileMimeType, contentMimeType);     
+         
+    CheckResultL(result, fileMimeType, contentMimeType, expectedResult, expectedFileMimeType, expectedContentMimeType);     
+      
+    CleanupStack::PopAndDestroy(2, headerData);      
+      
+    __UHEAP_MARKEND;     
+    return TestStepResult();     
+    }     
+      
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/RecognizerStep.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,149 @@
+/*
+* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+
+#if (!defined __RECOGNIZER_STEP_H__)
+#define __RECOGNIZER_STEP_H__
+#include <test/testexecutestepbase.h>
+
+#include "cafstep.h"
+
+// Constants used to name test cases 
+_LIT(KCAFRecognizeStep,"CAFRecognizeStep");
+_LIT(KCAFRecognizerSpeedStep,"CAFRecognizerSpeedStep");
+_LIT(KCAFBufferSizeStep,"CAFBufferSizeStep");
+_LIT(KCAFApparcStep,"CAFApparcStep");
+_LIT(KCAF_DEF077443_Step,"CAF_DEF077443_Step");
+_LIT(KCAF_DEF078413_Step,"CAF_DEF078413_Step");
+
+class CCAFServer;
+class CApaDataRecognizerType;
+
+/* 
+* Used to test the CAgentResolver::DoRecognize() function
+* The ini file used in this test expects the following parameters to be specified
+*
+* FileName - full path and filename of the file to be investigated
+*
+* Container - the container mime type expected
+*
+* Content - the content mime type expected 
+*
+* Recognized - whether or not CAF should recognize this file
+*
+* If an agent recognizes the file, it fills in what it thinks the container and content mime 
+* types of the file are. The test verifies:
+* The file was recognized correctly (either recognized, or not recognized)
+* If it was recognized verify that the container mime type is correct
+* If it was recognized verify that the content mime type is correct
+* @internalComponent Exposure internally
+*/
+class CCAFRecognizeStep : public CCAFStep
+	{
+public:
+	CCAFRecognizeStep(CCAFServer& aParent);
+	~CCAFRecognizeStep();
+	virtual TVerdict doTestStepL();
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    TVerdict doWmdrmTestStepL();     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
+private:
+	void CheckResultL(TBool aResult, TDes8& aContainerMimeType, TDes8& aContentMimeType, TBool aExpectedResult, TDesC16& aExpectedContainerMime, TDesC16& aExpectedContentMime);
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test the speed of the CAgentResolver::DoRecognize() function
+* Creates and instance of CAgentResolver and calls DoRecognize() 1000 times for the file
+* specified in the INI file.
+* The ini file used in this test only needs one parameter specified
+*
+* FileName - full path and filename of the file to be investigated
+*
+* Timing information in the TestExecute log file indicates how long this takes
+* @internalComponent Exposure internally
+*/
+class CCAFRecognizerSpeedStep : public CCAFStep
+	{
+public:
+	CCAFRecognizerSpeedStep(CCAFServer& aParent);
+	~CCAFRecognizerSpeedStep ();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+
+/* 
+* Used to test CAgentResolver::PreferredBufferSize() function
+* CAgentResolver should use the static configuration data in each agent's resource file
+* to determine the buffer size required for apparc recognition
+* @internalComponent Exposure internally
+*/
+class CCAFBufferSizeStep : public CCAFStep
+	{
+public:
+	CCAFBufferSizeStep(CCAFServer& aParent);
+	~CCAFBufferSizeStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+
+/* 
+This test verifys that the CApaCafRecognizer correctly identifies the mime type 
+* The ini file specifies two parameters
+*
+* FileName - the file to recognize 
+*
+* CafMimeType - the expected mime type returned from RecognizeL()
+* 
+* @internalComponent Exposure internally
+*/
+class CCAFApparcStep : public CCAFStep
+	{
+public:
+	CCAFApparcStep(CCAFServer& aParent);
+	~CCAFApparcStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+This test verifies that upper case Mime types can be recognized.
+*
+* See DEF077443: Propagated:CAF should not be performing case sensitive comparisons on MIME types
+* 
+* @internalComponent Exposure internally
+*/
+class CCAF_DEF077443_Step : public CCAFStep
+	{
+public:
+	CCAF_DEF077443_Step(CCAFServer& aParent);
+	~CCAF_DEF077443_Step();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/RightsManagerStep.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,297 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <test/testexecutelog.h>
+#include "cafserver.h"
+#include "RightsManagerStep.h"
+#include "manager.h"
+#include "rightsmanager.h"
+#include "virtualpathptr.h"
+#include "streamableptrarray.h"
+#include "agent.h"
+#include "rightsinfo.h"
+#include "virtualpath.h"
+
+
+using namespace ContentAccess;
+
+
+/* 
+ * This step creates a rights manager
+ *
+ */
+
+CCAFRightsManagerStep::~CCAFRightsManagerStep()
+	{
+	}
+
+CCAFRightsManagerStep::CCAFRightsManagerStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFRightsManagerStep);
+	}
+
+
+TVerdict CCAFRightsManagerStep::doTestStepL()
+	{
+	TInt expectedResult;
+	TInt result;
+	CRightsManager *rightsmanager = NULL;
+	
+	RArray <TAgent> agents;
+
+	SetTestStepResult(EFail);
+
+	// Find the file to delete and the expected return code from the INI file
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF2(_L("CreateAgentResolver Expected result: %d"), expectedResult);
+
+	__UHEAP_MARK;
+	CManager *manager = CManager::NewL();
+	CleanupStack::PushL(manager);
+	TRAP(result, manager->ListAgentsL(agents));
+		
+	if(result == KErrNone && agents.Count() > 0)
+		{
+		TRAP(result, rightsmanager = manager->CreateRightsManagerL(agents[0]));
+		CleanupStack::PushL(rightsmanager);
+		if(result != expectedResult && rightsmanager)
+			{	
+			INFO_PRINTF3(_L("Create Rights Manager Expected result: %d, actual result: %d"), expectedResult, result);
+			}
+		else
+			{
+			SetTestStepResult(EPass);	
+			}
+		CleanupStack::PopAndDestroy(rightsmanager);
+		}
+
+	CleanupStack::PopAndDestroy(manager);		
+	agents.Close();
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+/* 
+ * This step creates tests the rights manager listing functions
+ *
+ */
+
+CCAFRightsManagerListStep::~CCAFRightsManagerListStep()
+	{
+	}
+
+CCAFRightsManagerListStep::CCAFRightsManagerListStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFRightsManagerListStep);
+	}
+
+
+TVerdict CCAFRightsManagerListStep::doTestStepL()
+	{
+	TInt expectedResult;
+	TInt result;
+	TInt ListAPI;
+	TPtrC uri;
+	CRightsManager *rightsManager = NULL;
+	
+	RArray <TAgent> agents;
+	RStreamablePtrArray <CRightsInfo> rights;
+	RStreamablePtrArray <CVirtualPath> contentList;
+
+	SetTestStepResult(EFail);
+
+	// Find the file to delete and the expected return code from the INI file
+	GetIntFromConfig(ConfigSection(),_L("API"),ListAPI);
+	
+	if(ListAPI !=8 && ListAPI !=9)
+		{
+		GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+		GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+		}
+		
+	__UHEAP_MARK;
+	CManager *manager = CManager::NewL();
+	CleanupStack::PushL(manager);
+	TRAP(result, manager->ListAgentsL(agents));
+		
+	if(result == KErrNone && agents.Count() > 0)
+		{
+		TRAP(result, rightsManager = manager->CreateRightsManagerL(agents[0]));
+		CleanupStack::PopAndDestroy(manager);		
+		if(rightsManager)
+			{	
+			CleanupStack::PushL(rightsManager);
+			if(ListAPI == 1)
+				{
+				rightsManager->ListAllRightsL(rights);
+				CleanupClosePushL(rights);
+				if(rights.Count() == 1)
+					{
+					SetTestStepResult(EPass);
+					}
+				else
+					{
+					INFO_PRINTF1(_L("ListAllRights() is empty"));			
+					}
+				CleanupStack::PopAndDestroy(&rights);
+				}
+			else if(ListAPI == 2)
+				{
+				rightsManager->ListRightsL(rights, uri);
+				CleanupClosePushL(rights);
+				if(rights.Count() == 1)
+					{
+					SetTestStepResult(EPass);
+					}
+				else
+					{
+					INFO_PRINTF1(_L("ListRights(uri) is empty"));			
+					}
+				CleanupStack::PopAndDestroy(&rights);
+				}
+			else if(ListAPI == 3)
+				{
+				TVirtualPathPtr virtualPath = uri;
+				rightsManager->ListRightsL(rights, virtualPath );
+				CleanupClosePushL(rights);
+				if(rights.Count() == 1)
+					{
+					SetTestStepResult(EPass);
+					}
+				else
+					{
+					INFO_PRINTF1(_L("ListRights(TVirtualPathPtr) is empty"));			
+					}
+				CleanupStack::PopAndDestroy(&rights);
+				}
+			else if(ListAPI == 4)
+				{
+				CRightsInfo *rightsInfo = CRightsInfo::NewL(KNullDesC(), KNullDesC(), ERightsTypeConsumable , ERightsStatusNone);
+				CleanupStack::PushL(rightsInfo);
+				rightsManager->ListContentL(contentList, *rightsInfo);
+				CleanupStack::PopAndDestroy(rightsInfo);
+				CleanupClosePushL(contentList);
+				if(contentList.Count() == 1)
+					{
+					SetTestStepResult(EPass);
+					}
+				else
+					{
+					INFO_PRINTF1(_L("ListContent(CRightsInfo) is empty"));			
+					}
+				CleanupStack::PopAndDestroy(&contentList);
+				}
+			else if(ListAPI == 5)
+				{
+				CRightsInfo *rightsInfo = CRightsInfo::NewL(KNullDesC(), KNullDesC(), ERightsTypeConsumable , ERightsStatusNone);
+				CleanupStack::PushL(rightsInfo);
+				MAgentRightsBase *ptr = rightsManager->GetRightsDataL(*rightsInfo);
+				CleanupStack::PopAndDestroy(rightsInfo);
+				if(ptr == NULL)
+					{
+					SetTestStepResult(EPass);
+					}
+				}
+			else if(ListAPI == 6)
+				{
+				CRightsInfo *rightsInfo = CRightsInfo::NewL(KNullDesC(), KNullDesC(), ERightsTypeStateless  , ERightsStatusNone);
+				CleanupStack::PushL(rightsInfo);
+				result = rightsManager->DeleteRightsObject(*rightsInfo);
+				CleanupStack::PopAndDestroy(rightsInfo);
+				if(result == KErrNone)
+					{
+					SetTestStepResult(EPass);
+					}
+				}
+			else if(ListAPI == 7)
+				{
+				TVirtualPathPtr virtualPath = uri;
+				result = rightsManager->DeleteAllRightsObjects(virtualPath);
+				if(result == KErrNone)
+					{
+					SetTestStepResult(EPass);
+					}
+				}
+			else if(ListAPI == 8 || ListAPI == 9)
+				{
+				//initialisation for testing purposes such as  iUri, iFs, iFile, iExpectedResult and iUniqueId. 
+				InitialiseFileHandleParametersL();
+				
+				// test the RFile overload
+				if (ListAPI ==8)
+					{
+					TRAP(result,rightsManager->ListRightsL(rights, iFile, iUniqueId));
+					CleanupClosePushL(rights);	
+											
+					if(result == iExpectedResult)
+						{
+						SetTestStepResult(EPass);
+						INFO_PRINTF1(_L("CRightsManager::ListRightsL()(RFile handle overload) PASSED"));
+						}
+					else
+						{
+						INFO_PRINTF1(_L("CRightsManager::ListRightsL()(RFile handle overload) returned unexpected error"));
+						INFO_PRINTF3(_L("CRightsManager::ListRightsL()(RFile handle overload) Expected result: %d, actual result: %d"), iExpectedResult, result);	
+						}	
+					CleanupStack::PopAndDestroy(&rights);	
+					}
+				else if (ListAPI ==9)
+					{
+					result = rightsManager->DeleteAllRightsObjects(iFile, iUniqueId);
+				
+					if(result == iExpectedResult)
+						{
+						SetTestStepResult(EPass);
+						INFO_PRINTF1(_L("CRightsManager::DeleteAllRightsObjects()(RFile handle overload) PASSED"));
+						}
+					else
+						{
+						INFO_PRINTF1(_L("CRightsManager::DeleteAllRightsObjects()(RFile handle overload) returned unexpected error"));		
+						INFO_PRINTF3(_L("CRightsManager::DeleteAllRightsObjects()(RFile handle overload) Expected result: %d, actual result: %d"), iExpectedResult, result);	
+						}						
+					}
+				//cleanup iFs and iFile instances by closing the handles.
+				CleanupStack::PopAndDestroy(2, &iFs);	
+				}
+			CleanupStack::PopAndDestroy(rightsManager);
+			}
+		else
+			{
+			if (result == KErrNotSupported) // dummy test agent expects -5
+				{
+				SetTestStepResult(EPass);
+				}
+			else
+				{
+				INFO_PRINTF1(_L("Create CRightsManager Failed"));		
+				}
+			}
+		}
+	else
+		{
+		INFO_PRINTF1(_L("Create CManager Failed"));
+		}
+	agents.Close();
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/RightsManagerStep.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,81 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+
+#if (!defined __RIGHTS_MANAGER_STEP_H__)
+#define __RIGHTS_MANAGER_STEP_H__
+#include <test/testexecutestepbase.h>
+
+#include "cafstep.h"
+
+// Constants used to name test cases 
+_LIT(KCAFRightsManagerStep,"CAFRightsManagerStep");
+_LIT(KCAFRightsManagerListStep,"CAFRightsManagerListStep");
+
+class CCAFServer;
+
+
+/* 
+* Used to test CManager::CreateRightsManager()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+*
+* result - the expected return code
+*
+* @internalComponent Exposure internally
+*/
+class CCAFRightsManagerStep : public CCAFStep
+	{
+public:
+	CCAFRightsManagerStep(CCAFServer& aParent);
+	~CCAFRightsManagerStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+
+
+/* 
+* Used to test CManager::Listxxxx() functions
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+*
+* result - the expected return code
+*
+* @internalComponent Exposure internally
+*/
+class CCAFRightsManagerListStep : public CCAFStep
+	{
+public:
+	CCAFRightsManagerListStep(CCAFServer& aParent);
+	~CCAFRightsManagerListStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/SupplierStep.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,719 @@
+/*
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <test/testexecutelog.h>
+#include <s32mem.h>
+#include "cafserver.h"
+#include "SupplierStep.h"
+#include "supplier.h"
+#include "cafmimeheader.h"
+#include "caferr.h"
+#include "metadataarray.h"
+#include "supplieroutputfile.h"
+#include "attribute.h"
+#include "bitset.h"
+
+#include <uri8.h>
+#ifndef SYMBIAN_DISABLE_UPWARD_DEPENDENCY
+#include <http.h>
+#include <http/rhttpsession.h>
+#include <http/rhttptransaction.h>
+#include <http/rhttpheaders.h>
+#endif
+
+using namespace ContentAccess;
+
+
+/* 
+ * This step imports a DCF file into CAF 
+ *
+ */
+CCafSupplierStep::~CCafSupplierStep()
+	{
+	}
+
+CCafSupplierStep::CCafSupplierStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFSupplierStep);
+	}
+
+
+TVerdict CCafSupplierStep::doTestStepL()
+	{
+	SetTestStepResult(EInconclusive);
+
+	RFs fs;
+	RFile file;
+	TBuf8 <128> readBuffer;
+	
+	INFO_PRINTF1(_L("Supplier Test - Agent provides output files"));
+	
+	TPtrC outputDirectory, sourceFileName, suggestedFileName, mimeType;
+	TInt expectedLeave;
+
+	// Get parameters from INI file
+	GetStringFromConfig(ConfigSection(),_L("OutputPath"),outputDirectory);
+	GetStringFromConfig(ConfigSection(),_L("SourceFileName"),sourceFileName);
+	GetStringFromConfig(ConfigSection(),_L("SuggestedFileName"),suggestedFileName);
+	GetStringFromConfig(ConfigSection(),_L("MimeType"),mimeType);
+	GetIntFromConfig(ConfigSection(),_L("LeaveResult"),expectedLeave);
+	
+	StartApparcServerL();
+
+	__UHEAP_MARK;
+	
+	HBufC8 *mime = ConvertDes16toHBufC8LC(mimeType);
+
+	CCafMimeHeader *header = CCafMimeHeader::NewL(mime->Des());
+	CleanupStack::PushL(header);
+
+	CSupplier *mySupplier = CSupplier::NewLC();
+	mySupplier->SetOutputDirectoryL(outputDirectory);
+	
+	// ignore return value, just exercises code for CCover
+	mySupplier->IsImportSupported(header->StandardMimeData(EContentType));
+
+	CImportFile *import = NULL;
+	TRAPD(leaveResult, import = mySupplier->ImportFileL(*header, suggestedFileName));
+	if(leaveResult != expectedLeave)
+		{
+		SetTestStepResult(EFail);
+		}
+	if(leaveResult == KErrNone)
+		{
+		CleanupStack::PushL(import);
+
+		// read the input file and pass it to the CAF
+		fs.Connect();
+		CleanupClosePushL(fs);
+	
+		TInt result = file.Open(fs, sourceFileName, EFileRead | EFileStream | EFileShareAny);
+		CleanupClosePushL(file);
+		while(result == KErrNone)
+			{
+			result = file.Read(readBuffer);
+			if(readBuffer.Length() == 0)
+				break;
+			User::LeaveIfError(import->WriteData(readBuffer));
+			}
+		CleanupStack::PopAndDestroy(&file); 
+		User::LeaveIfError(import->WriteDataComplete());
+
+		TInt n = import->OutputFileCountL();
+		for(TInt i = 0; i < n; i++)
+			{
+			// get output file name
+			TPtrC OutputFileName = import->OutputFileL(i).FileName();
+			INFO_PRINTF2(_L("Output File Created: %S"),&OutputFileName);
+
+			// get output file type (content or receipt)
+			TOutputType outputType = import->OutputFileL(i).OutputType();
+
+			if(outputType == EReceipt)
+				{
+				INFO_PRINTF1(_L("Output File is a receipt"));
+				}
+			else
+				{
+				INFO_PRINTF1(_L("Output File is content"));
+				}
+
+			// get output file mime type
+			TPtrC8 OutputMimeType = import->OutputFileL(i).MimeTypeL();
+			HBufC *mime = ConvertDes8toHBufC16LC(OutputMimeType );
+			INFO_PRINTF2(_L("Output File Mime Type: %S"),mime);
+			CleanupStack::PopAndDestroy(mime); 
+			}
+		CleanupStack::PopAndDestroy(&fs); 
+		CleanupStack::PopAndDestroy(import); 
+		}
+	CleanupStack::PopAndDestroy(mySupplier); 
+	CleanupStack::PopAndDestroy(header); 
+	CleanupStack::PopAndDestroy(mime); 
+	__UHEAP_MARKEND;
+
+	if (TestStepResult() != EFail)
+		{
+		SetTestStepResult(EPass);
+		}
+
+	return TestStepResult();
+	}
+
+
+
+/* 
+ * This step imports a DCF file into CAF 
+ *
+ */
+CCafSupplierAsyncStep::~CCafSupplierAsyncStep()
+	{
+	}
+
+CCafSupplierAsyncStep::CCafSupplierAsyncStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFSupplierAsyncStep);
+	}
+
+
+TVerdict CCafSupplierAsyncStep::doTestStepL()
+	{
+	SetTestStepResult(EInconclusive);
+
+	RFs fs;
+	RFile file;
+	TBuf8 <128> readBuffer;
+	TRequestStatus status;
+
+	INFO_PRINTF1(_L("Asynchronous Supplier Test - Agent provides output files"));
+	
+	TPtrC outputDirectory, sourceFileName, suggestedFileName, mimeType;
+	TInt expectedLeave;
+	
+	// Get parameters from INI file
+	GetStringFromConfig(ConfigSection(),_L("OutputPath"),outputDirectory);
+	GetStringFromConfig(ConfigSection(),_L("SourceFileName"),sourceFileName);
+	GetStringFromConfig(ConfigSection(),_L("SuggestedFileName"),suggestedFileName);
+	GetStringFromConfig(ConfigSection(),_L("MimeType"),mimeType);
+	GetIntFromConfig(ConfigSection(),_L("LeaveResult"),expectedLeave);
+
+	StartApparcServerL();
+
+
+	__UHEAP_MARK;
+	
+	HBufC8 *mime = ConvertDes16toHBufC8LC(mimeType);
+
+	CCafMimeHeader *header = CCafMimeHeader::NewL(mime->Des());
+	CleanupStack::PushL(header);
+
+	CSupplier *mySupplier = CSupplier::NewLC();
+	mySupplier->SetOutputDirectoryL(outputDirectory);
+
+	// ignore return value, just exercises code for CCover
+	mySupplier->IsImportSupported(header->StandardMimeData(EContentType));
+
+	CImportFile *import = NULL;
+	TRAPD(leaveResult, import = mySupplier->ImportFileL(*header, suggestedFileName));
+	if(leaveResult != expectedLeave)
+		{
+		SetTestStepResult(EFail);
+		}
+	if(leaveResult == KErrNone)
+		{
+		CleanupStack::PushL(import);
+
+		// read the input file and pass it to the CAF
+		fs.Connect();
+		CleanupClosePushL(fs);
+	
+		TInt result = file.Open(fs, sourceFileName, EFileRead | EFileStream | EFileShareAny);
+		CleanupClosePushL(file);
+		while(result == KErrNone)
+			{
+			result = file.Read(readBuffer);
+			if(readBuffer.Length() == 0)
+				break;
+			status = KRequestPending;
+			import->WriteData(readBuffer,status);
+			User::WaitForRequest(status);
+			}
+		CleanupStack::PopAndDestroy(&file); 
+		status = KRequestPending;
+		import->WriteDataComplete(status);
+		User::WaitForRequest(status);
+
+		TInt n = import->OutputFileCountL();
+		for(TInt i = 0; i < n; i++)
+			{
+			// get output file name
+			TPtrC OutputFileName = import->OutputFileL(i).FileName();
+			INFO_PRINTF2(_L("Output File Created: %S"),&OutputFileName);
+
+			// get output file type (content or receipt)
+			TOutputType outputType = import->OutputFileL(i).OutputType();
+
+			if(outputType == EReceipt)
+				{
+				INFO_PRINTF1(_L("Output File is a receipt"));
+				}
+			else
+				{
+				INFO_PRINTF1(_L("Output File is content"));
+				}
+
+			// get output file mime type
+			TPtrC8 OutputMimeType = import->OutputFileL(i).MimeTypeL();
+			HBufC *mime = ConvertDes8toHBufC16LC(OutputMimeType );
+			INFO_PRINTF2(_L("Output File Mime Type: %S"),mime);
+			CleanupStack::PopAndDestroy(mime); 
+			}
+
+		CleanupStack::PopAndDestroy(&fs); 
+		CleanupStack::PopAndDestroy(import); 
+		}
+	CleanupStack::PopAndDestroy(mySupplier); 
+	CleanupStack::PopAndDestroy(header); 
+	CleanupStack::PopAndDestroy(mime); 
+	__UHEAP_MARKEND;
+		
+	if (TestStepResult() != EFail)
+		{
+		SetTestStepResult(EPass);
+		}
+
+	return TestStepResult();
+	}
+
+
+
+/* 
+ * This step imports a DCF file into CAF 
+ *
+ */
+CCafClientOutputSupplierStep::~CCafClientOutputSupplierStep()
+	{
+	}
+
+CCafClientOutputSupplierStep::CCafClientOutputSupplierStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFClientOutputSupplierStep);
+	}
+
+void CCafClientOutputSupplierStep::CheckContentMimeL(CImportFile* aImport, TDes8& aContentMime, TDesC8& aExpectedContentMime)
+	{
+	if(!aImport->ContentMimeTypeL(aContentMime))
+		{
+		//Agent can't determine the content MIME type with available data at the moment
+						
+		INFO_PRINTF1(_L("Content MIME Type can't be determined"));
+		SetTestStepResult(EFail);
+		return;
+		}
+	
+									    
+	//If we reach here, we are expecting a correct Content MIME type 
+	HBufC *mime = ConvertDes8toHBufC16LC(aContentMime);
+	INFO_PRINTF2(_L("Content MIME Type: %S"), mime);
+	CleanupStack::PopAndDestroy(mime);
+										    					    				    					    	
+	if(aContentMime.CompareF(aExpectedContentMime) == 0)
+		{
+		SetTestStepResult(EPass);
+		}
+	else
+		{
+		ERR_PRINTF1(_L("Content MIME Type doesn't match expected"));
+		SetTestStepResult(EFail);
+		}
+			
+	}
+
+
+TVerdict CCafClientOutputSupplierStep::doTestStepL()
+	{
+	SetTestStepResult(EInconclusive);
+
+	RFs fs;
+	RFile file;
+	TBuf8 <128> readBuffer;
+	TBuf8 <255> mimetype8;
+	TFileName outputFileName;
+	RFile outputFile;
+	CImportFile *import = NULL;
+	
+	// first output file will be a.txt
+	_LIT(KOutputFileName, "C:\\something.drm");
+	outputFileName.Copy(KOutputFileName);
+	
+	INFO_PRINTF1(_L("Supplier Test - Client provides output files"));
+	
+	TPtrC outputDirectory, sourceFileName, suggestedFileName, mimeType, expectedContentMime;
+	TInt expectedLeave;
+	TBool checkContentMime = EFalse;
+	TBuf8<KMaxDataTypeLength> contentMimeType;	
+	
+	// Get parameters from INI file
+	GetStringFromConfig(ConfigSection(),_L("OutputPath"),outputDirectory);
+	GetStringFromConfig(ConfigSection(),_L("SourceFileName"),sourceFileName);
+	GetStringFromConfig(ConfigSection(),_L("SuggestedFileName"),suggestedFileName);
+	GetStringFromConfig(ConfigSection(),_L("MimeType"),mimeType);
+	GetIntFromConfig(ConfigSection(),_L("LeaveResult"),expectedLeave);
+	GetStringFromConfig(ConfigSection(),_L("ExpectedContentMime"),expectedContentMime);
+	GetBoolFromConfig(ConfigSection(),_L("CheckContentMime"),checkContentMime);
+	
+	
+	StartApparcServerL();
+
+	__UHEAP_MARK;
+	
+	mimetype8.Copy(mimeType);
+
+	// fill in meta data - just the mime type really
+	CMetaDataArray *array = CMetaDataArray::NewL();
+	CleanupStack::PushL(array);
+	_LIT8(KContentType,"content-type");
+	array->AddL(KContentType(), mimetype8);
+
+	// create a supplier session
+	CSupplier *mySupplier = CSupplier::NewL();
+	CleanupStack::PushL(mySupplier);
+	
+	// check import is supported, ignore return value, just exercises code for CCover
+	mySupplier->IsImportSupported(array->SearchL(KContentType()));
+
+	// create import session
+	TRAPD(leaveResult, import = mySupplier->ImportFileL(mimetype8, *array));
+	if(leaveResult != expectedLeave)
+		{
+		SetTestStepResult(EFail);
+		}
+	if(leaveResult == KErrNone)
+		{
+		CleanupStack::PushL(import);
+
+		// read the input file and pass it to the CAF
+		fs.Connect();
+		CleanupClosePushL(fs);
+		TInt result = file.Open(fs, sourceFileName, EFileRead | EFileStream | EFileShareAny);
+		CleanupClosePushL(file);
+		
+		TParsePtrC parse(suggestedFileName);
+		TPtrC desiredOutFileName( parse.Name() );
+		
+		while(result == KErrNone)
+			{
+			result = file.Read(readBuffer);
+			if(readBuffer.Length() == 0)
+				break;
+			result = import->WriteData(readBuffer);
+			while(result == KErrCANewFileHandleRequired)
+				{
+				
+				if(checkContentMime)
+					{
+					
+					//If CheckContentMimeL failed, Client code should assume content MIME type wouldn't
+					//be available until after the supply session has finished. The imported data could be
+					//output to default location
+					//In this test step, data are always output to default location regardless of content MIME
+					//type
+					TBuf8<KMaxDataTypeLength> expectedContentMime8bit;
+					expectedContentMime8bit.Copy(expectedContentMime);
+					CheckContentMimeL(import, contentMimeType, expectedContentMime8bit);
+					//no more check needed in following iterations
+					checkContentMime = EFalse;
+						
+					//At this point client should decide where to save the file based on content mime
+					
+					}
+				
+				const TInt KMaxExtLen = 28;
+				TBuf<KMaxExtLen> suggestedExt;
+				User::LeaveIfError(import->GetSuggestedOutputFileExtension(suggestedExt));
+				outputFileName.Copy(outputDirectory);
+				outputFileName.Append(desiredOutFileName);
+				outputFileName.Append(suggestedExt);
+				// create a new outputfile
+				fs.Delete(outputFileName);
+				User::LeaveIfError(outputFile.Create(fs,outputFileName, EFileShareAny  | EFileStream | EFileWrite));
+				result = import->ContinueWithNewOutputFile(outputFile,outputFileName);
+				outputFile.Close();
+				}
+			User::LeaveIfError(result);
+			}
+		CleanupStack::PopAndDestroy(&file); 
+		result = import->WriteDataComplete();
+		while(result == KErrCANewFileHandleRequired)
+				{
+				TFileName suggestedName;
+				User::LeaveIfError(import->GetSuggestedOutputFileName(suggestedName));
+				outputFileName.Copy(outputDirectory);
+				outputFileName.Append(suggestedName);
+
+				// create a new outputfile
+				fs.Delete(outputFileName);
+				User::LeaveIfError(outputFile.Create(fs,outputFileName, EFileShareAny  | EFileStream | EFileWrite));
+				result = import->ContinueWithNewOutputFile(outputFile,outputFileName);
+				outputFile.Close();
+				}
+	
+
+		TInt n = import->OutputFileCountL();
+		for(TInt i = 0; i < n; i++)
+			{
+			// get output file name
+			TPtrC OutputFileName = import->OutputFileL(i).FileName();
+			INFO_PRINTF2(_L("Output File Created: %S"),&OutputFileName);
+
+			// get output file type (content or receipt)
+			TOutputType outputType = import->OutputFileL(i).OutputType();
+
+			if(outputType == EReceipt)
+				{
+				INFO_PRINTF1(_L("Output File is a receipt"));
+				}
+			else
+				{
+				INFO_PRINTF1(_L("Output File is content"));
+				}
+
+			// get output file mime type
+			TPtrC8 OutputMimeType = import->OutputFileL(i).MimeTypeL();
+			HBufC *mime = ConvertDes8toHBufC16LC(OutputMimeType );
+			INFO_PRINTF2(_L("Output File Mime Type: %S"),mime);
+			CleanupStack::PopAndDestroy(mime); 
+			}
+		CleanupStack::PopAndDestroy(&fs); 
+		CleanupStack::PopAndDestroy(import); 
+		}
+	CleanupStack::PopAndDestroy(mySupplier); 
+	CleanupStack::PopAndDestroy(array); 
+	__UHEAP_MARKEND;
+
+	if (TestStepResult() != EFail)
+		{
+		SetTestStepResult(EPass);
+		}
+
+	return TestStepResult();
+	}
+
+
+/* 
+ * This step tests the ExternalizeL() and InternalizeL() functions for
+ * CCafMimeHeader
+ */
+CCAFSupplierSerializeStep::~CCAFSupplierSerializeStep()
+	{
+	}
+
+CCAFSupplierSerializeStep::CCAFSupplierSerializeStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFSupplierSerializeStep);
+	}
+
+
+TVerdict CCAFSupplierSerializeStep::doTestStepL()
+	{	
+	_LIT8(KDrmMime,"application/testagent.drm");
+	_LIT8(KBinaryEncoding,"Binary");
+	_LIT8(KOmaRightsPending, "X-Oma-Drm-Separate-Delivery");
+	_LIT8(KOmaRightsPendingValue, "12");
+	
+	SetTestStepResult(EInconclusive); // Default result to EInconclusive
+
+	__UHEAP_MARK;
+	
+	// create a CafMimeHeader with "content type:" application/testagent.drm
+	CCafMimeHeader *header = CCafMimeHeader::NewL(KDrmMime());
+	CleanupStack::PushL(header);
+	
+	// Add some information to the header
+	header->SetStandardMimeDataL(EContentTransferEncoding, KBinaryEncoding());
+	header->AddNonStandardMimeL(KOmaRightsPending(), KOmaRightsPendingValue());
+
+	// Create a buffer stream
+	CBufFlat* buf = CBufFlat::NewL(50);
+	CleanupStack::PushL(buf);
+	RBufWriteStream stream(*buf);
+	CleanupClosePushL(stream);
+
+	// call the stream function
+	stream << *header;
+	CleanupStack::PopAndDestroy(&stream);
+
+	// Now, create an HBufC8 from the stream buf's length, and copy 
+	// the stream buffer into this descriptor
+	HBufC8* des = HBufC8::NewL(buf->Size());
+	TPtr8 ptr(des->Des());
+	buf->Read(0, ptr, buf->Size());
+
+	// destroy the buffer
+	CleanupStack::PopAndDestroy(buf);
+	CleanupStack::PushL(des);
+
+	// Now, stream a new CCafMimeHeader from the descriptor
+	CCafMimeHeader* newHeader = CCafMimeHeader::NewL(KNullDesC8());
+	CleanupStack::PushL(newHeader);
+	RDesReadStream readstream(*des);
+	CleanupClosePushL(readstream);
+	readstream >> *newHeader;
+	CleanupStack::PopAndDestroy(&readstream);
+
+	// Now check that the new bitset equals the old one
+	TInt result = newHeader->StandardMimeData(EContentType).Compare(KDrmMime());
+	if (result != 0)
+		{
+		INFO_PRINTF1(_L("Content type was not copied properly during seriaization"));
+		SetTestStepResult(EFail);
+		}
+	result = newHeader->StandardMimeData(EContentTransferEncoding).Compare(KBinaryEncoding());
+	if (result != 0)
+		{
+		INFO_PRINTF1(_L("Content Length was not copied properly during seriaization"));
+		SetTestStepResult(EFail);
+		}
+	
+	if (newHeader->NonStandardMimeCount() != 1)
+		{
+		INFO_PRINTF1(_L("Non standard field array not copied properly during seriaization"));
+		SetTestStepResult(EFail);
+		}
+
+	result = newHeader->NonStandardMimeField(0).Compare(KOmaRightsPending());
+	if (result != 0)
+		{
+		INFO_PRINTF1(_L("Non standard field not copied properly during seriaization"));
+		SetTestStepResult(EFail);
+		}
+
+	result = newHeader->NonStandardMimeData(0).Compare(KOmaRightsPendingValue());
+	if (result != 0)
+		{
+		INFO_PRINTF1(_L("Non standard field data was not copied properly during seriaization"));
+		SetTestStepResult(EFail);
+		}
+
+	CleanupStack::PopAndDestroy(3, header);
+
+	__UHEAP_MARKEND;
+	
+	if (TestStepResult() != EFail)
+		{
+		SetTestStepResult(EPass);
+		}
+
+	return TestStepResult();
+	}
+
+#ifndef SYMBIAN_DISABLE_UPWARD_DEPENDENCY
+
+/* 
+ * Check that applications can retrieve the HTTP request headers
+ */
+CCAFHTTPRequestHeadersStep::~CCAFHTTPRequestHeadersStep()
+	{
+	}
+
+CCAFHTTPRequestHeadersStep::CCAFHTTPRequestHeadersStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFHTTPRequestHeadersStep);
+	}
+
+
+void CCAFHTTPRequestHeadersStep::MHFRunL(RHTTPTransaction, const THTTPEvent&)
+	{
+	
+	}
+	
+TInt CCAFHTTPRequestHeadersStep::MHFRunError(TInt, RHTTPTransaction, const THTTPEvent&)
+	{
+	return 0;
+	}
+
+
+TVerdict CCAFHTTPRequestHeadersStep::doTestStepL()
+	{	
+	_LIT8(Kuri, "http://www.symbian.com/");
+	TPtrC8 acceptHeader;
+	TInt i = 0;
+	TInt result = 0;
+	
+	SetTestStepResult(EInconclusive); // Default result to EInconclusive
+	THTTPHdrVal aValue;
+	
+	__UHEAP_MARK;
+
+	CSupplier* supplier = CSupplier::NewLC();
+	
+	// Create an HTTP session 
+	RHTTPSession session;
+	session.OpenL();
+	RStringPool pool = session.StringPool();
+	
+	
+	// Convert the URI string into a TUri8
+	TUriParser8 parser;
+	parser.Parse(Kuri());
+	
+	// create an HTTP transaction
+	RHTTPTransaction transaction = session.OpenTransactionL(parser, *this, pool.StringF(HTTP::EGET,RHTTPSession::GetTable()));
+	RHTTPHeaders hdr = transaction.Request().GetHeaderCollection();
+
+	// Get the request headers from the agent
+	supplier->PrepareHTTPRequestHeaders(pool, hdr);
+	
+	TInt fieldParts = hdr.FieldPartsL(pool.StringF(HTTP::EAccept, RHTTPSession::GetTable()));
+	if(fieldParts == 3)
+		{
+		for(i = 0; i < fieldParts; i++)
+			{
+			// loop over all accept headers make sure we find the three we expect
+			User::LeaveIfError(hdr.GetField(pool.StringF(HTTP::EAccept, RHTTPSession::GetTable()), i, aValue));
+	
+			RStringF header = (RStringF) aValue;
+			acceptHeader.Set(header.DesC()); 
+		
+			// Reference Test Agent - content MIME type
+			if(acceptHeader.Compare(_L8("application/x-rta.drm.content")) == 0)
+				{
+				result |= 1;
+				}
+			// Reference Test Agent - content + rights MIME type
+			else if(acceptHeader.Compare(_L8("application/x-rta.drm.contentrights")) == 0)
+				{
+				result |= 2;
+				}
+			// Test Agent - MIME type
+			else if(acceptHeader.Compare(_L8("APPLICATION/TESTAGENT.DRM")) == 0)
+				{
+				result |= 4;
+				}
+			}
+		if(result != 7)
+			{
+			// not all three headers were found
+			INFO_PRINTF1(_L("Not all expected HTTP Accept headers were present"));
+			SetTestStepResult(EFail);		
+			}
+		}
+	else
+		{
+		// We were expecting three accept headers to be set
+		// two from the Reference Test Agent and one from Test Agent
+		INFO_PRINTF2(_L("ERROR: Only %d HTTP Accept headers were returned, expected 3"), fieldParts);
+		SetTestStepResult(EFail);	
+		}
+		
+	transaction.Close();
+	session.Close();
+	CleanupStack::PopAndDestroy(supplier);
+	__UHEAP_MARKEND;
+	
+	if (TestStepResult() != EFail)
+		{
+		SetTestStepResult(EPass);
+		}
+
+	return TestStepResult();
+	}
+
+#endif
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/SupplierStep.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,129 @@
+/*
+* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+
+#if (!defined __SUPPLIER_STEP_H__)
+#define __SUPPLIER_STEP_H__
+#include <test/testexecutestepbase.h>
+
+#include "cafstep.h"
+#include "importfile.h"
+
+#ifndef SYMBIAN_DISABLE_UPWARD_DEPENDENCY
+#include <http/mhttptransactioncallback.h>
+#endif
+
+// Constants used to name test cases 
+_LIT(KCAFSupplierStep,"CAFSupplierStep");
+_LIT(KCAFSupplierAsyncStep,"CAFSupplierAsyncStep");
+_LIT(KCAFSupplierSerializeStep,"CAFSupplierSerializeStep");
+_LIT(KCAFClientOutputSupplierStep,"CAFClientOutputSupplierStep");
+#ifndef SYMBIAN_DISABLE_UPWARD_DEPENDENCY
+_LIT(KCAFHTTPRequestHeadersStep,"CAFHTTPRequestHeaders");
+#endif
+class CCAFServer;
+
+
+/* 
+* Used to test the import DCF files into the Content Access Framework
+*
+* @internalComponent Exposure internally
+*/
+class CCafSupplierStep : public CCAFStep
+	{
+public:
+	CCafSupplierStep(CCAFServer& aParent);
+	~CCafSupplierStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+
+/* 
+* Used to test the import DCF files into the Content Access Framework
+*
+* @internalComponent Exposure internally
+*/
+class CCafSupplierAsyncStep : public CCAFStep
+	{
+public:
+	CCafSupplierAsyncStep(CCAFServer& aParent);
+	~CCafSupplierAsyncStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+
+/* 
+* Used to test CCafMimeHeader::ExternalizeL() and CCafMimeHeader::InternalizeL()
+*
+* @internalComponent Exposure internally
+*/
+class CCAFSupplierSerializeStep : public CCAFStep
+	{
+public:
+	CCAFSupplierSerializeStep(CCAFServer& aParent);
+	~CCAFSupplierSerializeStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+
+/* 
+* Used to test the import DCF files into the Content Access Framework
+*
+* @internalComponent Exposure internally
+*/
+class CCafClientOutputSupplierStep : public CCAFStep
+	{
+public:
+	CCafClientOutputSupplierStep(CCAFServer& aParent);
+	~CCafClientOutputSupplierStep();
+	virtual TVerdict doTestStepL();
+	void CheckContentMimeL(ContentAccess::CImportFile* aImport, TDes8& aContentMime, TDesC8& aExpectedContentMime);
+private:
+	CCAFServer& iParent;
+	};
+
+
+#ifndef SYMBIAN_DISABLE_UPWARD_DEPENDENCY
+/* 
+* Used to test that an application can retrieve HTTP request headers
+* @internalComponent Exposure internally
+*/
+class CCAFHTTPRequestHeadersStep : public CCAFStep, public MHTTPTransactionCallback
+	{
+public:
+	CCAFHTTPRequestHeadersStep(CCAFServer& aParent);
+	~CCAFHTTPRequestHeadersStep();
+	virtual TVerdict doTestStepL();
+	
+	virtual void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent &aEvent);
+	virtual TInt MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent &aEvent);
+private:
+	CCAFServer& iParent;
+	};
+
+#endif
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/bitsetstep.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,454 @@
+/*
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <caf/caf.h>
+#include <caf/bitset.h>
+#include <caf/attribute.h>
+#include <s32mem.h>
+#include "bitsetstep.h"
+
+const TInt KAttrTop = 10;
+
+using namespace ContentAccess;
+
+CBitsetBaseStep::CBitsetBaseStep(const TDesC& aStepName)
+	{
+	SetTestStepName(aStepName);
+	}
+
+TVerdict CBitsetBaseStep::doTestStepPreambleL()
+	{
+	return TestStepResult();
+	}
+
+TVerdict CBitsetBaseStep::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+CBitset* CBitsetBaseStep::GetBitsetLC(const TDesC& aHeader)
+	{
+	_LIT(KBitCount, "bitcount");
+	_LIT(KBit, "bit%02d");
+
+	// Firstly, from the script, get the number of bits to set. If aHeader
+	// is "left-", then the bitcount key is "left-bitcount"
+	HBufC* buf = HBufC::NewLC(aHeader.Length() + KBitCount().Length());
+	TPtr ptr(buf->Des());
+	ptr = aHeader;
+	ptr.Append(KBitCount());
+	TInt bitcount = 0;
+	GetIntFromConfig(ConfigSection(), ptr, bitcount);
+
+	INFO_PRINTF3(_L("%S = %d"), &ptr, bitcount);
+
+	// Now, create the bitset
+	CBitset* bitset = CBitset::NewLC(bitcount);
+	
+	TInt i = 0;
+	for (; i < bitcount; ++i)
+		{
+		TInt bit = 0;
+		ptr = aHeader;
+		ptr.AppendFormat(KBit, i);
+		GetIntFromConfig(ConfigSection(), ptr, bit);
+		if (bit)
+			{
+			bitset->Set(i);
+			INFO_PRINTF2(_L("%S is set"), &ptr);
+			}
+		}
+
+	CleanupStack::Pop(bitset);
+	CleanupStack::PopAndDestroy(buf);
+	CleanupStack::PushL(bitset);
+	return bitset;
+	}
+
+/*
+ * Step2 performs some basic internal Bitset sanity tests
+ *
+ */
+
+CBasicBitsetStep::CBasicBitsetStep() 
+	: CBitsetBaseStep(KBasicBitsetStep)
+	{
+	}
+
+//	EIsProtected EIsForwardable EIsModifyable EIsCopyable
+TVerdict CBasicBitsetStep::doTestStepL()
+	{
+	TInt i;
+	SetTestStepResult(EPass); // Default result to PASS
+
+	__UHEAP_MARK;
+	INFO_PRINTF1(_L("Basic Bitset Test"));
+
+	// Note we must size according to current EAttrTop (attribute.h)
+	INFO_PRINTF1(_L("Creating set1..."));
+	CBitset *set1 = CBitset::NewLC((TAttribute) KAttrTop); // on cleanup
+
+	// check that all the bits are initially not set
+	for(i = 0; i < KAttrTop; i++)
+		{
+		if (set1->IsSet(i))
+			{
+			INFO_PRINTF1(_L("Bitset::NewLC() test failed."));
+			SetTestStepResult(EFail);
+			}
+		}
+	
+	INFO_PRINTF1(_L("Performing single bit set/test..."));
+	set1->Set(EIsForwardable);
+
+	// check that only EIsForwardable is set
+	for(i = 0; i < KAttrTop; i++)
+		{
+		if (set1->IsSet(i) && i != EIsForwardable)
+			{
+			INFO_PRINTF1(_L("Single test/set(1) test failed."));
+			SetTestStepResult(EFail);
+			}
+		}
+	if (!set1->IsSet(EIsForwardable))
+		{
+		INFO_PRINTF1(_L("Single test/set(2) failed."));
+		SetTestStepResult(EFail);
+		}
+
+	set1->Unset(EIsForwardable);
+
+	// check that none of the bits are set
+	for(i = 0; i < KAttrTop; i++)
+		{
+		if (set1->IsSet(i))
+			{
+			INFO_PRINTF1(_L("Single test/set(3) failed."));
+			SetTestStepResult(EFail);
+			}
+		}
+
+	INFO_PRINTF1(_L("Performing setall tests..."));
+	set1->SetAll();
+
+	// check that all bits are set
+	for(i = 0; i < KAttrTop; i++)
+		{
+		if (!set1->IsSet(i))
+			{
+			INFO_PRINTF1(_L("SetAll test failed."));
+			SetTestStepResult(EFail);
+			}
+		}
+	
+	set1->Reset();
+
+	// check all bits are reset
+	for(i = 0; i < KAttrTop; i++)
+		{
+		if (set1->IsSet(i))
+			{
+			INFO_PRINTF1(_L("Reset test failed."));
+			SetTestStepResult(EFail);
+			}
+		}
+
+	CleanupStack::PopAndDestroy(set1);	
+	
+	__UHEAP_MARKEND;
+
+	return TestStepResult();
+	}
+
+// --------------------------------------------------------------------------
+// This step tests the bitset SetList and IsSetList functions
+
+CBitsetListStep::CBitsetListStep()
+	: CBitsetBaseStep(KBitsetListStep)
+	{
+	}
+
+TVerdict CBitsetListStep::doTestStepL()
+	{
+	TInt i;
+	SetTestStepResult(EPass); 
+
+	__UHEAP_MARK;
+
+	INFO_PRINTF1(_L("Creating set1..."));
+
+	CBitset *set1 = CBitset::NewLC(KAttrTop); 
+
+	INFO_PRINTF1(_L("Performing SetList call"));
+	set1->SetListL(2, EIsCopyable, EIsModifyable);
+
+	for(i = 0; i < KAttrTop; i++)
+		{
+		if (set1->IsSet(i) && i != EIsCopyable && i != EIsModifyable)
+			{
+			INFO_PRINTF1(_L("SetList(1) failed."));
+			SetTestStepResult(EFail);
+			}
+		}
+
+	if (!set1->IsSet(EIsModifyable) || !set1->IsSet(EIsCopyable))
+		{
+		INFO_PRINTF1(_L("SetList(2) failed."));
+		SetTestStepResult(EFail);
+		}
+
+	// Now check the IsSetList call
+	INFO_PRINTF1(_L("Performing IsSetList calls"));
+	if (!set1->IsSetList(2, EIsCopyable, EIsModifyable))
+		{
+		INFO_PRINTF1(_L("IsSetList call(3) failed."));
+		SetTestStepResult(EFail);
+		}
+
+	if (set1->IsSetList(2, EIsProtected, EIsForwardable))
+		{
+		INFO_PRINTF1(_L("IsSetList call(4) failed."));
+		SetTestStepResult(EFail);
+		}
+
+	CleanupStack::PopAndDestroy(set1);	
+	__UHEAP_MARKEND;
+
+	return TestStepResult();
+	}
+
+// --------------------------------------------------------------------------
+
+CBitsetEqualityStep::CBitsetEqualityStep()
+	: CBitsetBaseStep(KBitsetEqualityStep)
+	{
+	}
+
+TVerdict CBitsetEqualityStep::doTestStepL()
+	{
+	SetTestStepResult(EPass); // Default result to EPass
+
+	__UHEAP_MARK;
+	// Get the bitset from the script section
+	CBitset* left = GetBitsetLC(_L("left-"));
+	CBitset* right = GetBitsetLC(_L("right-"));
+
+	// Now see whether we expect the result to be equal
+	TBool equalExpected = EFalse;
+	GetIntFromConfig(ConfigSection(), _L("equal"), equalExpected);
+
+	if (equalExpected)
+		{
+		INFO_PRINTF1(_L("Equality expected"));
+		}
+	else
+		{
+		INFO_PRINTF1(_L("Inequality expected"));
+		}
+
+	TBool result = (*left == *right);
+	if (!result != !equalExpected)
+		{
+		INFO_PRINTF1(_L("Equality test failed."));
+		SetTestStepResult(EFail);
+		}
+	CleanupStack::PopAndDestroy(2, left);
+
+	__UHEAP_MARKEND;
+
+	return TestStepResult();
+	}
+
+// --------------------------------------------------------------------------
+
+CBitsetCopyStep::CBitsetCopyStep()
+	: CBitsetBaseStep(KBitsetCopyStep)
+	{
+	}
+
+TVerdict CBitsetCopyStep::doTestStepL()
+	{
+	SetTestStepResult(EPass); // Default result to EPass
+
+	__UHEAP_MARK;
+	// Get the bitset from the script section
+	CBitset* set = GetBitsetLC(KNullDesC);
+
+	// Now, create a copy
+	CBitset* copy = CBitset::NewLC(*set);
+
+	// Now check the copy
+	if (*set != *copy)
+		{
+		INFO_PRINTF1(_L("Copy constructor return unequal result."));
+		SetTestStepResult(EFail);
+		}
+
+	// Now create another bitset of arbitrary length
+	CBitset* another = CBitset::NewLC(5);
+
+	// Perform assignment
+	*another = *copy;
+
+	// Now check another equals the original set
+	if (*set != *another)
+		{
+		INFO_PRINTF1(_L("operator= returned unequal result."));
+		SetTestStepResult(EFail);
+		}
+
+	// Now invert another and copy and make sure they are equal
+	another->Invert();
+	copy->Invert();
+
+	if (*copy != *another)
+		{
+		INFO_PRINTF1(_L("Invert returned unequal result."));
+		SetTestStepResult(EFail);
+		}
+
+	// Invert the copy again and ensure it is equal to the original
+	copy->Invert();
+	if (*set != *copy)
+		{
+		INFO_PRINTF1(_L("Double invert fails."));
+		SetTestStepResult(EFail);
+		}
+
+	CleanupStack::PopAndDestroy(3, set);
+
+	__UHEAP_MARKEND;
+
+	return TestStepResult();
+	}
+
+// --------------------------------------------------------------------------
+
+CBitsetSerialiseStep::CBitsetSerialiseStep()
+	: CBitsetBaseStep(KBitsetSerialiseStep)
+	{
+	}
+
+TVerdict CBitsetSerialiseStep::doTestStepL()
+	{
+	SetTestStepResult(EPass); // Default result to EPass
+
+	__UHEAP_MARK;
+	// Get the bitset from the script section
+	CBitset* set = GetBitsetLC(KNullDesC);
+
+	// Create a buffer stream
+	CBufFlat* buf = CBufFlat::NewL(50);
+	CleanupStack::PushL(buf);
+	RBufWriteStream stream(*buf);
+	CleanupClosePushL(stream);
+
+	// call the stream function
+	stream << *set;
+	CleanupStack::PopAndDestroy(&stream);
+
+	// Now, create an HBufC8 from the stream buf's length, and copy 
+	// the stream buffer into this descriptor
+	HBufC8* des = HBufC8::NewL(buf->Size());
+	TPtr8 ptr(des->Des());
+	buf->Read(0, ptr, buf->Size());
+
+	// destroy the buffer
+	CleanupStack::PopAndDestroy(buf);
+	CleanupStack::PushL(des);
+
+	// Now, stream a new bitset from the descriptor
+	CBitset* newset = CBitset::NewLC(5);
+	RDesReadStream readstream(*des);
+	CleanupClosePushL(readstream);
+	readstream >> *newset;
+	CleanupStack::PopAndDestroy(&readstream);
+
+	// Now check that the new bitset equals the old one
+	if (*set != *newset)
+		{
+		INFO_PRINTF1(_L("serialisation returned unequal result."));
+		SetTestStepResult(EFail);
+		}
+
+	CleanupStack::PopAndDestroy(3, set);
+
+	__UHEAP_MARKEND;
+
+	return TestStepResult();
+	}
+
+// --------------------------------------------------------------------------
+
+CBitsetPanicStep::CBitsetPanicStep()
+	: CBitsetBaseStep(KBitsetPanicStep)
+	{
+	}
+
+TVerdict CBitsetPanicStep::doTestStepL()
+	{
+	SetTestStepResult(EPass); // Default result to EPass
+
+	__UHEAP_MARK;
+	// Get the bitset from the script section
+	CBitset* panic = GetBitsetLC(_L("panic-"));
+
+	// Now see whether we expect the result to be equal
+	TInt panictest = -1;
+	GetIntFromConfig(ConfigSection(), _L("panictest"), panictest);
+
+	// all of the following cases should panic
+	switch(panictest)
+		{
+	case 1:
+		INFO_PRINTF1(_L("IsSet(-1)"));
+		panic->IsSet(-1);
+		break;
+	case 2:
+		INFO_PRINTF1(_L("IsSet(MaxBits()+1)"));
+		panic->IsSet(panic->MaxBits()+1);
+		break;
+	case 3:
+		INFO_PRINTF1(_L("Set(-1)"));
+		panic->Set(-1);
+		break;
+	case 4:
+		INFO_PRINTF1(_L("Set(MaxBits()+1)"));
+		panic->Set(panic->MaxBits()+1);
+		break;
+	case 5:
+		INFO_PRINTF1(_L("UnSet(-1)"));
+		panic->Unset(-1);
+		break;
+	case 6:
+		INFO_PRINTF1(_L("UnSet(MaxBits()+1)"));
+		panic->Unset(panic->MaxBits()+1);
+		break;
+
+	default:
+		SetTestStepResult(EFail); 
+		};
+
+	SetTestStepResult(EFail); 
+	CleanupStack::PopAndDestroy(panic);
+
+	__UHEAP_MARKEND;
+
+	return TestStepResult();
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/bitsetstep.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,99 @@
+/*
+* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+
+#ifndef __BITSETSTEP_H__
+#define __BITSETSTEP_H__
+
+#include <test/testexecutestepbase.h>
+#include "cafstep.h"
+
+namespace ContentAccess
+	{
+	class CBitset;
+	}
+
+_LIT(KBasicBitsetStep,"BasicBitsetStep");
+_LIT(KBitsetListStep,"BitsetListStep");
+_LIT(KBitsetEqualityStep,"BitsetEqualityStep");
+_LIT(KBitsetCopyStep,"BitsetCopyStep");
+_LIT(KBitsetSerialiseStep,"BitsetSerialiseStep");
+_LIT(KBitsetPanicStep,"BitsetPanicStep");
+
+// not a step, but baseclass for all bitset tests
+class CBitsetBaseStep : public CCAFStep
+	{
+public:
+	CBitsetBaseStep(const TDesC& aStepName);
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepPostambleL();
+
+protected:
+	// Create bitset based on data from the script.
+	// aHeader specifies how the key is formed. eg if aHeader is "left-",
+	// then the key "left-bitcount" specifies how many bits there are,
+	// and "left-bit0" specifies bit0, etc
+	ContentAccess::CBitset* GetBitsetLC(const TDesC& aHeader);
+	};
+
+class CBasicBitsetStep : public CBitsetBaseStep
+	{
+public:
+	CBasicBitsetStep();
+	virtual TVerdict doTestStepL();
+	};
+
+class CBitsetListStep : public CBitsetBaseStep
+	{
+public:
+	CBitsetListStep();
+	virtual TVerdict doTestStepL();
+	};
+
+class CBitsetEqualityStep : public CBitsetBaseStep
+	{
+public:
+	CBitsetEqualityStep();
+	virtual TVerdict doTestStepL();
+	};
+
+class CBitsetCopyStep : public CBitsetBaseStep
+	{
+public:
+	CBitsetCopyStep();
+	virtual TVerdict doTestStepL();
+	};
+
+// Test the internalize and externalize methods
+class CBitsetSerialiseStep : public CBitsetBaseStep
+	{
+public:
+	CBitsetSerialiseStep();
+	virtual TVerdict doTestStepL();
+	};
+
+// Test the panic when invalid bits are set, cleared or checked
+class CBitsetPanicStep : public CBitsetBaseStep
+	{
+public:
+	CBitsetPanicStep();
+	virtual TVerdict doTestStepL();
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/cafserver.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,296 @@
+/*
+* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Example file/test code to demonstrate how to develop a TestExecute Server
+* Developers should take this project as a template and substitute their own
+* code at the __EDIT_ME__ tags
+* for (WINS && !EKA2) versions will be xxxServer.Dll and require a thread to be started
+* in the process of the client. The client initialises the server by calling the
+* one and only ordinal.
+*
+*/
+
+
+#include "cafserver.h"
+#include "cafstep.h"
+#include "bitsetstep.h"
+#include "Consumerstep.h"
+#include "contentstep.h"
+#include "RecognizerStep.h"
+#include "ManagerStep.h"
+#include "RightsManagerStep.h"
+#include "SupplierStep.h"
+#include "oomstep.h"
+#include "CafUtilsStep.h"
+#include "CleanupStep.h"
+
+
+CCAFServer* CCAFServer::NewL()
+	{
+	CCAFServer * server = new (ELeave) CCAFServer();
+	CleanupStack::PushL(server);
+	User::LeaveIfError(server->iFs.Connect());
+
+	// Make the file session sharable
+	User::LeaveIfError(server->iFs.ShareProtected());
+
+	// CServer base class call	
+	RProcess handle = RProcess();
+	TParsePtrC serverName(handle.FileName());
+	server->StartL(serverName.Name());
+
+	CleanupStack::Pop(server);
+	return server;
+	}
+
+// EKA2 much simpler
+// Just an E32Main and a MainL()
+LOCAL_C void MainL()
+/*
+ * Much simpler, uses the new Rendezvous() call to sync with the client
+ */
+	{
+	// Leave the hooks in for platform security
+#if (defined __DATA_CAGING__)
+	RProcess().DataCaging(RProcess::EDataCagingOn);
+	RProcess().SecureApi(RProcess::ESecureApiOn);
+#endif
+	CActiveScheduler* sched=NULL;
+	sched=new(ELeave) CActiveScheduler;
+	CActiveScheduler::Install(sched);
+	// __EDIT_ME__ Your server name
+	CCAFServer* server = NULL;
+	// Create the CTestServer derived server
+	// __EDIT_ME__ Your server name
+	TRAPD(err,server = CCAFServer::NewL());
+	if(!err)
+		{
+		// Sync with the client and enter the active scheduler
+		RProcess::Rendezvous(KErrNone);
+		sched->Start();
+		}
+	delete server;
+	delete sched;
+	}
+
+GLDEF_C TInt E32Main()
+/*
+ * return standard error code on exit
+ */
+	{
+	CTrapCleanup* cleanup = CTrapCleanup::New();
+	if(cleanup == NULL)
+		{
+		return KErrNoMemory;
+		}
+	TRAP_IGNORE(MainL());
+	delete cleanup;
+	return KErrNone;
+    }
+
+// Create a thread in the calling process
+// Emulator typhoon and earlier
+
+CTestStep* CCAFServer::CreateTestStep(const TDesC& aStepName)
+/*
+ * return a CTestStep derived instance
+ * Implementation of CTestServer pure virtual
+ */
+	{
+	CTestStep* testStep = NULL;
+	// They are created "just in time" when the worker thread is created
+	if(aStepName == KCAFSizeStep)
+		testStep = new CCAFSizeStep(*this);
+#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+	else if(aStepName == KCAFSizeStep64)
+		testStep = new CCAFSizeStep64(*this);
+	else if(aStepName == KCAFSeekReadStep64)
+		testStep = new CCAFSeekReadStep64(*this);
+#endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+	else if(aStepName == KCAFSeekReadStep)
+		testStep = new CCAFSeekReadStep(*this);
+	else if(aStepName == KBasicBitsetStep)
+		testStep = new CBasicBitsetStep();
+	else if(aStepName == KBitsetListStep)
+		testStep = new CBitsetListStep();
+	else if(aStepName == KBitsetEqualityStep)
+		testStep = new CBitsetEqualityStep();
+	else if(aStepName == KBitsetCopyStep)
+		testStep = new CBitsetCopyStep();
+	else if(aStepName == KBitsetSerialiseStep)
+		testStep = new CBitsetSerialiseStep();
+	else if(aStepName == KBitsetPanicStep)
+		testStep = new CBitsetPanicStep();
+	else if(aStepName == KCAFMultiThreadCDataStep)
+		testStep = new CCAFMultiThreadCDataStep(*this);
+	else if(aStepName == KCAFShareModeStep)
+		testStep = new CCAFShareModeStep(*this);
+	else if(aStepName == KCAFMimeTypeCDataStep)
+		testStep = new CCAFMimeTypeCDataStep(*this);
+	else if(aStepName == KCAFRecognizeStep)
+		testStep = new CCAFRecognizeStep(*this);
+	else if(aStepName == KCAFRecognizerSpeedStep)
+		testStep = new CCAFRecognizerSpeedStep(*this);
+	else if(aStepName == KCAFBufferSizeStep)
+		testStep = new CCAFBufferSizeStep(*this);
+	else if(aStepName == KCAFDeleteStep)
+		testStep = new CCAFDeleteStep(*this);
+	else if(aStepName == KCAFCopyFileStep)
+		testStep = new CCAFCopyFileStep(*this);
+	else if(aStepName == KCAFRenameFileStep)
+		testStep = new CCAFRenameFileStep(*this);
+	else if(aStepName == KCAFMkDirStep)
+		testStep = new CCAFMkDirStep(*this);
+	else if(aStepName == KCAFMkDirAllStep)
+		testStep = new CCAFMkDirAllStep(*this);
+	else if(aStepName == KCAFRmDirStep)
+		testStep = new CCAFRmDirStep(*this);
+	else if(aStepName == KCAFGetDirStep)
+		testStep = new CCAFGetDirStep(*this);
+	else if(aStepName == KCAFManagerNotifyStep)
+		testStep = new CCAFManagerNotifyStep(*this);
+	else if(aStepName == KCAFManagerSetPropertyStep)
+		testStep = new CCAFManagerSetPropertyStep(*this);
+	else if(aStepName == KCAFManagerDisplayInfoStep)
+		testStep = new CCAFManagerDisplayInfoStep(*this);
+	else if(aStepName == KCAFManagerListAgentsStep)
+		testStep = new CCAFManagerListAgentsStep(*this);
+	else if(aStepName == KCAFManagerAgentSpecificStep)
+		testStep = new CCAFManagerAgentSpecificStep(*this);
+	else if(aStepName == KCAFManagerDisplayConfigStep)
+		testStep = new CCAFManagerDisplayConfigStep(*this);
+	else if(aStepName == KCAFManagerAttributeStep)
+		testStep = new CCAFManagerAttributeStep(*this);
+	else if(aStepName == KCAFManagerAttributeSetStep)
+		testStep = new CCAFManagerAttributeSetStep(*this);
+	else if(aStepName == KCAFManagerStringAttributeStep)
+		testStep = new CCAFManagerStringAttributeStep(*this);
+	else if(aStepName == KCAFManagerStringAttributeSetStep)
+		testStep = new CCAFManagerStringAttributeSetStep(*this);
+	else if(aStepName == KCAFRightsManagerStep)
+		testStep = new CCAFRightsManagerStep(*this);
+	else if(aStepName == KCAFRightsManagerListStep)
+		testStep = new CCAFRightsManagerListStep(*this);
+	else if(aStepName == KCAFAttributesStep)
+		testStep = new CCAFAttributesStep(*this);
+	else if(aStepName == KCAFStringAttributesStep)
+		testStep = new CCAFStringAttributesStep(*this);
+	else if(aStepName == KCAFApparcStep)
+		testStep = new CCAFApparcStep(*this);
+	else if(aStepName == KCAFSupplierStep)
+		testStep = new CCafSupplierStep(*this);
+	else if(aStepName == KCAFSupplierAsyncStep)
+		testStep = new CCafSupplierAsyncStep(*this);
+	else if(aStepName == KCAFClientOutputSupplierStep)
+		testStep = new CCafClientOutputSupplierStep(*this);
+	else if(aStepName == KCAFSupplierSerializeStep)
+		testStep = new CCAFSupplierSerializeStep(*this);
+	else if(aStepName == KCAFContentAttributeStep)
+		testStep = new CCAFContentAttributeStep(*this);
+	else if(aStepName == KCAFContentAttributeSetStep)
+		testStep = new CCAFContentAttributeSetStep(*this);
+	else if(aStepName == KCAFContentStringAttributeStep)
+		testStep = new CCAFContentStringAttributeStep(*this);
+	else if(aStepName == KCAFContentStringAttributeSetStep)
+		testStep = new CCAFContentStringAttributeSetStep(*this);	
+	else if(aStepName == KCAFContentNotifyStep)
+		testStep = new CCAFContentNotifyStep(*this);	
+	else if(aStepName == KCAFContentSetPropertyStep)
+		testStep = new CCAFContentSetPropertyStep(*this);	
+	else if(aStepName == KCAFContentDisplayInfoStep)
+		testStep = new CCAFContentDisplayInfoStep(*this);	
+	else if(aStepName == KCAFContentAgentSpecificStep)
+		testStep = new CCAFContentAgentSpecificStep(*this);	
+	else if(aStepName == KCAFContentRequestRightsStep)
+		testStep = new CCAFContentRequestRightsStep(*this);	
+	else if(aStepName == KCAFContentEmbeddedObjectsStep)
+		testStep = new CCAFContentEmbeddedObjectsStep(*this);	
+	else if(aStepName == KCAFContentEmbeddedObjectTypeStep)
+		testStep = new CCAFContentEmbeddedObjectTypeStep(*this);	
+	else if(aStepName == KCAFContentSearchStep)
+		testStep = new CCAFContentSearchStep(*this);	
+	else if(aStepName == KCAFContentContainerStep)
+		testStep = new CCAFContentContainerStep(*this);	
+	else if(aStepName == KCAFDataAttributeStep)
+		testStep = new CCAFDataAttributeStep(*this);
+	else if(aStepName == KCAFDataAttributeSetStep)
+		testStep = new CCAFDataAttributeSetStep(*this);
+	else if(aStepName == KCAFDataStringAttributeStep)
+		testStep = new CCAFDataStringAttributeStep(*this);
+	else if(aStepName == KCAFDataStringAttributeSetStep)
+		testStep = new CCAFDataStringAttributeSetStep(*this);	
+	else if(aStepName == KCAFOomStep)
+		testStep = new CCafOomStep(*this);
+	else if(aStepName == KCAFHandleSizeStep)
+		testStep = new CCAFHandleSizeStep(*this);
+	else if(aStepName == KCAFHandleSeekReadStep)
+		testStep = new CCAFHandleSeekReadStep(*this);
+	else if(aStepName == KCAFHandleMultiThreadCDataStep)
+		testStep = new CCAFHandleMultiThreadCDataStep(*this);	
+	else if(aStepName == KCAFContentIteratorStep)
+		testStep = new CCAFContentIteratorStep(*this);	
+	else if(aStepName == KCAFCDirStreamStep)
+		testStep = new CCafCDirStreamStep(*this);	
+	else if(aStepName == KCAFRAttributeSetStreamStep)
+		testStep = new CCafRAttributeSetStreamStep(*this);	
+	else if(aStepName == KCAFRStringAttributeSetStreamStep)
+		testStep = new CCafRStringAttributeSetStreamStep(*this);	
+	else if(aStepName == KCAFSupplierOutputFileStreamStep)
+		testStep = new CCafSupplierOutputFileStreamStep(*this);	
+	else if(aStepName == KCAFMetaDataArrayStep)
+		testStep = new CCafMetaDataArrayStep(*this);	
+	else if(aStepName == KCAFEmbeddedObjectStep)
+		testStep = new CCafEmbeddedObjectStep(*this);	
+	else if(aStepName == KCAFVirtualPathStep)
+		testStep = new CCafVirtualPathStep(*this);	
+	else if(aStepName == KCAFRightsInfoStep)
+		testStep = new CCafRightsInfoStep(*this);	
+	else if(aStepName == KCAFStreamablePtrArrayStep)
+		testStep = new CCafStreamablePtrArrayStep(*this);
+#ifndef SYMBIAN_DISABLE_UPWARD_DEPENDENCY
+	else if(aStepName == KCAFHTTPRequestHeadersStep)
+		testStep = new CCAFHTTPRequestHeadersStep(*this);
+#endif
+	else if(aStepName == KCAFExecuteIntentStep)
+		testStep = new CCAFExecuteIntentStep(*this);			
+	else if(aStepName == KCAF_DEF077443_Step)
+		testStep = new CCAF_DEF077443_Step(*this);
+	else if(aStepName == KCAFTestCleanupStep)
+		testStep = new CCAFTestCleanupStep(*this);
+	else if(aStepName == KCAFDRMFileOpenPerformanceStep)
+		testStep = new CCAFDRMFileOpenPerformanceTest(*this);
+	else if(aStepName == KCAFManagerDisplayInfoByFileHandleStep)
+		testStep = new CCAFManagerDisplayInfoByFileHandleStep(*this);
+	else if(aStepName == KCAFManagerAttributeByFileHandleStep)
+		testStep = new CCAFManagerAttributeByFileHandleStep(*this);
+	else if(aStepName == KCAFManagerAttributeSetByFileHandleStep)
+		testStep = new CCAFManagerAttributeSetByFileHandleStep(*this);
+	else if(aStepName == KCAFManagerStringAttributeByFileHandleStep)
+		testStep = new CCAFManagerStringAttributeByFileHandleStep(*this);
+	else if(aStepName == KCAFManagerStringAttributeSetByFileHandleStep)
+		testStep = new CCAFManagerStringAttributeSetByFileHandleStep(*this);
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    else if(aStepName == KCAFHelperStep)     
+        testStep = new CCafHelperStep();     
+    else if(aStepName == KWmdrmCAFContentStep)     
+        testStep = new CWmdrmCAFContentStep();     
+    else if(aStepName == KWmdrmCAFDataStep)     
+        testStep = new CWmdrmCAFDataStep();     
+    else if(aStepName == KWmdrmCAFReadStep)     
+        testStep = new CWmdrmCAFReadStep();     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+	
+	return testStep;
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/cafserver.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,35 @@
+/*
+* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+
+#ifndef __CAF_SERVER_H__
+#define __CAF_SERVER_H__
+#include <test/testexecuteserverbase.h>
+
+class CCAFServer : public CTestServer
+	{
+public:
+	static CCAFServer* NewL();
+	virtual CTestStep* CreateTestStep(const TDesC& aStepName);
+	RFs& Fs(){return iFs;};
+
+private:
+	RFs iFs;
+	};
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/cafstep.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,211 @@
+/*
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#include "cafstep.h"
+#include <test/testexecutelog.h>
+#include <caf/content.h>
+#include <caf/attribute.h>
+#include "cafserver.h"
+#include "resolver.h"
+#include "manager.h"
+#include "bitset.h"
+#include "CafApaRecognizer.h"
+
+#include <apasvst.h>
+#include <apaflrec.h>
+#include <fbs.h>
+#include <charconv.h>
+#include <eikenv.h>
+
+using namespace ContentAccess;
+
+/* 
+ * Base class for all CAF test steps
+ *
+ */
+
+CCAFStep::CCAFStep()
+	{
+	}
+
+CCAFStep::~CCAFStep()
+	{
+	}
+	
+void CCAFStep:: InitialiseFileHandleParametersL()	
+	{
+	GetStringFromConfig(ConfigSection(),_L("uri"),iUri);
+	GetStringFromConfig(ConfigSection(),_L("uniqueid"),iUniqueId);
+	GetIntFromConfig(ConfigSection(),_L("result"),iExpectedResult);
+
+	iFs.Connect();
+	CleanupClosePushL(iFs);
+	User::LeaveIfError(iFs.ShareProtected());
+	User::LeaveIfError(iFile.Open(iFs, iUri, EFileShareReadersOnly| EFileRead | EFileStream));
+	CleanupClosePushL(iFile);
+	}
+	
+void CCAFStep::ReadBufferL(TDesC16& aFileName, TDes8& aBuffer)
+	{
+	RFs fs;
+	RFile handle;
+	TInt result;
+	User::LeaveIfError(fs.Connect());
+	CleanupClosePushL(fs);
+	result = handle.Open(fs,aFileName,EFileRead | EFileStream | EFileShareAny);
+	User::LeaveIfError(result);
+	CleanupClosePushL(handle);
+	handle.Read(aBuffer);
+	CleanupStack::PopAndDestroy(2, &fs);
+	}
+
+HBufC8* CCAFStep::ConvertDes16toHBufC8LC(TDesC& source)
+	{
+	RFs fs;
+	HBufC8 *buf = HBufC8::NewL(source.Length());
+	CleanupStack::PushL(buf);
+	TPtr8 ptr=buf->Des();
+
+	CCnvCharacterSetConverter *converter = CCnvCharacterSetConverter::NewLC();
+	User::LeaveIfError(fs.Connect());
+	CleanupClosePushL(fs);
+	converter->PrepareToConvertToOrFromL(KCharacterSetIdentifierAscii, fs);
+	converter->ConvertFromUnicode(ptr, source);
+	CleanupStack::PopAndDestroy(2, converter);
+	return buf;
+	}
+
+HBufC16* CCAFStep::ConvertDes8toHBufC16LC(TDesC8& source)
+	{
+	RFs fs;
+	TInt status=0;
+	HBufC16 *buf = HBufC16::NewL(source.Length());
+	CleanupStack::PushL(buf);
+	TPtr16 ptr=buf->Des();
+	CCnvCharacterSetConverter *converter = CCnvCharacterSetConverter::NewLC();
+	User::LeaveIfError(fs.Connect());
+	CleanupClosePushL(fs);
+	converter->PrepareToConvertToOrFromL(KCharacterSetIdentifierAscii, fs);
+	converter->ConvertToUnicode(ptr, source, status);
+	CleanupStack::PopAndDestroy(2, converter);
+	return buf;
+	}
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+         
+HBufC8* CCAFStep::CreateWmdrmHeaderLC()     
+    {     
+    // create dummy header data.     
+    const TInt KMaxBufferLen = 64;     
+    _LIT8(KHeaderData, "W\0R\0M\0H\0E\0A\0D\0E\0R\0");     
+         
+    HBufC8* headerData = HBufC8::NewMaxLC(KMaxBufferLen);     
+    TPtr8 headerPtr = headerData->Des();     
+    headerPtr.Repeat(KHeaderData);     
+    return headerData;     
+    }     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+  
+
+void CCAFStep::LoadCafRecognizerL()
+	{
+	static const TUid KImplementationUID= {0x102031E9};
+
+	TAny* ptr = REComSession::CreateImplementationL(KImplementationUID, iDtorIDKey);
+	iRecognizer = static_cast <CApaDataRecognizerType*>(ptr);
+    }
+
+void CCAFStep::UnLoadCafRecognizer()
+	{
+	delete iRecognizer;
+	iRecognizer=NULL;
+	REComSession::DestroyedImplementation(iDtorIDKey);
+	REComSession::FinalClose();
+	}
+
+TInt CCAFStep::Delete(const TDesC& aFile)
+	{
+	TInt err = KErrNone;
+	RFs fs;
+	err = fs.Connect();
+	if(err == KErrNone)
+		{
+		err = fs.Delete(aFile);
+		fs.Close();
+		}
+	return err;
+	}
+
+
+
+TVerdict CCAFStep::doTestStepPreambleL()
+	{
+	iActiveScheduler = new (ELeave) CActiveScheduler;
+	CActiveScheduler::Install(iActiveScheduler);
+	return TestStepResult();
+	}
+
+TVerdict CCAFStep::doTestStepPostambleL()
+	{
+	CActiveScheduler::Install(NULL);
+	delete iActiveScheduler;
+	return TestStepResult();
+	}
+
+
+// Dummy class required to create an apparc server (below)
+class CT_Serv2DummyShell : public CBase, public MApaAppStarter
+     {
+ public:
+     TThreadId StartAppL(const CApaCommandLine&) { return *(TThreadId*)this; }
+     void ConstructL();
+ public:
+     RFs iFs;
+     RFbsSession iFbs;
+     };
+
+void CT_Serv2DummyShell::ConstructL()
+     {
+     User::LeaveIfError(iFs.Connect());
+     User::LeaveIfError(iFbs.Connect());
+     }
+
+
+void CCAFStep::StartApparcServerL()
+	{
+	INFO_PRINTF1(_L("Starting Apparc Server"));
+    FbsStartup();
+    TInt ret=RFbsSession::Connect();
+         TEST(ret==KErrNone);
+ 
+     // set up an fbs
+     ret = FbsStartup();
+         TEST(ret==KErrNone);
+     //
+     // set up an app starter
+     CT_Serv2DummyShell* dummy=new(ELeave) CT_Serv2DummyShell();
+     dummy->ConstructL();
+ 
+ 	 ret=StartupApaServerProcess();
+
+
+     TEST(((ret==KErrNone)||(ret==KErrAlreadyExists)));
+     //
+ 
+ 
+     INFO_PRINTF1(_L("Apparc Startup Complete"));
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/cafstep.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,116 @@
+/*
+* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+
+#if (!defined __CAF_STEP_H__)
+#define __CAF_STEP_H__
+#include <test/testexecutestepbase.h>
+
+class CCAFServer;
+class CApaDataRecognizerType;
+
+
+//Base class used to provide utility functions availble to test step classes
+class CCAFStep : public CTestStep
+	{
+public:
+	CCAFStep();
+	virtual ~CCAFStep();
+
+	/* 
+	* Convert a 16-bit descriptor to an 8-bit descriptor
+	* A new HBufC8 is allocated to store the new version of the descriptor
+	* @param source a descriptor derived from TDesC16 
+	* @return a new HBufC8 with a copy of the data in source
+	*/
+	HBufC8* ConvertDes16toHBufC8LC(TDesC& source);
+
+	/* 
+	* Convert a 8-bit descriptor to an 16-bit descriptor
+	* A new HBufC16 is allocated to store the new version of the descriptor
+	* @param source a descriptor derived from TDesC8 
+	* @return a new HBufC16 with a copy of the data in source
+	*/
+	HBufC16* ConvertDes8toHBufC16LC(TDesC8& source);
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+      
+    /*     
+    * Utility method which creates dummy header data for WMDRM operations.     
+    * @return   A new HBufC8 allocated which contains the header data.     
+    */     
+    HBufC8* CreateWmdrmHeaderLC();     
+      
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+
+	/* 
+	* Load CAFRECOGNIZER.MDL and create an instance of CApaCafRecognizer that can be used
+	* by derived classes
+	*/
+	void LoadCafRecognizerL();
+
+	/* 
+	* Delete the instance of CApaCafRecognizer and unload the CAFRECOGNIZER.MDL library 
+	*/
+	void UnLoadCafRecognizer();
+
+	/* 
+	* Implementation of CTestStep virtual functions, create and install a CActiveScheduler
+	*/
+	virtual TVerdict doTestStepPreambleL();
+
+	/* 
+	* Implementation of CTestStep virtual functions, uninstalls and removes the CActiveScheduler
+	*/
+	virtual TVerdict doTestStepPostambleL();
+
+	/* delete a file */
+	TInt Delete(const TDesC& aFile);
+
+protected:
+	/* 
+	* Open the file and read data into the buffer up until the length of the buffer
+	* aBuffer.Length() will be set to the length of data read
+	* @param aFileName the file to read from
+	* @param aBuffer the buffer to read into
+	*/
+	void ReadBufferL(TDesC16& aFileName, TDes8& aBuffer);
+
+	/* Starts the Apparc server (for use by CSupplier tests)
+	*/
+	void StartApparcServerL();
+
+	CApaDataRecognizerType *iRecognizer;
+	
+	/** Is called to initialise the following parameters
+	 */ 
+	void  InitialiseFileHandleParametersL();
+	
+	RFs		iFs;
+	RFile	iFile;
+	TPtrC	iUri;
+	TPtrC	iUniqueId;
+	TInt	iExpectedResult;
+	
+private:
+	CActiveScheduler *iActiveScheduler;
+	TUid iDtorIDKey;
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/contentstep.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,320 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+
+#if (!defined __CONTENT_STEP_H__)
+#define __CONTENT_STEP_H__
+#include <test/testexecutestepbase.h>
+
+#include "cafstep.h"
+
+// Constants used to name test cases 
+_LIT(KCAFContentAttributeStep,"CAFContentAttributeStep");
+_LIT(KCAFContentAttributeSetStep,"CAFContentAttributeSetStep");
+_LIT(KCAFContentStringAttributeStep,"CAFContentStringAttributeStep");
+_LIT(KCAFContentStringAttributeSetStep,"CAFContentStringAttributeSetStep");
+_LIT(KCAFContentNotifyStep,"CAFContentNotifyStep");
+_LIT(KCAFContentSetPropertyStep,"CAFContentSetPropertyStep");
+_LIT(KCAFContentDisplayInfoStep,"CAFContentDisplayInfoStep");
+_LIT(KCAFContentAgentSpecificStep,"CAFContentAgentSpecificStep");
+_LIT(KCAFContentRequestRightsStep,"CAFContentRequestRightsStep");
+_LIT(KCAFContentEmbeddedObjectsStep,"CAFContentEmbeddedObjectsStep");
+_LIT(KCAFContentEmbeddedObjectTypeStep,"CAFContentEmbeddedObjectTypeStep");
+_LIT(KCAFContentSearchStep,"CAFContentSearchStep");
+_LIT(KCAFContentContainerStep,"CAFContentContainerStep");
+
+/* 
+* Used to test CManager::GetAttribute()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+*
+* @internalComponent Exposure internally
+*/
+class CCAFContentAttributeStep : public CCAFStep
+	{
+public:
+	CCAFContentAttributeStep(CCAFServer& aParent);
+	~CCAFContentAttributeStep();
+	virtual TVerdict doTestStepL();
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    TVerdict doWmdrmTestStepL();     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CManager::GetAttributeSet()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+*
+* @internalComponent Exposure internally
+*/
+class CCAFContentAttributeSetStep : public CCAFStep
+	{
+public:
+	CCAFContentAttributeSetStep(CCAFServer& aParent);
+	~CCAFContentAttributeSetStep();
+	virtual TVerdict doTestStepL();
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    TVerdict doWmdrmTestStepL();     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CData::GetAttribute()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+*
+* @internalComponent Exposure internally
+*/
+class CCAFContentStringAttributeStep : public CCAFStep
+	{
+public:
+	CCAFContentStringAttributeStep(CCAFServer& aParent);
+	~CCAFContentStringAttributeStep();
+	virtual TVerdict doTestStepL();
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    TVerdict doWmdrmTestStepL();     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+  
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CContent::GetStringAttributeSet()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+*
+* @internalComponent Exposure internally
+*/
+class CCAFContentStringAttributeSetStep : public CCAFStep
+	{
+public:
+	CCAFContentStringAttributeSetStep(CCAFServer& aParent);
+	~CCAFContentStringAttributeSetStep();
+	virtual TVerdict doTestStepL();
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    TVerdict doWmdrmTestStepL();     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+  
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CContent::NotifyStatusChange()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+*
+* @internalComponent Exposure internally
+*/
+class CCAFContentNotifyStep : public CCAFStep
+	{
+public:
+	CCAFContentNotifyStep(CCAFServer& aParent);
+	~CCAFContentNotifyStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CContent::SetProperty()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+*
+* @internalComponent Exposure internally
+*/
+class CCAFContentSetPropertyStep : public CCAFStep
+	{
+public:
+	CCAFContentSetPropertyStep(CCAFServer& aParent);
+	~CCAFContentSetPropertyStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CContent::DisplayInfo()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+*
+* @internalComponent Exposure internally
+*/
+class CCAFContentDisplayInfoStep : public CCAFStep
+	{
+public:
+	CCAFContentDisplayInfoStep(CCAFServer& aParent);
+	~CCAFContentDisplayInfoStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CContent::AgentSpecificCommand()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+*
+* @internalComponent Exposure internally
+*/
+class CCAFContentAgentSpecificStep : public CCAFStep
+	{
+public:
+	CCAFContentAgentSpecificStep(CCAFServer& aParent);
+	~CCAFContentAgentSpecificStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+
+/* 
+* Used to test CContent::RequestRights()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+*
+* @internalComponent Exposure internally
+*/
+class CCAFContentRequestRightsStep : public CCAFStep
+	{
+public:
+	CCAFContentRequestRightsStep(CCAFServer& aParent);
+	~CCAFContentRequestRightsStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+
+/* 
+* Used to test CContent::GetEmbeddedObjects()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+*
+* @internalComponent Exposure internally
+*/
+class CCAFContentEmbeddedObjectsStep : public CCAFStep
+	{
+public:
+	CCAFContentEmbeddedObjectsStep(CCAFServer& aParent);
+	~CCAFContentEmbeddedObjectsStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CContent::GetEmbeddedObjects()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+*
+* @internalComponent Exposure internally
+*/
+class CCAFContentEmbeddedObjectTypeStep : public CCAFStep
+	{
+public:
+	CCAFContentEmbeddedObjectTypeStep(CCAFServer& aParent);
+	~CCAFContentEmbeddedObjectTypeStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CContent::Search()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+*
+* @internalComponent Exposure internally
+*/
+class CCAFContentSearchStep : public CCAFStep
+	{
+public:
+	CCAFContentSearchStep(CCAFServer& aParent);
+	~CCAFContentSearchStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+/* 
+* Used to test CContent::OpenContainer()
+* The INI file specifies the file to delete and the expected return code.
+* For instance this can be used to try and delete a file that does not exist or a file
+* that is read-only or has rights that don't allow it to be deleted
+* INI file paramerters
+*
+*
+* @internalComponent Exposure internally
+*/
+class CCAFContentContainerStep : public CCAFStep
+	{
+public:
+	CCAFContentContainerStep(CCAFServer& aParent);
+	~CCAFContentContainerStep();
+	virtual TVerdict doTestStepL();
+private:
+	CCAFServer& iParent;
+	};
+
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/namespacestep.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,404 @@
+/*
+* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The code in this file is not executed.
+* It is compiled to ensure that types in the ContentAccess namespace can be used
+* when the headers are included but the namespace is not in scope.
+* It will ensure that a regression cannot occur if during development the ContentAccess
+* namespace is brought into scope in error by any of the public header files.
+* Any new types added to the ContentAccess namespace must also be added to this file.
+* ContentAccess namespace when it is not in scope.
+* This test does not execute.
+* This test is a compile time test.
+*
+*/
+
+
+/**
+ @SYMTestCaseID			SYSLIB-ECOM-CT-3404
+ @SYMTestCaseDesc		Ensures there are no name collisions with types defined in the
+ @SYMTestPriority			High
+ @SYMTestActions			For each type in the ContentAccess namespace reuse the type name.
+ @SYMTestExpectedResults	This is a compile time test.
+ @SYMDEF				PDEF102493
+*/
+#include <caf/caf.h>
+
+// streamableptrarray.h
+#include <caf/streamableptrarray.h>
+
+typedef TInt RStreamablePtrArray;
+RStreamablePtrArray streamablePtrArray=0;
+
+// agent.h
+#include <caf/agent.h>
+
+typedef TInt TAgent;
+TAgent agent=0;
+
+// agentfactory.h
+#include <caf/agentfactory.h>
+
+typedef TInt CAgentFactory;
+CAgentFactory agentFactory=0;
+
+// agentinterface.h
+#include <caf/agentinterface.h>
+
+typedef TInt CAgentData;
+CAgentData agentData=0;
+
+typedef TInt CAgentContent;
+CAgentContent agentContent=0;
+
+typedef TInt CAgentImportFile;
+CAgentImportFile agentImportFile=0;
+
+typedef TInt CAgentManager;
+CAgentManager agentManager=0;
+
+typedef TInt CAgentRightsManager;
+CAgentRightsManager agentRightsManager=0;
+
+// attribute.h
+#include <caf/attribute.h>
+
+typedef TInt CAttribute;
+CAttribute attribute=0;
+
+// attributeset.h
+#include <caf/attributeset.h>
+
+typedef TInt RAttributeSet;
+RAttributeSet attributeSet=0;
+
+// bitset.h
+#include <caf/bitset.h>
+
+typedef TInt CBitset;
+CBitset bitset=0;
+
+// CafMimeHeader.h
+#include <caf/cafmimeheader.h>
+
+typedef TInt CCafMimeHeader;
+CCafMimeHeader cafMimeHeader=0;
+
+
+// caftypes.h
+#include <caf/caftypes.h>
+
+typedef TInt TQosAttribute;
+TQosAttribute qosAttribute=0;
+typedef TInt EQosBufferSize;
+EQosBufferSize qosBufferSize=0;
+typedef TInt EQosAttrTop;
+EQosAttrTop qosAttrTop=0;
+
+typedef TInt TMimeFields;
+TMimeFields mimeFields=0;
+typedef TInt EContentType;
+EContentType contentType=0;
+typedef TInt EContentLength;
+EContentLength contentLength=0;
+typedef TInt EContentId;
+EContentId contentId=0;
+typedef TInt EContentTransferEncoding;
+EContentTransferEncoding contentTransferEncoding=0;
+typedef TInt EBoundary;
+EBoundary boundary=0;
+typedef TInt EMimeMax;
+EMimeMax mimeMax=0;
+
+typedef TInt TContentShareMode;
+TContentShareMode contentShareMode=0;
+typedef TInt EContentShareReadOnly;
+EContentShareReadOnly contentShareReadOnly=0;
+typedef TInt EContentShareReadWrite;
+EContentShareReadWrite contentShareReadWrite=0;
+typedef TInt EContentShareExclusive;
+EContentShareExclusive contentShareExclusive=0;
+
+typedef TInt TIntent;
+TIntent intent=0;
+typedef TInt EPeek;
+EPeek peek=0;
+typedef TInt EPlay;
+EPlay play=0;
+typedef TInt EView;
+EView view=0;
+typedef TInt EExecute;
+EExecute execute=0;
+typedef TInt EPrint;
+EPrint print=0;
+typedef TInt EPause;
+EPause pause=0;
+typedef TInt EContinue;
+EContinue continue1=0;
+typedef TInt EStop;
+EStop stop=0;
+typedef TInt EUnknown;
+EUnknown unknown=0;
+typedef TInt EInstall;
+EInstall install=0;
+	
+typedef TInt TOutputType;
+TOutputType outputType=0;
+typedef TInt EContent;
+EContent content=0;
+typedef TInt EReceipt;
+EReceipt receipt=0;
+
+typedef TInt TImportStatus;
+TImportStatus importStatus=0;
+typedef TInt EInProgress;
+EInProgress inProgress=0;
+typedef TInt EWaitingForNewOutputFile;
+EWaitingForNewOutputFile waitingForNewOutputFile=0;
+typedef TInt EComplete;
+EComplete complete=0;
+typedef TInt EFailed;
+EFailed failed=0;
+typedef TInt EUnsupportedMedia;
+EUnsupportedMedia unsupportedMedia=0;
+
+typedef TInt TAttribute;
+TAttribute attribute2=0;
+typedef TInt EIsProtected;
+EIsProtected isProtected=0;
+typedef TInt EIsForwardable;
+EIsForwardable isForwardable=0;
+typedef TInt EIsModifyable;
+EIsModifyable isModifyable=0;
+typedef TInt EIsCopyable;
+EIsCopyable isCopyable=0;
+typedef TInt ECanPlay;
+ECanPlay canPlay=0;
+typedef TInt ECanPrint;
+ECanPrint canPrint=0;
+typedef TInt ECanExecute;
+ECanExecute canExecute=0;
+typedef TInt ECanView;
+ECanView canView=0;
+typedef TInt ERightsNone;
+ERightsNone rightsNone=0;
+typedef TInt ERightsPending;
+ERightsPending rightsPending=0;
+typedef TInt ERightsHaveExpired;
+ERightsHaveExpired rightsHaveExpired=0;
+typedef TInt EPreviewAvailable;
+EPreviewAvailable previewAvailable=0;
+typedef TInt EContentCDataInUse;
+EContentCDataInUse contentCDataInUse=0;
+typedef TInt ECanRewind;
+ECanRewind canRewind=0;
+typedef TInt ECopyPaste;
+ECopyPaste copyPaste=0;
+typedef TInt ERightsConsumable;
+ERightsConsumable rightsConsumable=0;
+typedef TInt ERightsStateless;
+ERightsStateless rightsStateless=0;
+typedef TInt ECanMove;
+ECanMove canMove=0;
+typedef TInt ECanRename;
+ECanRename canRename=0;
+typedef TInt ECanAutomaticConsume;
+ECanAutomaticConsume canAutomaticConsume=0;
+typedef TInt EAgentSpecificAttributeBase;
+EAgentSpecificAttributeBase agentSpecificAttributeBase=0;
+
+typedef TInt TStringAttribute;
+TStringAttribute stringAttribute=0;
+typedef TInt EDescription;
+EDescription description=0;
+typedef TInt EMimeType;
+EMimeType mimeType=0;
+typedef TInt ETitle;
+ETitle title=0;
+typedef TInt EAuthor;
+EAuthor author=0;
+typedef TInt EIconURI;
+EIconURI iconURI=0;
+typedef TInt EPreviewURI;
+EPreviewURI previewURI=0;
+typedef TInt EContentURI;
+EContentURI contentURI=0;
+typedef TInt EContentID;
+EContentID contentID=0;
+typedef TInt EInfoURL;
+EInfoURL infoURL=0;
+typedef TInt EPendingRightsETA;
+EPendingRightsETA pendingRightsETA=0;
+typedef TInt ETransactionID;
+ETransactionID transactionID=0;
+typedef TInt EAgentSpecificStringAttributeBase;
+EAgentSpecificStringAttributeBase agentSpecificStringAttributeBase=0;
+		
+typedef TInt TEventMask;
+TEventMask eventMask=0;
+typedef TInt ERightsAvailable;
+ERightsAvailable rightsAvailable=0;
+typedef TInt ERightsExpired;
+ERightsExpired rightsExpired=0;
+
+typedef TInt TEmbeddedType;
+TEmbeddedType embeddedType=0;
+typedef TInt EContainerObject;
+EContainerObject containerObject=0;
+typedef TInt EContentObject;
+EContentObject contentObject=0;
+typedef TInt EAgentSpecificObject;
+EAgentSpecificObject agentSpecificObject=0;
+
+typedef TInt TDisplayInfo;
+TDisplayInfo displayInfo=0;
+typedef TInt EFileProperties;
+EFileProperties fileProperties=0;
+typedef TInt EFileAndRights;
+EFileAndRights fileAndRights=0;
+typedef TInt ERights;
+ERights rights=0;
+
+typedef TInt TRightsTypeMask;
+TRightsTypeMask rightsTypeMask=0;
+typedef TInt ERightsTypeConsumable;
+ERightsTypeConsumable rightsTypeConsumable=0;
+typedef TInt ERightsTypeStateless;
+ERightsTypeStateless rightsTypeStateless=0;
+
+typedef TInt TRightsStatus;
+TRightsStatus rightsStatus=0;
+typedef TInt ERightsStatusNone;
+ERightsStatusNone rightsStatusNone=0;
+typedef TInt ERightsStatusValid;
+ERightsStatusValid rightsStatusValid=0;
+typedef TInt ERightsStatusExpired;
+ERightsStatusExpired rightsStatusExpired=0;
+typedef TInt ERightsStatusPending;
+ERightsStatusPending rightsStatusPending=0;
+
+typedef TInt TAgentProperty;
+TAgentProperty agentProperty=0;
+typedef TInt EAgentPropertyBufferSize;
+EAgentPropertyBufferSize agentPropertyBufferSize=0;
+typedef TInt EAgentPropertyAgentUI;
+EAgentPropertyAgentUI agentPropertyAgentUI=0;
+typedef TInt EAgentPropertyMultipleSequence;
+EAgentPropertyMultipleSequence agentPropertyMultipleSequence=0;
+
+typedef TInt KMaxCafUniqueId;
+KMaxCafUniqueId maxCafUniqueId=0;
+typedef TInt KMaxCafContentName;
+KMaxCafContentName maxCafContentName=0;
+
+// content.h
+#include <caf/content.h>
+
+typedef TInt CContent;
+CContent content2=0;
+
+// data.h
+#include <caf/content.h>
+
+typedef TInt CData;
+CData data=0;
+
+// dirstreamable.h
+#include <caf/dirstreamable.h>
+
+typedef TInt CDirStreamable;
+CDirStreamable dirStreamable=0;
+
+// embeddedobject.h
+#include <caf/embeddedobject.h>
+
+typedef TInt CEmbeddedObject;
+CEmbeddedObject embeddedObject=0;
+
+// f32agentui.h
+#include <caf/f32agentui.h>
+
+typedef TInt CF32AgentUi;
+CF32AgentUi f32AgentUi=0;
+typedef TInt TF32AgentUiFactory;
+TF32AgentUiFactory f32AgentUiFactory=0;
+
+// importfile.h
+#include <caf/importfile.h>
+
+typedef TInt CImportFile;
+CImportFile importFile=0;
+
+// manager.h
+#include <caf/manager.h>
+
+typedef TInt CManager;
+CManager manager=0;
+
+// metadata.h
+#include <caf/metadata.h>
+
+typedef TInt CMetaData;
+CMetaData metaData=0;
+
+// metadataarray.h
+#include <caf/metadataarray.h>
+
+typedef TInt CMetaDataArray;
+CMetaDataArray metaDataArray=0;
+
+// rightsInfo.h
+#include <caf/rightsinfo.h>
+
+typedef TInt CRightsInfo;
+CRightsInfo rightsInfo=0;
+typedef TInt MAgentRightsBase;
+MAgentRightsBase agentRightsBase=0;
+
+// rightsmanager.h
+#include <caf/rightsmanager.h>
+
+typedef TInt CRightsManager;
+CRightsManager rightsManager=0;
+
+// stringattributeset.h
+#include <caf/stringattributeset.h>
+
+typedef TInt RStringAttributeSet;
+RStringAttributeSet stringAttributeSet=0;
+
+// supplier.h
+#include <caf/supplier.h>
+
+typedef TInt CSupplier;
+CSupplier supplier=0;
+
+// supplieroutputfile.h
+#include <caf/supplieroutputfile.h>
+
+typedef TInt CSupplierOutputFile;
+CSupplierOutputFile supplierOutputFile=0;
+
+// virtualpath.h
+#include <caf/virtualpath.h>
+
+typedef TInt CVirtualPath;
+CVirtualPath virtualPath=0;
+
+// virtualpathptr.h
+#include <caf/virtualpathptr.h>
+
+typedef TInt TVirtualPathPtr;
+TVirtualPathPtr virtualPathPtr=0;
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/oomstep.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,54 @@
+/*
+* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+
+#if (!defined __OOM_STEP_H__)
+#define __OOM_STEP_H__
+
+#include "cafstep.h"
+
+// Constants used to name test cases 
+_LIT(KCAFOomStep,"CAFOomStep");
+
+class CCAFServer;
+
+
+/* 
+* The OOMTEST parameter in the ini file determines which one of the OOM tests
+* will be executed
+*
+* @internalComponent Exposure internally
+*/
+class CCafOomStep : public CCAFStep
+	{
+public:
+	CCafOomStep(CCAFServer& aParent);
+	~CCafOomStep();
+	virtual TVerdict doTestStepL();
+	
+	// OOM tests
+	TVerdict OomReadContentL();
+	TVerdict OomSupplyL();
+
+private:
+	CCAFServer& iParent;
+	};
+
+
+#endif
Binary file contentmgmt/referencedrmagent/tcaf/testdata/Audio.content has changed
Binary file contentmgmt/referencedrmagent/tcaf/testdata/Audiomulti.content has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/testdata/InstTest.jad	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,64 @@
+TestCase39: com.nokia.java.test.wma20.TestMessageReceiving8,wma20.Receive.TestMessageReceiving8,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970:com.App-ARG_STARTreceiverAddress-ARG_SEPmms://:com.App-ARG_STARTresourceFile-ARG_SEPtest.txt-ARG_STARTmimeType-ARG_SEPtext/plain-ARG_STARTregressionEnabled-ARG_SEPtrue
+TestCase38: com.nokia.java.test.wma20.TestMessageReceiving1,wma20.Receive.TestReceiveMessageVideo,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970:com.App-ARG_STARTreceiverAddress-ARG_SEPmms://:com.App-ARG_STARTresourceFile-ARG_SEPtest.3gp-ARG_STARTmimeType-ARG_SEPvideo/3gpp
+TestCase37: com.nokia.java.test.wma20.TestMessageReceiving1,wma20.Receive.TestReceiveMessagePng,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970:com.App-ARG_STARTreceiverAddress-ARG_SEPmms://:com.App-ARG_STARTresourceFile-ARG_SEPtest.png-ARG_STARTmimeType-ARG_SEPimage/png
+TestCase36: com.nokia.java.test.wma20.TestMessageReceiving1,wma20.Receive.TestReceiveMessageJpeg,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970:com.App-ARG_STARTreceiverAddress-ARG_SEPmms://:com.App-ARG_STARTresourceFile-ARG_SEPtest.jpg-ARG_STARTmimeType-ARG_SEPimage/jpeg
+TestCase35: com.nokia.java.test.wma20.TestMessageReceiving1,wma20.Receive.TestReceiveMessageMp3,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970:com.App-ARG_STARTreceiverAddress-ARG_SEPmms://:com.App-ARG_STARTresourceFile-ARG_SEPtest.mp3-ARG_STARTmimeType-ARG_SEPaudio/mp3
+TestCase34: com.nokia.java.test.wma20.TestMessageReceiving1,wma20.Receive.TestReceiveMessageMidi,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970:com.App-ARG_STARTreceiverAddress-ARG_SEPmms://:com.App-ARG_STARTresourceFile-ARG_SEPsample.mid-ARG_STARTmimeType-ARG_SEPaudio/midi
+TestCase33: com.nokia.java.test.wma20.TestMessageReceiving1,wma20.Receive.TestReceiveMessageWav,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970:com.App-ARG_STARTreceiverAddress-ARG_SEPmms://:com.App-ARG_STARTresourceFile-ARG_SEPsample.wav-ARG_STARTmimeType-ARG_SEPaudio/wav
+TestCase32: com.nokia.java.test.wma20.TestReceiveFullCapabilityMMS,wma20.Receive.TestReceiveFullCapabilityMMS,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970:com.App-ARG_STARTreceiverAddress-ARG_SEPmms://:com.App-ARG_STARTresourceFile-ARG_SEPsample.wav-ARG_STARTmimeType-ARG_SEPaudio/wav-ARG_STARTresourceFile2-ARG_SEPtest.jpg-ARG_STARTmimeType2-ARG_SEPimage/jpeg-ARG_STARTresourceFile3-ARG_SEPtest.txt-ARG_STARTmimeType3-ARG_SEPtext/plain
+MIDlet-Jar-Size: 106228
+TestCase31: com.nokia.java.test.wma20.TestReceiveSimpleMMS,wma20.Receive.TestReceiveSimpleMMS,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970:com.App-ARG_STARTreceiverAddress-ARG_SEPmms://:com.App
+TestCase30: com.nokia.java.test.wma20.TestInvalidSend,wma20.Send.TestInvalidSend,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970-ARG_STARTregressionEnabled-ARG_SEPtrue-ARG_STARTresourceFile -ARG_SEPsample.wav-ARG_STARTmimeType-ARG_SEPaudio/wav
+MIDlet-Name: WMA20LocalRunner
+MIDlet-Jar-URL: WMA20LocalRunner.jar
+MicroEdition-Configuration: CLDC-1.1
+TestCase29: com.nokia.java.test.wma20.TestSendMessage1,wma20.Send.TestSendMessageVideo,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970-ARG_STARTregressionEnabled-ARG_SEPtrue-ARG_STARTresourceFile -ARG_SEPtest.3gp-ARG_STARTmimeType-ARG_SEPvideo/3gpp
+TestCase28: com.nokia.java.test.wma20.TestSendMessage1,wma20.Send.TestSendMessagePng,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970-ARG_STARTregressionEnabled-ARG_SEPtrue-ARG_STARTresourceFile -ARG_SEPtest.png-ARG_STARTmimeType-ARG_SEPimage/png
+TestCase27: com.nokia.java.test.wma20.TestSendMessage1,wma20.Send.TestSendMessageJpeg,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970-ARG_STARTregressionEnabled-ARG_SEPtrue-ARG_STARTresourceFile -ARG_SEPtest.jpg-ARG_STARTmimeType-ARG_SEPimage/jpeg
+TestCase26: com.nokia.java.test.wma20.TestSendMessage1,wma20.Send.TestSendMessageMp3,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970-ARG_STARTregressionEnabled-ARG_SEPtrue-ARG_STARTresourceFile -ARG_SEPtest.mp3-ARG_STARTmimeType-ARG_SEPaudio/mp3
+TestCase25: com.nokia.java.test.wma20.TestSendMessage1,wma20.Send.TestSendMessageMidi,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970-ARG_STARTregressionEnabled-ARG_SEPtrue-ARG_STARTresourceFile -ARG_SEPsample.mid-ARG_STARTmimeType-ARG_SEPaudio/midi
+TestCase24: com.nokia.java.test.wma20.TestSendMessage1,wma20.Send.TestSendMessageWav,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970-ARG_STARTregressionEnabled-ARG_SEPtrue-ARG_STARTresourceFile -ARG_SEPsample.wav-ARG_STARTmimeType-ARG_SEPaudio/wav
+TestCase56: com.nokia.java.test.wma20.TestSizeExceededException1,wma20.Misc.TestSizeExceededException1,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970-ARG_STARTresourceFile-ARG_SEPsample.wav-ARG_STARTmimeType-ARG_SEPaudio/wav-ARG_STARTbigFile-ARG_SEPbig.jpg-ARG_STARTmaxSize-ARG_SEP320000
+TestCase23: com.nokia.java.test.wma20.TestSendFullCapabilityMMS,wma20.Send.TestSendFullCapabilityMMS,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970-ARG_STARTregressionEnabled-ARG_SEPtrue-ARG_STARTresourceFile -ARG_SEPsample.wav-ARG_STARTmimeType-ARG_SEPaudio/wav-ARG_STARTresourceFile2-ARG_SEPtest.jpg-ARG_STARTmimeType2-ARG_SEPimage/jpeg-ARG_STARTresourceFile3-ARG_SEPtest.txt-ARG_STARTmimeType3-ARG_SEPtext/plain
+TestCase55: com.nokia.java.test.wma20.TestSendMessage1,wma20.Misc.TestReuseGCCleanedConnection,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970-ARG_STARTresourceFile-ARG_SEPsample.wav-ARG_STARTmimeType-ARG_SEPaudio/wav-ARG_STARTregressionEnabled-ARG_SEPtrue
+TestCase22: com.nokia.java.test.wma20.TestSendSimpleMMS,wma20.Send.TestSendSimpleMMS,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970-ARG_STARTregressionEnabled-ARG_SEPtrue
+TestCase54: com.nokia.java.test.wma20.TestLeaveConnectionOpen,wma20.Misc.TestLeaveConnectionOpen,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970-ARG_STARTresourceFile-ARG_SEPsample.wav-ARG_STARTmimeType-ARG_SEPaudio/wav
+TestCase9: com.nokia.java.test.wma20.TestOpenInvalidMessageConnection4,wma20.Connection.TestOpenInvalidMessageConnection4,-ARG_STARTMMSAddress-ARG_SEPmms://111.111.111.111
+TestCase21: com.nokia.java.test.wma20.TestOpenInvalidMessageConnection5,wma20.Connection.TestOpenInvalidMessageConnection16,
+TestCase53: com.nokia.java.test.wma20.TestManualMMSFetching1,wma20.Misc.TestManualMMSFetching1,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970-ARG_STARTresourceFile-ARG_SEPtest.png-ARG_STARTmimeType-ARG_SEPimage/png
+TestCase8: com.nokia.java.test.wma20.TestOpenMessageConnection1,wma20.Connection.TestOpenMessageConnection8,-ARG_STARTMMSAddress-ARG_SEPmms://+358501234567:8080
+TestCase20: com.nokia.java.test.wma20.TestOpenInvalidMessageConnection4,wma20.Connection.TestOpenInvalidMessageConnection15,-ARG_STARTMMSAddress-ARG_SEPmms://1.12.123.1234:____
+TestCase52: com.nokia.java.test.wma20.TestMMSCenter1,wma20.Misc.TestMMSCenter1,
+TestCase7: com.nokia.java.test.wma20.TestOpenMessageConnection1,wma20.Connection.TestOpenMessageConnection7,-ARG_STARTMMSAddress-ARG_SEPmms://test@test.com
+TestCase51: com.nokia.java.test.wma20.TestOpenInvalidMessageConnection2,wma20.Connection.TestOpenInvalidMessageConnection2,-ARG_STARTstubMMSAddress-ARG_SEPmms://+4544187970:stub1
+TestCase6: com.nokia.java.test.wma20.TestOpenMessageConnection1,wma20.Connection.TestOpenMessageConnection6,-ARG_STARTMMSAddress-ARG_SEPmms://+358501234567:____
+TestCase5: com.nokia.java.test.wma20.TestOpenMessageConnection1,wma20.Connection.TestOpenMessageConnection5,-ARG_STARTMMSAddress-ARG_SEPmms://+358501234567:....
+MicroEdition-Profile: MIDP-2.0
+TestCase50: com.nokia.java.test.wma20.TestOpenInvalidMessageConnection1,wma20.Connection.TestOpenInvalidMessageConnection1,-ARG_STARTreceiverAddress-ARG_SEPmms://:com.nokia.test.TestApp
+TestCase4: com.nokia.java.test.wma20.TestOpenMessageConnection1,wma20.Connection.TestOpenMessageConnection4,-ARG_STARTMMSAddress-ARG_SEPmms://+358501234567:abcdefghijklmpnasdkehsdh456789km
+TestCase3: com.nokia.java.test.wma20.TestOpenMessageConnection1,wma20.Connection.TestOpenMessageConnection3,-ARG_STARTMMSAddress-ARG_SEPmms://:com.nokia.TestApp
+TestCase2: com.nokia.java.test.wma20.TestOpenMessageConnection1,wma20.Connection.TestOpenMessageConnection2,-ARG_STARTMMSAddress-ARG_SEPmms://+358501234567:com.nokiaMyMessage
+TestCase1: com.nokia.java.test.wma20.TestOpenMessageConnection1,wma20.Connection.TestOpenMessageConnection1,-ARG_STARTMMSAddress-ARG_SEPmms://+358501234567
+MIDlet-Vendor: Nokia
+MIDlet-1: WMA20LocalRunner, /icons/Lr_ico.png, com.nokia.java.test.localrunner.J2MELocalRunnerGUI
+TestCase19: com.nokia.java.test.wma20.TestOpenInvalidMessageConnection4,wma20.Connection.TestOpenInvalidMessageConnection14,-ARG_STARTMMSAddress-ARG_SEPmms://1.12.123.1234:....
+TestCase18: com.nokia.java.test.wma20.TestOpenInvalidMessageConnection4,wma20.Connection.TestOpenInvalidMessageConnection13,-ARG_STARTMMSAddress-ARG_SEPmms://1234.1234.1235.1234:8088
+TestCase17: com.nokia.java.test.wma20.TestOpenInvalidMessageConnection4,wma20.Connection.TestOpenInvalidMessageConnection12,-ARG_STARTMMSAddress-ARG_SEPmms://1.12.123.1234:com.TestApp8088
+TestCase49: com.nokia.java.test.wma20.TestMultipleReceivers1,wma20.Receive.TestMultipleReceivers1,-ARG_STARTstubMMSAddress-ARG_SEPmms://+4544187970:stub1-ARG_STARTresourceFile-ARG_SEPtest.png-ARG_STARTmimeType-ARG_SEPimage/png
+TestCase16: com.nokia.java.test.wma20.TestOpenInvalidMessageConnection4,wma20.Connection.TestOpenInvalidMessageConnection11,-ARG_STARTMMSAddress-ARG_SEPmms://1234.1234.1234.1234:com.nokia.TestApp
+TestCase48: com.nokia.java.test.wma20.TestMessageHeaders1,wma20.Misc.TestMessageHeaders1,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970:com.App-ARG_STARTreceiverAddress-ARG_SEPmms://:com.App-ARG_STARTresourceFile-ARG_SEPtest.png-ARG_STARTmimeType-ARG_SEPimage/png
+TestCase15: com.nokia.java.test.wma20.TestOpenInvalidMessageConnection4,wma20.Connection.TestOpenInvalidMessageConnection10,-ARG_STARTMMSAddress-ARG_SEPmms://1234.1234.1234.1234
+TestCase47: com.nokia.java.test.wma20.TestIllegalArgumentException2,wma20.Misc.TestIllegalArgumentException2,
+TestCase14: com.nokia.java.test.wma20.TestOpenInvalidMessageConnection4,wma20.Connection.TestOpenInvalidMessageConnection9,-ARG_STARTMMSAddress-ARG_SEPmms://3.3.3.3:____
+TestCase46: com.nokia.java.test.wma20.TestIllegalArgumentException1,wma20.Misc.TestIllegalArgumentException1,-ARG_STARTMMSAddress-ARG_SEPmms://+4544187970-ARG_STARTMMSAddressIAE-ARG_SEPmms://31.31.31.31:....-ARG_STARTMMSAddressType-ARG_SEPto-ARG_STARTMMSAddressTypeIAE-ARG_SEPioe-ARG_STARTheaderField-ARG_SEPContent-Type-ARG_STARTheaderFieldIAE-ARG_SEPContentXXXType1-ARG_STARTresourceFile-ARG_SEPtest.png-ARG_STARTmimeType-ARG_SEPimage/png
+TestCase13: com.nokia.java.test.wma20.TestOpenInvalidMessageConnection4,wma20.Connection.TestOpenInvalidMessageConnection8,-ARG_STARTMMSAddress-ARG_SEPmms://31.31.31.31:....
+TestCase45: com.nokia.java.test.wma20.TestMessageReceiving4,wma20.Push.TestMessageReceiving4,-ARG_STARTstubMMSAddress-ARG_SEPmms://+4544187970:stub1-ARG_STARTstub2MMSAddress-ARG_SEPmms://+4544187970:stub2-ARG_STARTresourceFile-ARG_SEPsample.wav-ARG_STARTmimeType-ARG_SEPaudio/wav
+TestCase12: com.nokia.java.test.wma20.TestOpenInvalidMessageConnection4,wma20.Connection.TestOpenInvalidMessageConnection7,-ARG_STARTMMSAddress-ARG_SEPmms://22.22.22.22:8080
+TestCase44: com.nokia.java.test.wma20.TestMMSPush5,wma20.Push.TestMMSPush5,-ARG_STARTstubMMSAddress-ARG_SEPmms://+4544187970:stub1-ARG_STARTresourceFile-ARG_SEPsample.wav-ARG_STARTmimeType-ARG_SEPaudio/wav
+TestCase11: com.nokia.java.test.wma20.TestOpenInvalidMessageConnection4,wma20.Connection.TestOpenInvalidMessageConnection6,-ARG_STARTMMSAddress-ARG_SEPmms://999.888.777.111:com.nokia.TestApp8088
+TestCase43: com.nokia.java.test.wma20.TestMMSPush4,wma20.Push.TestMMSPush4,-ARG_STARTstubMMSAddress-ARG_SEPmms://+4544187970:stub1-ARG_STARTresourceFile-ARG_SEPtest.jpg-ARG_STARTmimeType-ARG_SEPimage/jpeg
+TestCase10: com.nokia.java.test.wma20.TestOpenInvalidMessageConnection4,wma20.Connection.TestOpenInvalidMessageConnection5,-ARG_STARTMMSAddress-ARG_SEPmms://1.23.123.0:TestApp
+TestCase42: com.nokia.java.test.wma20.TestMMSPush3,wma20.Push.TestMMSPush3,-ARG_STARTstubMMSAddress-ARG_SEPmms://+4544187970:stub1-ARG_STARTresourceFile-ARG_SEPtest.jpg-ARG_STARTmimeType-ARG_SEPimage/jpeg
+TestCase41: com.nokia.java.test.wma20.TestMMSPush2,wma20.Push.TestMMSPush2,-ARG_STARTstubMMSAddress-ARG_SEPmms://+4544187970:stub1-ARG_STARTresourceFile-ARG_SEPtest.jpg-ARG_STARTmimeType-ARG_SEPimage/jpeg
+TestCase40: com.nokia.java.test.wma20.TestMMSPush1,wma20.Push.TestMMSPush1,-ARG_STARTstubMMSAddress-ARG_SEPmms://+4544187970:stub1-ARG_STARTresourceFile-ARG_SEPsample.wav-ARG_STARTmimeType-ARG_SEPaudio/wav
+MIDlet-Version: 0.0.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/testdata/TestAgentPrivateDir/protected_content.txt	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,1 @@
+This file must be greater than zero length otherwise a ROM build warning occurs
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/testdata/copyfile.txt	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,1 @@
+This file must be greater than zero length otherwise a ROM build warning occurs
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/testdata/dummydata.txt	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,2 @@
+This is some dummy data.  It's an attempt to see if we can make the all the caf
+content access stuff work.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/testdata/dummywm.asf	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,1 @@
+SAMPLE WMDRMFILE
\ No newline at end of file
Binary file contentmgmt/referencedrmagent/tcaf/testdata/error.gif has changed
Binary file contentmgmt/referencedrmagent/tcaf/testdata/good.gif has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/testdata/notes1.txt	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,1 @@
+Test for DRMfileOpenPerformance.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/testdata/performance.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,18 @@
+[DrmContent]
+
+FileName    =C:\TCAF\TEST.DRM
+Container   =application/testagent.drm
+Content	    =text/plain
+CafMimeType =x-drm-text/plain
+Recognized  =true
+
+[JPEG]
+
+FileName   =TEST.JPG
+Container  =
+Content    =
+expectedCafRecognizerType =
+Recognized =false
+
+
+
Binary file contentmgmt/referencedrmagent/tcaf/testdata/picture.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/testdata/tcaf.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,212 @@
+[DrmContent]
+
+FileName    =C:\TCAF\testdata\TEST.DRM
+Container   =application/testagent.drm
+Content	    =text/plain
+CafMimeType =x-caf-text/plain
+Recognized  =true
+
+[TXT]
+
+FileName   =c:\tcaf\testdata\dummydata.txt
+Container  =
+Content    =
+expectedCafRecognizerType =
+Recognized =false
+
+[PlainText]
+URI1 = c:\tcaf\testdata\dummydata.txt
+URI2 = c:\tcaf\testdata\dummydata.txt
+
+[DCF]
+URI1 = c:\tcaf\testdata\test.drm
+URI2 = c:\tcaf\testdata\test.txt
+
+[MimeType]
+URI=c:\tcaf\testdata\test.drm
+ContentMimeType=text/plain
+Known=true
+
+[NoMimeType]
+URI=c:\tcaf\testdata\dummydata.txt
+ContentMimeType=text/plain
+Known=true
+
+[readDummyData]
+URI = c:\tcaf\testdata\dummydata.txt
+EnableSharing = true
+
+[readDCF]
+URI = c:\tcaf\testdata\test.drm
+EnableSharing = true
+
+[BufferSize]
+
+size = 255
+
+[Delete1]
+
+filename = c:\tcaf\testdata\delete1.drm
+result = 0
+
+[Delete2]
+
+filename = thisfiledoesnotexist
+result = -1
+
+[Attributes1]
+
+filename = c:\tcaf\testdata\test.drm
+Protected = true
+Forwardable = false
+
+[SupplyDrm]
+OutputPath = C:\
+SourceFileName = C:\tcaf\testdata\test.drm
+SuggestedFileName = supplied.drm
+MimeType = application/testagent.drm
+LeaveResult = 0
+
+[SupplyUnrecognized]
+OutputPath = C:\
+SourceFileName = C:\tcaf\testdata\test.txt
+SuggestedFileName = failed.drm
+MimeType = text/plain
+LeaveResult = -17453
+
+[CheckImport]
+URI1 = c:\supplied.drm
+URI2 = c:\tcaf\testdata\test.txt
+
+[Equality1]
+left-bitcount = 4
+left-bit0 = 1
+left-bit2 = 1
+
+right-bitcount = 4
+right-bit0 = 1
+right-bit2 = 1
+
+equal = 1
+
+[Equality2]
+left-bitcount = 6
+left-bit00 = 1
+left-bit02 = 1
+left-bit04 = 1
+
+right-bitcount = 4
+right-bit00 = 1
+right-bit02 = 1
+
+equal = 1
+
+[Equality3]
+left-bitcount = 10
+left-bit00 = 1
+left-bit09 = 1
+
+right-bitcount = 12
+right-bit00 = 1
+right-bit09 = 1
+right-bit11 = 1
+
+equal = 1
+
+[Inequality1]
+left-bitcount = 4
+left-bit00 = 1
+left-bit02 = 1
+left-bit03 = 1
+
+right-bitcount = 4
+right-bit00 = 1
+right-bit02 = 1
+
+equal = 0
+
+[Inequality2]
+left-bitcount = 10
+left-bit00 = 1
+left-bit09 = 1
+
+right-bitcount = 12
+right-bit00 = 1
+right-bit01 = 1
+right-bit09 = 1
+right-bit11 = 1
+
+equal = 0
+
+[Inequality3]
+left-bitcount = 12
+left-bit00 = 1
+left-bit09 = 1
+
+right-bitcount = 10
+right-bit00 = 1
+right-bit08 = 1
+
+equal = 0
+
+[Copy1]
+bitcount = 6
+bit00 = 1
+bit01 = 1
+bit03 = 1
+
+[Copy2]
+bitcount = 10
+bit00 = 1
+bit01 = 1
+bit03 = 1
+bit04 = 1
+bit07 = 1
+bit09 = 1
+
+[Copy3]
+bitcount = 16
+bit00 = 1
+bit01 = 1
+bit03 = 1
+bit04 = 1
+bit07 = 1
+bit09 = 1
+bit14 = 1
+bit15 = 1
+
+[Panic1]
+panic-bitcount = 6
+panictest = 1
+
+[Panic2]
+panic-bitcount = 6
+panictest = 2
+
+[Panic3]
+panic-bitcount = 6
+panictest = 3
+
+[Panic4]
+panic-bitcount = 6
+panictest = 4
+
+[Panic5]
+panic-bitcount = 6
+panictest = 5
+
+[Panic6]
+panic-bitcount = 6
+panictest = 6
+
+[OomRead]
+OomTest=1
+URI = c:\tcaf\testdata\test.drm
+
+[OomSupply]
+OomTest=2
+OutputPath = C:\
+SourceFileName = C:\tcaf\testdata\test.drm
+SuggestedFileName = supplied.drm
+MimeType = application/testagent.drm
+LeaveResult = 0
Binary file contentmgmt/referencedrmagent/tcaf/testdata/test.drm has changed
Binary file contentmgmt/referencedrmagent/tcaf/testdata/test.drm.bin has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/testdata/test.txt	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,1 @@
+This is some plain text that will used as the default content object, wrapped in a DRM container to ensure the Content Access Framework correctly switches between the F32 agent and agents who support a particular content type
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/testdata/uppercasetest.drm	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,2 @@
+
+TEXT/PLAINT   áThis is some plain text that will used as the default content object, wrapped in a DRM container to ensure the Content Access Framework correctly switches between the F32 agent and agents who support a particular content type
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tsmoke/smoke.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,180 @@
+/*
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <ecom/ecom.h>
+#include <caf/content.h>
+#include <caf/data.h>
+
+#include "smoke.h"
+#include <ecom/implementationinformation.h>
+
+using namespace ContentAccess;
+
+CTestConsole* CTestConsole::NewL(CConsoleBase* aCon)
+{
+  CTestConsole* self;
+  self=new (ELeave) CTestConsole;
+  self->iCon=aCon;
+  self->iFile=NULL;
+  return self;
+}
+
+CTestConsole::CTestConsole(void):CConsoleBase()
+{}
+
+CTestConsole::~CTestConsole(void)
+{
+  delete iCon;
+  if (iFile)
+    {
+      iFile->Close();
+    }
+}
+
+void CTestConsole::Write(const TDesC16& aString)
+{
+  iCon->Write(aString);
+  if (iFile)
+    {
+      TUint8 space[200];
+      TPtr8 ptr(space,200);
+      ptr.Copy(aString);
+      iFile->Write(ptr);
+    }
+}
+
+void CTestConsole::SetLogFile(RFile* aFile)
+{
+  iFile=aFile;
+}
+
+RTest test(_L("CAF Build Test"));
+
+void RunTest1(void)
+{
+  test.Start(_L(" @SYMTestCaseID:SEC-CAF-SMOKE-0001 CAF Test "));		 
+
+  CTestConsole* con=NULL;
+  TRAPD(ret, con=CTestConsole::NewL(test.Console()));
+  RFs fs;
+  
+  fs.Connect();
+  RFile* file;
+  file=new (ELeave) RFile;
+  
+  file->Replace(fs,_L("c:\\DRMLog.txt"),EFileShareAny|EFileWrite);
+  con->SetLogFile(file);
+  test.SetConsole(con);
+  
+  const TUid KInterfaceUID = {0x101FC2CE};
+
+  RImplInfoPtrArray aImplInfoArray;
+
+  // do here
+  test.Printf(_L("\nCAF Test Starting\n"));
+  test.Getch();
+
+  test.Printf(_L("Ready to get implementations of %08X\n"),KInterfaceUID);
+  //test.Getch();
+
+  __UHEAP_MARK; // start heap debug
+  
+  REComSession::ListImplementationsL(KInterfaceUID , aImplInfoArray);
+
+  TUint count = aImplInfoArray.Count();
+  CImplementationInformation *infoptr = aImplInfoArray[0];
+
+  TBufC<30> temp = infoptr->DisplayName();
+  test.Printf(_L("Found %d agent implementation(s).\n"),count);
+  test.Printf(_L("Name: %S\n"),&temp);
+  test.Getch();
+
+  // Need to delete implementation array
+  aImplInfoArray.ResetAndDestroy();
+
+  /*
+  TUid key;
+  TAgentCreationParams params;
+  params.iURIPtr    = &temp;
+  params.iIntentPtr = &temp;
+
+  // Note that we have no idea about the real type of CAgent...
+    CAgent *agent = 
+	reinterpret_cast<CAgent *>(REComSession::CreateImplementationL(KF32ImplementationUID, 
+																   key,
+																   (TAny*)&params));
+  TUint major=0, minor=0;
+  agent->Version(major, minor);
+  test.Printf(_L("\nVersion (key %d) returned %d:%d\n"),key,major,minor);
+  delete agent;
+  REComSession::DestroyedImplementation(key);
+  */
+
+  _LIT(KDummyContent,"c:\\dummy.txt");
+  test.Printf(_L("Hit enter to create content object (accessing %S)...\n"),&KDummyContent);
+  test.Getch();
+
+  CContent *myContent = 0; ret = 0;
+
+  TRAP(ret, myContent = CContent::NewL(KDummyContent));
+  if (ret)
+	  {
+	  test.Printf(_L("Content create failed (%d)..."),ret);
+	  test.Getch();
+	  }
+  
+  test.Printf(_L("Hit enter to create data object..."),ret);
+  test.Getch();
+
+  CData *myData = NULL;
+
+  TRAP(ret, myData = myContent->OpenContentL(EPeek));
+
+  if (ret)
+	  {
+	  test.Printf(_L("Data create failed (%d)..."),ret);
+	  test.Getch();
+	  }
+
+  TInt mySize;
+  myData->DataSizeL(mySize);
+  test.Printf(_L("\nAgent reports data size as %d bytes\n"),mySize);
+  test.Getch();
+
+  test.Printf(_L("\nTest Ending\n"));
+  test.Getch();
+  __UHEAP_MARKEND; // end heap debug
+  
+  test.End();
+  test.Close();
+}
+
+
+GLDEF_C TInt E32Main(void)
+{
+  CTrapCleanup* cleanup;
+  cleanup = CTrapCleanup::New();
+  // CActiveScheduler* s = new CActiveScheduler;
+  // s->Install(s);
+  
+  TRAP_IGNORE(RunTest1());
+  
+  
+  delete cleanup;
+  return(KErrNone);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tsmoke/smoke.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,67 @@
+/*
+* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* smoke.h - basic build & sanity test main
+*
+*/
+
+
+#include <e32test.h>
+#include <f32file.h>
+#include <caf/caf.h>
+
+class CTestData: public CBase
+
+{
+ public:
+  static CTestData* NewL(const TDesC& aFilename);
+  enum TType { EMessage, EData, EFinished,EError=-1 } ;
+  TType Type(void);
+  HBufC* Message(void);
+  HBufC8* operator [] (TInt aIndex);
+  ~CTestData(void);
+ private:
+  CTestData(void);
+  TInt iCurrentPlace;
+  void ConstructL(const TDesC& aFilename);
+  HBufC8* iLine;
+  HBufC8* iFile;
+};
+
+class CTestConsole:public CConsoleBase
+{
+ public:
+  static CTestConsole* NewL(CConsoleBase* aCon);
+  TInt Create(const TDesC16& aTitle,TSize aSize) {return iCon->Create(aTitle,aSize);};
+  void Read(TRequestStatus& aStatus) {iCon->Read(aStatus);};
+  void ReadCancel(void) {iCon->ReadCancel();};
+  void Write(const TDesC16& aString);
+  TPoint CursorPos(void) const {return iCon->CursorPos();};
+  void SetCursorPosAbs(const TPoint& aPos) {iCon->SetCursorPosAbs(aPos);};
+  void SetCursorPosRel(const TPoint& aPos) {iCon->SetCursorPosRel(aPos);};
+  void SetCursorHeight(TInt aHeight) {iCon->SetCursorHeight(aHeight);};
+  void SetTitle(const TDesC16& aTitle) {iCon->SetTitle(aTitle);};
+  void ClearScreen(void) {iCon->ClearScreen();};
+  void ClearToEndOfLine(void) {iCon->ClearToEndOfLine();};
+  TSize ScreenSize(void) const {return iCon->ScreenSize();};
+  TKeyCode KeyCode(void) const {return iCon->KeyCode();};
+  TUint KeyModifiers(void) const {return iCon->KeyModifiers();};
+  ~CTestConsole(void);
+  void SetLogFile(RFile* aFile);
+ private:
+  CTestConsole(void);
+  CConsoleBase* iCon;
+  RFile* iFile;
+};
+
--- a/crypto/weakcryptospi/examples/mac_api_usage/t_mac_api_usage.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/examples/mac_api_usage/t_mac_api_usage.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -26,7 +26,7 @@
 
 USERINCLUDE     ../../inc/spi
 
-SYSTEMINCLUDE   /epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY         euser.lib
 LIBRARY         cryptospi.lib
--- a/crypto/weakcryptospi/group/dumpcryptoplugin.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/group/dumpcryptoplugin.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -27,8 +27,7 @@
 
 UID 0 0x102832e6
 USERINCLUDE ../inc ../inc/spi
-SYSTEMINCLUDE /epoc32/include
-
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 SOURCEPATH ../test/dumpcryptoplugin
 SOURCE dumpcryptoplugin.cpp dumpprocessor.cpp
--- a/crypto/weakcryptospi/group/tasymmetric.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/group/tasymmetric.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -39,8 +39,9 @@
 
 USERINCLUDE .
 USERINCLUDE ../inc 
+USERINCLUDE ../../../cryptomgmtlibs/securitytestfw/test/testhandler2
 
-SYSTEMINCLUDE /epoc32/include/testhandler2 /epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY	euser.lib efsrv.lib t_testhandler2.lib random.lib cryptography.lib hash.lib
 SMPSAFE
--- a/crypto/weakcryptospi/group/tbigint.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/group/tbigint.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -42,8 +42,9 @@
 
 
 USERINCLUDE ../inc
+USERINCLUDE ../../../cryptomgmtlibs/securitytestfw/test/testhandler2
 
-SYSTEMINCLUDE /epoc32/include/testhandler2 /epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY	euser.lib efsrv.lib t_testhandler2.lib random.lib
 SMPSAFE
--- a/crypto/weakcryptospi/group/tcryptospi.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/group/tcryptospi.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -105,13 +105,17 @@
 SOURCE			symmetric_mac_incremental_with_copy_step.cpp
 #endif
 
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+SOURCE			dummyecccipherloadstep.cpp
+SOURCE			dummyeccsignerloadstep.cpp
+#endif
+
 USERINCLUDE     ..
 USERINCLUDE     ../test/tcryptospi/src
 USERINCLUDE	../inc/spi
 
-SYSTEMINCLUDE   /epoc32/include
-SYSTEMINCLUDE   /epoc32/include/test
-SYSTEMINCLUDE   /epoc32/include/libc
+
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 // Please add your system include under here
 
--- a/crypto/weakcryptospi/group/thash.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/group/thash.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -29,7 +29,7 @@
 SOURCE        ../test/thash/hashtestutils.cpp
 
 USERINCLUDE ../inc
-SYSTEMINCLUDE /epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 LIBRARY       euser.lib efsrv.lib hash.lib charconv.lib
 
 VENDORID 0x70000001
--- a/crypto/weakcryptospi/group/tpaddingServer.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/group/tpaddingServer.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -33,8 +33,7 @@
 
 USERINCLUDE	../inc
 
-SYSTEMINCLUDE	/epoc32/include
-SYSTEMINCLUDE	/epoc32/include/test
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY		testexecuteutils.lib
 LIBRARY		testexecutelogclient.lib
--- a/crypto/weakcryptospi/group/tpbe.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/group/tpbe.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -31,9 +31,10 @@
 SOURCE		texternpbeparams.cpp
 
 USERINCLUDE ../inc
+USERINCLUDE ../../../cryptomgmtlibs/securitytestfw/test/testhandler2
 
-SYSTEMINCLUDE /epoc32/include/testhandler2 /epoc32/include
-SYSTEMINCLUDE /epoc32/include/libc
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+OS_LAYER_LIBC_SYSTEMINCLUDE
 
 LIBRARY	euser.lib efsrv.lib t_testhandler2.lib pbe.lib estor.lib cryptography.lib
 
--- a/crypto/weakcryptospi/group/tpkcs5kdf.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/group/tpkcs5kdf.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -30,9 +30,10 @@
 SOURCE tactionderivekey.cpp tpkcs5kdfmain.cpp
 
 USERINCLUDE ../inc
+USERINCLUDE ../../../cryptomgmtlibs/securitytestfw/test/testhandler2
 
-SYSTEMINCLUDE /epoc32/include/testhandler2 /epoc32/include
-SYSTEMINCLUDE /epoc32/include/libc
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+OS_LAYER_LIBC_SYSTEMINCLUDE
 
 LIBRARY	euser.lib efsrv.lib t_testhandler2.lib pbe.lib estlib.lib
 
--- a/crypto/weakcryptospi/group/trandom.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/group/trandom.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -28,7 +28,7 @@
 SOURCE        t_random.cpp
 
 USERINCLUDE ../inc ../source/random
-SYSTEMINCLUDE /epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 LIBRARY       euser.lib 
 LIBRARY       efsrv.lib random.lib
 
--- a/crypto/weakcryptospi/group/tsymmetric.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/group/tsymmetric.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -38,8 +38,9 @@
 USERINCLUDE .
 USERINCLUDE 	../inc
 USERINCLUDE	../source/symmetric
+USERINCLUDE ../../../cryptomgmtlibs/securitytestfw/test/testhandler2
 
-SYSTEMINCLUDE	/epoc32/include/testhandler2 /epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY			euser.lib efsrv.lib t_testhandler2.lib 
 LIBRARY			cryptography.lib random.lib
--- a/crypto/weakcryptospi/inc/cryptotests.iby	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/inc/cryptotests.iby	Mon Oct 12 10:17:04 2009 +0300
@@ -26,6 +26,10 @@
 #include "tcryptospi.iby"
 #include "cryptospi_testplugins.iby"
 
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+#include "cryptospi_testwmdrmplugins.iby"
+#endif
+
 file=ABI_DIR\BUILD_DIR\tsymmetric.exe	System\Programs\tsymmetric.exe
 file=ABI_DIR\BUILD_DIR\tasymmetric.exe	System\Programs\tasymmetric.exe
 file=ABI_DIR\BUILD_DIR\tbigint.exe	System\Programs\tbigint.exe
--- a/crypto/weakcryptospi/inc/spi/cryptospidef.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/inc/spi/cryptospidef.h	Mon Oct 12 10:17:04 2009 +0300
@@ -640,6 +640,79 @@
 	const TUid KNonEmbeddedKeyUid={KNonEmbeddedKey};
 	const TUid KExtractableKeyUid={KExtractableKey};
 	const TUid KNonExtractableKeyUid={KNonExtractableKey};
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+	/**
+	 * The UID below is not specific to ECC. This should be used 
+	 * as a CKey key param, whenever the user of CryptoSPI just has
+	 * the handle and not the actual key with him. The SPI plugin 
+	 * should search for this ID and invoke the right apis for 
+	 * getting access to keys.
+	 */
+    const TInt32 KPassedHandleToKey = 0x20025161;
+    const TUid KPassedHandleToKeyUid = {KPassedHandleToKey};
+
+#ifdef SYMBIAN_ENABLE_SDP_ECC
+    /**
+    UIDs related to Ecc (which is Asymmetric Cipher)
+    */
+    const TInt32 KAlgorithmCipherEcc = 0x20024482;
+    const TInt32 KAlgorithmSignerEcc = 0x20024483;
+    const TInt32 KAlgorithmVerifierEcc = 0x20024486;
+    const TInt32 KAlgorithmECCKeyPairGenerator = 0x20024487;
+
+    const TUid KEccCipherUid = {KAlgorithmCipherEcc};
+    const TUid KEccSignerUid = {KAlgorithmSignerEcc};
+    const TUid KEccVerifierUid = {KAlgorithmVerifierEcc};
+    const TUid KEccKeyPairGeneratorUid = {KAlgorithmECCKeyPairGenerator};
+
+    /**
+    UIDs related to ECC keys
+    */
+    const TInt32 KEccKeyType = 0x20025160;
+    const TInt32 KEccPublicKey = 0x20024484;
+    const TInt32 KEccPrivateKey = 0x20024485;
+
+    const TUid KEccKeyTypeUid = {KEccKeyType};
+    const TUid KEccPublicKeyUid = {KEccPublicKey};
+    const TUid KEccPrivateKeyUid = {KEccPrivateKey};
+
+    /**
+    UIDs related to ECC key params
+    */
+    const TInt32 KEccFiniteFieldFP = 0x20025151;
+    const TInt32 KEccFiniteFieldF2M = 0x20025152;
+    const TInt32 KEccKeyGenerationSeed = 0x20025153;
+    const TInt32 KEccKeyParameterP = 0x20025154;
+    const TInt32 KEccKeyParameterA = 0x20025155;
+    const TInt32 KEccKeyParameterB = 0x20025156;
+    const TInt32 KEccKeyParameterG = 0x20025157;
+    const TInt32 KEccKeyParameterN = 0x20025158;
+    const TInt32 KEccKeyParameterH = 0x20025159;
+    const TInt32 KEccKeyParameterM = 0x2002515A;
+    const TInt32 KEccKeyParameterF = 0x2002515B;
+    const TInt32 KEccKeyParameterD = 0x2002515C;
+    const TInt32 KEccKeyParameterQ = 0x2002515D;
+    const TInt32 KEccSignatureParameterR = 0x2002515E;
+    const TInt32 KEccSignatureParameterS = 0x2002515F;
+
+    const TUid KEccFiniteFieldFPUid = {KEccFiniteFieldFP};
+    const TUid KEccFiniteFieldF2MUid = {KEccFiniteFieldF2M};
+    const TUid KEccKeyGenerationSeedUid = {KEccKeyGenerationSeed};
+    const TUid KEccKeyParameterPUid = {KEccKeyParameterP};
+    const TUid KEccKeyParameterAUid = {KEccKeyParameterA};
+    const TUid KEccKeyParameterBUid = {KEccKeyParameterB};
+    const TUid KEccKeyParameterGUid = {KEccKeyParameterG};
+    const TUid KEccKeyParameterNUid = {KEccKeyParameterN};
+    const TUid KEccKeyParameterHUid = {KEccKeyParameterH};
+    const TUid KEccKeyParameterMUid = {KEccKeyParameterM};
+    const TUid KEccKeyParameterFUid = {KEccKeyParameterF};
+    const TUid KEccKeyParameterDUid = {KEccKeyParameterD};
+    const TUid KEccKeyParameterQUid = {KEccKeyParameterQ};
+    const TUid KEccSignatureParameterRUid = {KEccSignatureParameterR};
+    const TUid KEccSignatureParameterSUid = {KEccSignatureParameterS};
+#endif //SYMBIAN_ENABLE_SDP_ECC
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 	}
 
 
--- a/crypto/weakcryptospi/inc/tcryptospi.iby	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/inc/tcryptospi.iby	Mon Oct 12 10:17:04 2009 +0300
@@ -33,6 +33,9 @@
 data = ZRESOURCE\cryptospi\plug-ins.txt5 		resource\cryptospi\plug-ins.txt5
 data = ZRESOURCE\cryptospi\plug-ins.txt6 		resource\cryptospi\plug-ins.txt6
 data = ZRESOURCE\cryptospi\plug-ins.txt7 		resource\cryptospi\plug-ins.txt7
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+data = ZRESOURCE\cryptospi\tecchw-plug-ins.txt 		resource\cryptospi\tecchw-plug-ins.txt
+#endif
 
 data = ZDRIVE/testdata/tcryptospi/scripts/tcryptospi.script						\testdata\tcryptospi\scripts\tcryptospi.script
 data = ZDRIVE/testdata/tcryptospi/scripts/te_SymmetricCipherTestCases.script			\testdata\tcryptospi\scripts\te_SymmetricCipherTestCases.script
@@ -46,6 +49,10 @@
 data = ZDRIVE/testdata/tcryptospi/scripts/te_PluginCharsTestCases.script			\testdata\tcryptospi\scripts\te_PluginCharsTestCases.script
 data = ZDRIVE/testdata/tcryptospi/scripts/te_RuleSelectionTestCases.script			\testdata\tcryptospi\scripts\te_RuleSelectionTestCases.script
 
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+data = ZDRIVE/testdata/tcryptospi/scripts/te_dummyeccciphertestcases.script			\testdata\tcryptospi\scripts\te_dummyeccciphertestcases.script
+#endif
+
 data = ZDRIVE/testdata/tcryptospi/configs/SymmetricCipherPositiveObjectLoad.ini					\testdata\tcryptospi\configs\SymmetricCipherPositiveObjectLoad.ini
 data = ZDRIVE/testdata/tcryptospi/configs/SymmetricCipherEncryptedDataCheck.ini					\testdata\tcryptospi\configs\SymmetricCipherEncryptedDataCheck.ini
 data = ZDRIVE/testdata/tcryptospi/configs/SymmetricCipherEncryptDecrypt.ini						\testdata\tcryptospi\configs\SymmetricCipherEncryptDecrypt.ini
@@ -102,6 +109,10 @@
 data = ZDRIVE/testdata/tcryptospi/configs/ruleselection_matrix.ini				\testdata\tcryptospi\configs\ruleselection_matrix.ini
 data = ZDRIVE/testdata/tcryptospi/configs/ruleselection_extended.ini				\testdata\tcryptospi\configs\ruleselection_extended.ini
 
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+data = ZDRIVE/testdata/tcryptospi/configs/dummyeccciphertestcases.ini				\testdata\tcryptospi\configs\dummyeccciphertestcases.ini
+#endif
+
 data = ZDRIVE/testdata/tcryptospi/data/key64bit.txt							\testdata\tcryptospi\data\key64bit.txt
 data = ZDRIVE/testdata/tcryptospi/data/key128bit.txt							\testdata\tcryptospi\data\key128bit.txt
 data = ZDRIVE/testdata/tcryptospi/data/key192bit.txt							\testdata\tcryptospi\data\key192bit.txt
--- a/crypto/weakcryptospi/test/kms/driver/product/kmskext/kmskext.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/kms/driver/product/kmskext/kmskext.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -24,7 +24,9 @@
 target			kmskext.dll
 targettype		kext
 
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 userinclude		../../../private_include/product
+userinclude		../../../exported_include
 
 sourcepath		.
 source			hwkeystore.cpp kmskext.cpp
--- a/crypto/weakcryptospi/test/kms/driver/product/kmsldd/kmsldd.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/kms/driver/product/kmsldd/kmsldd.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -23,9 +23,9 @@
 // KSharedLibraryUid 
 uid				0x1000008d 0x102833BB
 
-systeminclude	/epoc32/include
-
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 userinclude		../../../private_include/product
+userinclude		../../../exported_include
 
 sourcepath		.
 source			kmsldd.cpp
--- a/crypto/weakcryptospi/test/kms/driver/product/kmslddk/kmslddk.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/kms/driver/product/kmslddk/kmslddk.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -22,7 +22,9 @@
 target			kmslddk.ldd
 targettype		ldd
 
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 userinclude		../../../private_include/product
+userinclude		../../../exported_include
 
 sourcepath		.
 source			kmslddk.cpp
--- a/crypto/weakcryptospi/test/kms/driver/test/kmsextrldd/kmsextrldd.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/kms/driver/test/kmsextrldd/kmsextrldd.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -23,9 +23,9 @@
 // KSharedLibraryUid 
 uid				0x1000008d 0x102833BC
 
-systeminclude	/epoc32/include
-
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 userinclude		../../../private_include/product
+userinclude		../../../exported_include
 userinclude		../../../private_include/test
 
 sourcepath		.
--- a/crypto/weakcryptospi/test/kms/driver/test/kmsextrlddk/kmsextrlddk.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/kms/driver/test/kmsextrlddk/kmsextrlddk.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -22,7 +22,9 @@
 target			kmsextrlddk.ldd
 targettype		ldd
 
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 userinclude		../../../private_include/product
+userinclude		../../../exported_include
 userinclude		../../../private_include/test
 
 sourcepath		.
--- a/crypto/weakcryptospi/test/kms/driver/test/kmslddclient/kmslddclient.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/kms/driver/test/kmslddclient/kmslddclient.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -21,7 +21,7 @@
 
 uid				0x0 0x102833BD
 
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 sourcepath		.
 source			kmslddclient.cpp
--- a/crypto/weakcryptospi/test/kms/driver/test/kmslddtest/kmslddtest.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/kms/driver/test/kmslddtest/kmslddtest.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -22,9 +22,9 @@
 // const TUint32 KKmsServerUidValue = 0x102833BF
 uid				0x0 0x102833BF
 
-systeminclude	/epoc32/include
-
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 userinclude		../../../private_include/product
+userinclude		../../../exported_include
 userinclude		../../../private_include/test
 
 source			main.cpp
--- a/crypto/weakcryptospi/test/kms/exported_include/kmsclient.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/kms/exported_include/kmsclient.h	Mon Oct 12 10:17:04 2009 +0300
@@ -29,7 +29,7 @@
 
 #include <e32std.h>
 
-#include <keyhandle.h>
+#include "keyhandle.h"
 
 
 /** The server will panic clients with the category if it detects an error. */
--- a/crypto/weakcryptospi/test/kms/private_include/product/hwkeystore.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/kms/private_include/product/hwkeystore.h	Mon Oct 12 10:17:04 2009 +0300
@@ -30,7 +30,7 @@
 #include <e32cmn.h>
 #include <e32ver.h>
 
-#include <keyhandle.h>
+#include "keyhandle.h"
 
 
 class HwKeyStore
--- a/crypto/weakcryptospi/test/kms/private_include/product/kmsldd.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/kms/private_include/product/kmsldd.h	Mon Oct 12 10:17:04 2009 +0300
@@ -34,7 +34,7 @@
 #include <e32std.h>
 #endif
 
-#include <keyhandle.h>
+#include "keyhandle.h"
 
 /** Hardware store LDD filename, as supplied to LoadLogicalDevice. */
 _LIT(KKmsLddFileName, "KMSLDDK");
--- a/crypto/weakcryptospi/test/kms/private_include/product/kmslddcommon.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/kms/private_include/product/kmslddcommon.h	Mon Oct 12 10:17:04 2009 +0300
@@ -30,7 +30,7 @@
 
 #include <e32cmn.h>
 
-#include <keyhandle.h>
+#include "keyhandle.h"
 
 namespace KmsLddImpl
 /**
--- a/crypto/weakcryptospi/test/kms/private_include/test/kmsextrldd.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/kms/private_include/test/kmsextrldd.h	Mon Oct 12 10:17:04 2009 +0300
@@ -33,7 +33,7 @@
 	#include <e32std.h>
 #endif
 
-#include <keyhandle.h>
+#include "keyhandle.h"
 
 /** Extraction LDD filename, as supplied to LoadLogicalDevice. */
 _LIT(KKmsExtrLddFileName, "KMSEXTRLDDK");
--- a/crypto/weakcryptospi/test/kms/server/product/kmsclient/kmsclient.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/kms/server/product/kmsclient/kmsclient.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -22,7 +22,7 @@
 */
 
 #include <e32uid.h>
-#include <kmsclient.h>
+#include "kmsclient.h"
 
 #include "kmsservercommon.h"
 #include "kmslddcommon.h"
--- a/crypto/weakcryptospi/test/kms/server/product/kmsclient/kmsclient.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/kms/server/product/kmsclient/kmsclient.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -21,9 +21,10 @@
 
 uid				0x0 0x102833BE
 
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+userinclude		../../../private_include/product
+userinclude		../../../exported_include
 
-userinclude		../../../private_include/product
 
 sourcepath		.
 source			kmsclient.cpp
--- a/crypto/weakcryptospi/test/kms/server/product/kmsserver/kmsserver.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/kms/server/product/kmsserver/kmsserver.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -22,9 +22,9 @@
 // const TUint32 KKmsServerUidValue = 0x102833BF
 uid				0x0 0x102833BF
 
-systeminclude	/epoc32/include
-
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 userinclude		../../../private_include/product
+userinclude		../../../exported_include
 
 sourcepath		.
 source			kmsmain.cpp kmsserver.cpp kmssession.cpp kmsshutdown.cpp
--- a/crypto/weakcryptospi/test/kms/server/product/kmsserver/kmssession.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/kms/server/product/kmsserver/kmssession.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -21,7 +21,7 @@
  @file
 */
 
-#include <kmsclient.h>
+#include "kmsclient.h"
 
 #include "kmsserver.h"
 
--- a/crypto/weakcryptospi/test/kms/server/test/kmstest/kmstest.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/kms/server/test/kmstest/kmstest.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -23,7 +23,7 @@
 
 
 #include <e32test.h>
-#include <kmsclient.h>
+#include "kmsclient.h"
 #include "kmsservercommon.h"
 
 #include "kmstest.h"
--- a/crypto/weakcryptospi/test/kms/server/test/kmstest/kmstest.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/kms/server/test/kmstest/kmstest.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -21,9 +21,9 @@
 
 uid				0x0 0x102833C0
 
-systeminclude	/epoc32/include
-
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 userinclude		../../../private_include/product
+userinclude		../../../exported_include
 userinclude		../../../private_include/test
 
 sourcepath		.
--- a/crypto/weakcryptospi/test/tasymmetric/tdhvector.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/tasymmetric/tdhvector.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -17,7 +17,7 @@
 
 
 #include "tdhvector.h"
-#include <testhandler2/t_input.h>
+#include "t_input.h"
 #include "performancetest.h"
 
 enum TActionMode {EMode1 = 1, EMode2 = 2, EMode3 = 3, EMode4 = 4};
--- a/crypto/weakcryptospi/test/tcryptospi/group/bld.inf	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/tcryptospi/group/bld.inf	Mon Oct 12 10:17:04 2009 +0300
@@ -42,6 +42,9 @@
 ./plug-ins.txt5 z:/resource/cryptospi/plug-ins.txt5
 ./plug-ins.txt6 z:/resource/cryptospi/plug-ins.txt6
 ./plug-ins.txt7 z:/resource/cryptospi/plug-ins.txt7
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+./tecchw-plug-ins.txt z:/resource/cryptospi/tecchw-plug-ins.txt
+#endif
 
 // Script Files
 ../scripts/te_symmetricciphertestcases.script		/epoc32/winscw/c/testdata/tcryptospi/scripts/te_symmetricciphertestcases.script
@@ -64,6 +67,9 @@
 ../scripts/te_ruleselectiontestcases.script			/epoc32/winscw/c/testdata/tcryptospi/scripts/te_ruleselectiontestcases.script
 #endif
 
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+../scripts/te_dummyeccciphertestcases.script				/epoc32/winscw/c/testdata/tcryptospi/scripts/te_dummyeccciphertestcases.script
+#endif
 //***********************************************************************************************************************
 
 // Symmetric Step Configuration Files
@@ -148,6 +154,9 @@
 ../testdata/ruleselection_matrix.ini						/epoc32/winscw/c/testdata/tcryptospi/configs/ruleselection_matrix.ini
 #endif
 
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+../testdata/dummyeccciphertestcases.ini						/epoc32/winscw/c/testdata/tcryptospi/configs/dummyeccciphertestcases.ini
+#endif
 //***********************************************************************************************************************
 
 // Asymmetric and Symmetric Data Files
@@ -252,3 +261,8 @@
 ../testdata/nistsp800-38atestvectors/ctr-aes256key.ctr			/epoc32/winscw/c/testdata/tcryptospi/data/nistsp800-38atestvectors/ctr-aes256key.ctr
 ../testdata/nistsp800-38atestvectors/ctr-aes256ciphertext.ctr	/epoc32/winscw/c/testdata/tcryptospi/data/nistsp800-38atestvectors/ctr-aes256ciphertext.ctr
 
+// Copy Batch files
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+../scripts/batchfiles/pre_dummyeccplugin.bat					/epoc32/winscw/c/testdata/tcryptospi/scripts/batchfiles/pre_dummyeccplugin.bat
+../scripts/batchfiles/post_dummyeccplugin.bat					/epoc32/winscw/c/testdata/tcryptospi/scripts/batchfiles/post_dummyeccplugin.bat
+#endif
\ No newline at end of file
Binary file crypto/weakcryptospi/test/tcryptospi/group/tecchw-plug-ins.txt has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/crypto/weakcryptospi/test/tcryptospi/scripts/batchfiles/post_dummyeccplugin.bat	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,21 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+del \epoc32\RELEASE\WINSCW\UDEB\z\resource\cryptospi\plug-ins.txt
+copy \epoc32\RELEASE\WINSCW\UDEB\z\resource\cryptospi\plug-ins.txt.backup \epoc32\RELEASE\WINSCW\UDEB\z\resource\cryptospi\plug-ins.txt
+del \epoc32\RELEASE\WINSCW\UDEB\z\resource\cryptospi\plug-ins.txt.backup
+del \epoc32\RELEASE\WINSCW\UREL\z\resource\cryptospi\plug-ins.txt
+copy \epoc32\RELEASE\WINSCW\UREL\z\resource\cryptospi\plug-ins.txt.backup \epoc32\RELEASE\WINSCW\UREL\z\resource\cryptospi\plug-ins.txt
+del \epoc32\RELEASE\WINSCW\UREL\z\resource\cryptospi\plug-ins.txt.backup
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/crypto/weakcryptospi/test/tcryptospi/scripts/batchfiles/pre_dummyeccplugin.bat	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,19 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+copy \epoc32\RELEASE\WINSCW\UDEB\z\resource\cryptospi\plug-ins.txt \epoc32\RELEASE\WINSCW\UDEB\z\resource\cryptospi\plug-ins.txt.backup
+copy \epoc32\RELEASE\WINSCW\UDEB\z\resource\cryptospi\tecchw-plug-ins.txt \epoc32\RELEASE\WINSCW\UDEB\z\resource\cryptospi\plug-ins.txt
+copy \epoc32\RELEASE\WINSCW\UREL\z\resource\cryptospi\plug-ins.txt \epoc32\RELEASE\WINSCW\UREL\z\resource\cryptospi\plug-ins.txt.backup
+copy \epoc32\RELEASE\WINSCW\UREL\z\resource\cryptospi\tecchw-plug-ins.txt \epoc32\RELEASE\WINSCW\UREL\z\resource\cryptospi\plug-ins.txt
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/crypto/weakcryptospi/test/tcryptospi/scripts/te_dummyeccciphertestcases.script	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,53 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+PRINT Run all te_DummyEccCipherTestCases
+//
+
+//
+LOAD_SUITE Te_CryptoSpi
+//
+//! @SYMTestCaseID 	SEC-CRYPTOSPI-PREQ2086-0001
+//! @SYMTestCaseDesc	DummyEccCipherLoad
+
+START_TESTCASE SEC-CRYPTOSPI-PREQ2086-0001
+RUN_TEST_STEP 100 Te_CryptoSpi DummyEccCipherLoadStep c:\testdata\tcryptospi\configs\DummyEccCipherTestCases.ini Cipher0001
+END_TESTCASE SEC-CRYPTOSPI-PREQ2086-0001
+
+//
+//! @SYMTestCaseID 	SEC-CRYPTOSPI-PREQ2086-0002
+//! @SYMTestCaseDesc	DummyEccSignerLoad
+
+START_TESTCASE SEC-CRYPTOSPI-PREQ2086-0002
+RUN_TEST_STEP 100 Te_CryptoSpi DummyEccSignerLoadStep c:\testdata\tcryptospi\configs\DummyEccCipherTestCases.ini Signer0001
+END_TESTCASE SEC-CRYPTOSPI-PREQ2086-0002
+
+PRINT Complete_te_DummyEccCipherTestCases
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/crypto/weakcryptospi/test/tcryptospi/src/dummyecccipherloadstep.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,151 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Example CTestStep derived implementation
+*
+*/
+
+
+/**
+ @file
+ @internalTechnology
+*/
+#include "dummyecccipherloadstep.h"
+
+#include "cryptoasymmetriccipherapi.h"
+#include "cryptokeypairgeneratorapi.h"
+#include "keypair.h"
+#include "filereader.h"
+
+using namespace CryptoSpi;
+
+CDummyEccCipherLoadStep::~CDummyEccCipherLoadStep()
+	{
+	}
+
+
+CDummyEccCipherLoadStep::CDummyEccCipherLoadStep()
+	{
+	SetTestStepName(KDummyEccCipherLoadStep);
+	}
+
+
+TVerdict CDummyEccCipherLoadStep::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+
+TVerdict CDummyEccCipherLoadStep::doTestStepL()
+	{
+
+	INFO_PRINTF1(_L("*** Dummy Ecc Cipher - Load ***"));
+	INFO_PRINTF2(_L("HEAP CELLS: %d"), User::CountAllocCells());
+	
+    //Assume failure, unless all is successful
+    SetTestStepResult(EFail);
+    
+    TVariantPtrC algorithm;
+    TVariantPtrC paddingMode;
+    
+    if(!GetStringFromConfig(ConfigSection(),KConfigAlgorithmUid, algorithm) || 
+        !GetStringFromConfig(ConfigSection(),KConfigPaddingMode, paddingMode ))
+        {
+        ERR_PRINTF1(_L("*** FAIL: Algorithm id or padding mode is missing ***"));
+        User::Leave(KErrNotFound);
+        }
+    INFO_PRINTF1(_L("Generating dummy ECC keys"));
+          
+    /**
+     * Note that we are actually generating RSA keys in place 
+     * of ECC keys here. The reason for that is we do not have 
+     * a working ECC implementation. This test case just tests 
+     * if dummyecc cipher is getting loaded. This is being 
+     * tested since algorithm is set to KAlgorithmCipherEcc. 
+     * Keys have no significance in this test case.
+     */
+    CCryptoParams* keyParams = CCryptoParams::NewLC(); 
+    keyParams->AddL(KKeyExponent, KRsaKeyParameterEUid);
+    keyParams->AddL(KRsaPrivateKeyStandard, KRsaKeyTypeUid);
+
+    //Create Key Pair Generator Objects
+    CKeyPairGenerator * keypairImpl = NULL;
+            
+    // create a key pair generator implementation interface
+    TRAPD_LOG(err,CKeyPairGeneratorFactory::CreateKeyPairGeneratorL(
+                                    keypairImpl, 
+                                    KRSAKeyPairGeneratorUid, 
+                                    keyParams));
+    if(err != KErrNone)
+        {
+        ERR_PRINTF1(_L("*** FAIL: Failed to Create generator impl interface ***"));
+        CleanupStack::PopAndDestroy(keyParams);
+        return EFail;
+        }
+    CleanupStack::PushL(keypairImpl);
+
+    // Create a Key Pair
+    CKeyPair* keyPair = NULL;
+    TRAP_LOG(err,keypairImpl->GenerateKeyPairL(1024, *keyParams, keyPair));
+    if(err != KErrNone)
+        {
+        ERR_PRINTF1(_L("*** FAIL: Failed to Create key pair ***"));
+        CleanupStack::PopAndDestroy(keypairImpl);
+        CleanupStack::PopAndDestroy(keyParams);
+        return EFail;
+        }
+    CleanupStack::PushL(keyPair);
+    
+    //*****************************************************
+
+    INFO_PRINTF1(_L("Creating Dummy ECC Cipher Object..."));
+    
+    CryptoSpi::CAsymmetricCipher * impl = NULL;
+        
+    TRAP(err,CAsymmetricCipherFactory::CreateAsymmetricCipherL
+                                        (
+                                        impl,
+                                        algorithm,
+                                        keyPair->PrivateKey(),
+                                        KCryptoModeDecryptUid,
+                                        paddingMode,
+                                        NULL));
+
+    if(err == KErrNone)
+        {
+        delete impl;
+        INFO_PRINTF1(_L("*** Dummy Ecc Cipher - Load: PASS ***"));
+        SetTestStepResult(EPass);
+        }
+    else
+        {
+        ERR_PRINTF2(_L("*** FAIL: Failed to Create dummy Ecc Cipher Object - %d ***"), err);
+        }
+
+    CleanupStack::PopAndDestroy(keyPair);
+    CleanupStack::PopAndDestroy(keypairImpl);			
+    CleanupStack::PopAndDestroy(keyParams);
+		
+	INFO_PRINTF2(_L("HEAP CELLS: %d"), User::CountAllocCells());
+
+	return TestStepResult();
+	}
+
+
+
+TVerdict CDummyEccCipherLoadStep::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/crypto/weakcryptospi/test/tcryptospi/src/dummyecccipherloadstep.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+
+/**
+ @file
+ @internalTechnology
+*/
+#if (!defined __DUMMYECCCIPHERLOAD_TEST_H__)
+#define __DUMMYECCCIPHERLOAD_TEST_H__
+#include <test/testexecutestepbase.h>
+#include "te_cryptospistepbase.h"
+
+class CDummyEccCipherLoadStep : public CTe_CryptoSpiStepBase
+	{
+public:
+    CDummyEccCipherLoadStep();
+	~CDummyEccCipherLoadStep();
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+
+private:
+	};
+
+_LIT(KDummyEccCipherLoadStep,"DummyEccCipherLoadStep");
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/crypto/weakcryptospi/test/tcryptospi/src/dummyeccsignerloadstep.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,151 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Example CTestStep derived implementation
+*
+*/
+
+
+/**
+ @file
+ @internalTechnology
+*/
+#include "dummyeccsignerloadstep.h"
+
+#include "keypair.h"
+#include "cryptosignatureapi.h"
+#include "cryptokeypairgeneratorapi.h"
+
+using namespace CryptoSpi;
+
+
+CDummyEccSignerLoadStep::~CDummyEccSignerLoadStep()
+	{
+	}
+
+CDummyEccSignerLoadStep::CDummyEccSignerLoadStep()
+	{
+	SetTestStepName(KDummyEccSignerLoadStep);
+	}
+
+TVerdict CDummyEccSignerLoadStep::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+
+TVerdict CDummyEccSignerLoadStep::doTestStepL()
+	{
+	INFO_PRINTF1(_L("*** Dummy Ecc Signer - Load ***"));
+	INFO_PRINTF2(_L("HEAP CELLS: %d"), User::CountAllocCells());
+	
+    //Assume failure, unless all is successful
+    SetTestStepResult(EFail);
+    
+    TVariantPtrC testVariant;
+    TVariantPtrC keyVariant;
+
+    if(	!GetStringFromConfig(ConfigSection(),KConfigExchangeKey, keyVariant))
+        {
+        // Leave if there's any error.
+        ERR_PRINTF1(_L("*** FAIL: Problem in configuration file ***"));
+        User::Leave(KErrNotFound);
+        }
+    //Create an new CryptoParams object to encapsulate the key type and secret key string
+    CCryptoParams* keyParams = CCryptoParams::NewLC();
+
+    /**
+     * Note that we are actually generating RSA keys in place 
+     * of ECC keys here. The reason for that is we do not have 
+     * a working ECC implementation. This test case just tests 
+     * if dummyecc signer is getting loaded. This is getting  
+     * tested since KEccSignerUid is being passed as input to  
+     * CreateSignerL. Keys have no significance in this test 
+     * case.
+     */
+    //Set the Key Parameters
+    keyParams->AddL(KKeyExponent, KRsaKeyParameterEUid);
+    keyParams->AddL(KRsaPrivateKeyStandard, KRsaKeyTypeUid);
+    
+    // Create a Key Pair Generator implementation
+    INFO_PRINTF1(_L("Creating Key Pair Generator...")); 
+    
+    CKeyPairGenerator * keypairImpl = NULL;
+    TRAPD_LOG(err,CKeyPairGeneratorFactory::CreateKeyPairGeneratorL(keypairImpl, 
+                                                        KRSAKeyPairGeneratorUid, 
+                                                        keyParams));
+    if(err != KErrNone)
+        {
+        ERR_PRINTF1(_L("*** FAIL: Failed to Create generator impl interface ***"));
+        CleanupStack::PopAndDestroy(keyParams);
+        return EFail;
+        }                             
+    CleanupStack::PushL(keypairImpl);
+                    
+    // Generate a Key Pair 
+    INFO_PRINTF1(_L("Generating Key Pair..."));
+    
+    CKeyPair* keyPair = NULL;
+    
+    TRAP_LOG(err,keypairImpl->GenerateKeyPairL(1024, 
+                                        *keyParams, 
+                                        keyPair));
+    if(err != KErrNone)
+        {
+        ERR_PRINTF1(_L("*** FAIL: Failed to Create key pair ***"));
+        CleanupStack::PopAndDestroy(keypairImpl);
+        CleanupStack::PopAndDestroy(keyParams);
+        return EFail;
+        }                                    
+    CleanupStack::PushL(keyPair);
+
+    // Creating Signer 1 with the necessary values from the ini	file
+    INFO_PRINTF1(_L("Constructing Signer 1 (No Padding)..."));
+    CSigner * impl = NULL;	
+    TRAP_LOG(err,CSignatureFactory::CreateSignerL(impl,
+                                           KEccSignerUid,
+                                           keyPair->PublicKey(),
+                                           KPaddingModeNoneUid,
+                                           keyParams));
+    
+    CleanupStack::PushL(impl);
+    
+    if(err == KErrNone)
+        {
+        // This is a basic test for load positivity
+        // from the Factory
+        INFO_PRINTF1(_L("PASS: Dummy ECC Signer - Positive Object Load"));
+        SetTestStepResult(EPass);
+        }
+    else
+        {
+        ERR_PRINTF2(_L("FAIL: Signer Object Construction Failure - %d"), err);
+        }
+    
+    CleanupStack::PopAndDestroy(impl);
+    CleanupStack::PopAndDestroy(keyPair);
+    CleanupStack::PopAndDestroy(keypairImpl);
+    CleanupStack::PopAndDestroy(keyParams);
+
+    INFO_PRINTF2(_L("HEAP CELLS: %d"), User::CountAllocCells());
+    return TestStepResult();
+	}
+
+
+
+TVerdict CDummyEccSignerLoadStep::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/crypto/weakcryptospi/test/tcryptospi/src/dummyeccsignerloadstep.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+
+/**
+ @file
+ @internalTechnology
+*/
+#if (!defined __DUMMYECCSIGNEROBJECTLOAD_STEP_H__)
+#define __DUMMYECCSIGNEROBJECTLOAD_STEP_H__
+#include <test/testexecutestepbase.h>
+#include "te_cryptospistepbase.h"
+
+class CDummyEccSignerLoadStep : public CTe_CryptoSpiStepBase
+	{
+public:
+	CDummyEccSignerLoadStep();
+	~CDummyEccSignerLoadStep();
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+
+private:
+	};
+
+_LIT(KDummyEccSignerLoadStep,"DummyEccSignerLoadStep");
+
+#endif
--- a/crypto/weakcryptospi/test/tcryptospi/src/keyexchangeasynchronousgeneralusagestep.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/tcryptospi/src/keyexchangeasynchronousgeneralusagestep.h	Mon Oct 12 10:17:04 2009 +0300
@@ -24,7 +24,7 @@
 */
 #if (!defined __KEYEXCHANGEASYNCHRONOUSGENERALUSAGE_STEP_H__)
 #define __KEYEXCHANGEASYNCHRONOUSGENERALUSAGE_STEP_H__
-#include <testexecutestepbase.h>
+#include <test/testexecutestepbase.h>
 #include "te_cryptospistepbase.h"
 
 class CKeyExchangeASynchronousGeneralUsageStep : public CTe_CryptoSpiStepBase
--- a/crypto/weakcryptospi/test/tcryptospi/src/te_cryptospiconversion.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/tcryptospi/src/te_cryptospiconversion.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -139,7 +139,11 @@
 	else if (*this==_L("KAlgorithmCipherAesXcbcPrf128")) return KAesXcbcPrf128Uid;
 	else if (*this==_L("KMacInterface")) return KMacInterfaceUid;
 	else if (*this==_L("KMacModeType")) return KMacModeTypeUid;
-#endif	
+#endif
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+    else if (*this==_L("KAlgorithmCipherEcc")) return KEccCipherUid;
+    else if (*this==_L("KAlgorithmSignerEcc")) return KEccSignerUid;
+#endif
 	else
 		{
 		User::Panic(*this,KErrNotFound);
--- a/crypto/weakcryptospi/test/tcryptospi/src/te_cryptospiserver.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/tcryptospi/src/te_cryptospiserver.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -105,6 +105,10 @@
 
 #include "ruleselectcommonstep.h"
 
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+#include "dummyecccipherloadstep.h"
+#include "dummyeccsignerloadstep.h"
+#endif
 //#include "pluginruleselectstep.h"
 
 _LIT(KServerName,"Te_CryptoSpi");
@@ -331,5 +335,12 @@
 	else if(aStepName == KRuleSelectCommonStep)
 		testStep = new CRuleSelectCommonStep();		
 
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+    else if(aStepName == KDummyEccCipherLoadStep)
+        testStep = new CDummyEccCipherLoadStep();
+	else if(aStepName == KDummyEccSignerLoadStep)
+	        testStep = new CDummyEccSignerLoadStep();
+#endif
+	
 	return testStep;
 	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/crypto/weakcryptospi/test/tcryptospi/testdata/dummyeccciphertestcases.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,6 @@
+[Cipher0001]
+AlgorithmUid			=KAlgorithmCipherEcc
+PaddingMode			=KPaddingModeNone
+
+[Signer0001]
+Key					="dummy"
\ No newline at end of file
--- a/crypto/weakcryptospi/test/tpadding/tpaddingNone.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/tpadding/tpaddingNone.h	Mon Oct 12 10:17:04 2009 +0300
@@ -19,7 +19,7 @@
 #ifndef _TPADDINGNONE_H_
 #define _TPADDINGNONE_H_
 
-#include <testexecutestepbase.h>
+#include <test/testexecutestepbase.h>
 #include "tpaddingTestSteps.h"
 
 _LIT(KPadNone, "PadNone");
--- a/crypto/weakcryptospi/test/tpadding/tpaddingPKCS1.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/tpadding/tpaddingPKCS1.h	Mon Oct 12 10:17:04 2009 +0300
@@ -19,7 +19,7 @@
 #ifndef _TPADDINGPKCS1_H_
 #define _TPADDINGPKCS1_H_
 
-#include <testexecutestepbase.h>
+#include <test/testexecutestepbase.h>
 #include "tpaddingTestSteps.h"
 
 _LIT(KPadPKCS1, "PadPKCS1");
--- a/crypto/weakcryptospi/test/tpadding/tpaddingPKCS7.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/tpadding/tpaddingPKCS7.h	Mon Oct 12 10:17:04 2009 +0300
@@ -23,7 +23,7 @@
 #include <e32cmn.h>
 
 
-#include <testexecutestepbase.h>
+#include <test/testexecutestepbase.h>
 #include "tpaddingTestSteps.h"
 
 _LIT(KPadPKCS7, "PadPKCS7");
--- a/crypto/weakcryptospi/test/tpadding/tpaddingSSLv3.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/tpadding/tpaddingSSLv3.h	Mon Oct 12 10:17:04 2009 +0300
@@ -19,7 +19,7 @@
 #ifndef _TPADDINGSSLV3_H_
 #define _TPADDINGSSLV3_H_
 
-#include <testexecutestepbase.h>
+#include <test/testexecutestepbase.h>
 #include "tpaddingTestSteps.h"
 
 _LIT(KPadSSLv3, "PadSSLv3");
--- a/crypto/weakcryptospi/test/tpadding/tpaddingServer.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/tpadding/tpaddingServer.h	Mon Oct 12 10:17:04 2009 +0300
@@ -19,7 +19,7 @@
 
 #if (!defined __PADDING_SERVER_H__)
 #define __PADDING_SERVER_H__
-#include <testexecuteserverbase.h>
+#include <test/testexecuteserverbase.h>
 
 class CPaddingServer : public CTestServer
 {
--- a/crypto/weakcryptospi/test/tpadding/tpaddingTestSteps.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/tpadding/tpaddingTestSteps.h	Mon Oct 12 10:17:04 2009 +0300
@@ -19,7 +19,7 @@
 #ifndef _TPADDINGTESTSTEPS_H_
 #define _TPADDINGTESTSTEPS_H_
 
-#include <testexecutestepbase.h>
+#include <test/testexecutestepbase.h>
 
 // Base class for all padding tests.
 class CPaddingStep : public CTestStep
--- a/crypto/weakcryptospi/test/tplugins/group/tplugin01.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/tplugins/group/tplugin01.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -41,7 +41,7 @@
 USERINCLUDE 	../../../inc
 USERINCLUDE 	../../../inc/spi
 
-SYSTEMINCLUDE	/epoc32/include 
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 SOURCEPATH	../src/tplugin01
 SOURCE		pluginentry.cpp softwarehashbase.cpp rsakeypairgenextendimpl.cpp
--- a/crypto/weakcryptospi/test/tplugins/group/tplugin02.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/tplugins/group/tplugin02.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -41,7 +41,7 @@
 USERINCLUDE 	../../../inc
 USERINCLUDE 	../../../inc/spi
 
-SYSTEMINCLUDE	/epoc32/include 
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 SOURCEPATH	../src/tplugin02
 SOURCE		pluginentry.cpp softwarehashbase.cpp desextendimpl.cpp
--- a/crypto/weakcryptospi/test/trandom/t_random.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/trandom/t_random.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -27,7 +27,8 @@
 SOURCE        t_random.cpp
 
 USERINCLUDE ../inc ../random
-SYSTEMINCLUDE /epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+
 LIBRARY       euser.lib 
 LIBRARY       efsrv.lib random.lib
 
--- a/crypto/weakcryptospi/test/tsymmetric/tperformancetest.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/crypto/weakcryptospi/test/tsymmetric/tperformancetest.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -18,7 +18,7 @@
 
 #include "tperformancetest.h"
 #include "symmetric.h"
-#include <testhandler2/t_output.h>
+#include "t_output.h"
 
 #ifndef _FOO
 _LIT(KPerfEFormat, "\tPerformance(encryption)\t%f");
--- a/cryptomgmtlibs/cryptotokenfw/group/CTFramework.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/cryptotokenfw/group/CTFramework.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -36,6 +36,8 @@
 
 DEFFILE			CTFRAMEWORK_V2.def
 USERINCLUDE 	../inc/ct
+USERINCLUDE 	../inc
+
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 SOURCEPATH		../source/ctframework
--- a/cryptomgmtlibs/cryptotokenfw/inc_interfaces/MCTKeyStore_v2.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/cryptotokenfw/inc_interfaces/MCTKeyStore_v2.h	Mon Oct 12 10:17:04 2009 +0300
@@ -75,7 +75,10 @@
 		EInvalidAlgorithm	= 0,
 		ERSA				= 1,
 		EDSA				= 2,
-		EDH					= 3
+		EDH					= 3,
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		EECC                = 4,
+#endif
 		};
 
 	/** Flags for key access bitfield. */
--- a/cryptomgmtlibs/cryptotokenfw/inc_interfaces/mkeystore_v2.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/cryptotokenfw/inc_interfaces/mkeystore_v2.h	Mon Oct 12 10:17:04 2009 +0300
@@ -37,6 +37,15 @@
 class CCTKeyInfo;
 struct TCTKeyAttributeFilter;
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+namespace CryptoSpi
+    {
+    class CSigner;
+    class CAsymmetricCipher;
+    class CCryptoParams;
+    }
+#endif /* SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT */
+
 /**
  * A template for signer objects.  It isn't possible to use a base class as the
  * signature objects created are not related.
@@ -382,6 +391,163 @@
 	/** Cancels an ongoing ExportPublic() operation */
 	virtual void CancelExportPublic() = 0;
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    /**
+     * Opens a key for signing. This function returns a CryptoSPI
+     * signer object. SignL() method should be invoked on this object
+     * to perform the signing operation.
+     *
+     * @param aHandle The handle of the key to be opened.
+     * @param aSigner The returned CryptoSPI signer object.
+     * @param aStatus Returns the status of asynchronous operation, 
+     * possible values of which are given below:-
+     * KErrNone if successful, otherwise a system wide error 
+     * code (in such a case signer object is not allocated). The 
+     * most likely error codes are:-
+     * - KErrNotSupported Default value, used if licensee does not
+     * provide an implementation.
+     * - KErrPermissionDenied If the caller does not conform to
+     * the key use security policy.
+     * - KErrNotFound If the key the handle referes to does not
+     * exist.
+     * - KErrKeyUsage If the key doesn't have sign usage.
+     * - KErrKeyValidity If the key is not currently valid.
+     * - KErrKeySize If the key length is too small.
+     * - KErrKeyAccess If an invalid combination of key access
+     * flags were specified.
+     * 
+     * @capability Requires the caller to have the capabilities
+     * specified in the key use security policy.
+     */
+	virtual void Open(const TCTTokenObjectHandle& /*aHandle*/,
+	                  CryptoSpi::CSigner*& /*aSigner*/,
+	                  TRequestStatus& aStatus)
+		{
+		TRequestStatus* status = &aStatus;
+		User::RequestComplete(status,KErrNotSupported);
+		}
+
+    /**
+     * Opens a key for decryption. This function returns a CryptoSPI
+     * signer object. ProcessL() method should be invoked on this object
+     * to perform the decryption operation.
+     *
+     * @param aHandle The handle of the key to be opened.
+     * @param aAsymmetricCipher The returned CryptoSPI cipher object.
+     * @param aStatus Returns the status of asynchronous operation,
+     * possible values of which are given below:-
+     * KErrNone if successful, otherwise a system wide error 
+     * code (in such a case cipher object is not allocated). The 
+     * most likely error codes are:-
+     * - KErrNotSupported Default value, used if licensee does not
+     * provide an implementation.
+     * - KErrPermissionDenied If the caller does not conform to
+     * the key use security policy.
+     * - KErrNotFound If the key the handle referes to does not
+     * exist.
+     * - KErrKeyUsage If the key doesn't have sign usage.
+     * - KErrKeyValidity If the key is not currently valid.
+     * - KErrKeySize If the key length is too small.
+     * - KErrKeyAccess If an invalid combination of key access
+     * flags were specified.
+     *
+     * @capability Requires the caller to have the capabilities
+     * specified in the key use security policy.
+     */
+	virtual void Open(const TCTTokenObjectHandle& /*aHandle*/,
+	                  CryptoSpi::CAsymmetricCipher*& /*aAsymmetricCipher*/,
+	                  TRequestStatus& aStatus)
+		{
+		TRequestStatus* status = &aStatus;
+		User::RequestComplete(status,KErrNotSupported);
+		}
+
+	/**
+	 * This function takes a token handle and encrypted text as input
+	 * and stores the decrypted text as one of the output parameters.
+	 * This API would should be used by the licensees who want to perform
+	 * decryption operation inside the hardware without using CryptoSPI.
+	 *
+	 * @param aHandle The handle of the key to be used for decryption.
+     * @param aCiphertext Contains the encrypted text which has to be
+     * decrypted.
+     * @param aPlaintextPtr This contains the decrypted text. Caller
+     * should take responsibility of this pointer. Derived classes 
+     * should never take ownership of the passed pointer.
+     * @param aStatus Returns the status of asynchronous operation,
+     * possible values are given below:-
+     * KErrNone if successful, otherwise a system wide error 
+     * code (in such a case aPlaintextPtr is not allocated). The 
+     * most likely error codes are:-
+     * - KErrNotSupported Default value, used if licensee does not
+     * provide an implementation.
+     * - KErrPermissionDenied If the caller does not conform to
+     * the key use security policy.
+     * - KErrNotFound If the key the handle referes to does not
+     * exist.
+     * - KErrKeyUsage If the key doesn't have sign usage.
+     * - KErrKeyValidity If the key is not currently valid.
+     * - KErrKeySize If the key length is too small.
+     * - KErrKeyAccess If an invalid combination of key access
+     * flags were specified.
+     * 
+     * @capability Requires the caller to have the capabilities
+     * specified in the key use security policy.
+     */
+	virtual void Decrypt(const TCTTokenObjectHandle& /*aHandle*/,
+                         const TDesC8& /*aCiphertext*/,
+	                     HBufC8*& /*aPlaintextPtr*/,
+	                     TRequestStatus& aStatus)
+		{
+		TRequestStatus* status = &aStatus;
+		User::RequestComplete(status,KErrNotSupported);
+		}
+
+	/**
+	 * This function takes a token handle and plain text as input and
+	 * returns the signature as one of the output parameters. This API
+	 * would enable the licensees to sign a text by just having a handle
+	 * to key. The key can be stored in the hardware and does not come
+	 * out at all. This API should be used by the licensees who want to
+	 * perform signing operation inside the hardware without using
+	 * CryptoSPI.
+	 *
+	 * @param aHandle The handle of the key to be used for decryption.
+	 * @param aPlainText Text which has to be signed.
+	 * @param aSignature The cryptoSPI signature. Caller
+	 * should take responsibility of this pointer. Derived classes 
+     * should never take ownership of the passed pointer.
+	 * @param aStatus Returns the status of asynchronous operation,
+	 * possible values are:-
+	 * KErrNone if successful, otherwise a system wide error 
+     * code (in such a case aSignature is not allocated). The 
+     * most likely error codes are:-
+     * - KErrNotSupported Default value, used if licensee does not
+     * provide an implementation.
+     * - KErrPermissionDenied If the caller does not conform to
+     * the key use security policy.
+     * - KErrNotFound If the key the handle referes to does not
+     * exist.
+     * - KErrKeyUsage If the key doesn't have sign usage.
+     * - KErrKeyValidity If the key is not currently valid.
+     * - KErrKeySize If the key length is too small.
+     * - KErrKeyAccess If an invalid combination of key access
+     * flags were specified.
+     * 
+	 * @capability Requires the caller to have the capabilities
+	 * specified in the key use security policy.
+	 */
+	virtual void Sign(	const TCTTokenObjectHandle& /*aHandle*/,
+                        const TDesC8& /*aPlainText*/,
+	                    CryptoSpi::CCryptoParams*& /*aSignature*/,
+	                    TRequestStatus& aStatus)
+		{
+		TRequestStatus* status = &aStatus;
+		User::RequestComplete(status,KErrNotSupported);
+		}
+	
+#endif /* SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT */
+
 	};
 
 
--- a/cryptomgmtlibs/cryptotokenfw/source/ctframework/CTLogger.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/cryptotokenfw/source/ctframework/CTLogger.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -16,7 +16,7 @@
 */
 
 
-#include <ct/logger.h>
+#include "ct/logger.h"
 #include <f32file.h>
 
 #if defined(_DEBUG) && defined(__CT_LOGGING__)
--- a/cryptomgmtlibs/cryptotokenfw/tframework/TestPlugin.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/cryptotokenfw/tframework/TestPlugin.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -32,7 +32,7 @@
 SOURCEPATH	.
 SOURCE	TestPlugin.cpp
 
-SYSTEMINCLUDE 	/epoc32/include /epoc32/include/ecom
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 START RESOURCE	101F4E4E.rss
 TARGET testplugin.rsc
--- a/cryptomgmtlibs/cryptotokenfw/tframework/t_ctframework.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/cryptotokenfw/tframework/t_ctframework.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -29,7 +29,7 @@
 SOURCEPATH	.              
 SOURCE        t_ctframework.cpp
 
-SYSTEMINCLUDE /epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 LIBRARY       euser.lib 
 LIBRARY       efsrv.lib ctframework.lib 
 LIBRARY ctfinder.lib
--- a/cryptomgmtlibs/cryptotokenfw/tsecdlg/Tsecdlg.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/cryptotokenfw/tsecdlg/Tsecdlg.h	Mon Oct 12 10:17:04 2009 +0300
@@ -39,7 +39,7 @@
 #else
 
 #include <eiknotapi.h>
-#include <implementationproxy.h>
+#include <ecom/implementationproxy.h>
 #define MNotifierBase2 MEikSrvNotifierBase2
 
 IMPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount);
--- a/cryptomgmtlibs/cryptotokenfw/tsecdlg/t_secdlg.mmh	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/cryptotokenfw/tsecdlg/t_secdlg.mmh	Mon Oct 12 10:17:04 2009 +0300
@@ -46,7 +46,8 @@
 
 SOURCEPATH	    .
 
-systeminclude   /epoc32/include/techview	/epoc32/include	/epoc32/include/ecom
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 source			Tsecdlg.cpp
 
--- a/cryptomgmtlibs/securitycommonutils/group/bld.inf	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitycommonutils/group/bld.inf	Mon Oct 12 10:17:04 2009 +0300
@@ -43,15 +43,12 @@
 ../inc/streamingarray.inl	SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(scs/streamingarray.inl)
 ../inc/cleanuputils.h		SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(scs/cleanuputils.h)
 ../inc/cleanuputils.inl		SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(scs/cleanuputils.inl)
+// Security Utils
+../inc/securityutils.h 		SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(scs/securityutils.h)
 
 ../inc/scs.iby				/epoc32/rom/include/scs.iby
 ../inc/securitycommonutils.iby				/epoc32/rom/include/securitycommonutils.iby
 
-// Security Utils
-#ifdef SYMBIAN_OLD_EXPORT_LOCATION
-../inc/securityutils.h 		/epoc32/include/scs/securityutils.h	
-#endif
-
 // Common Log file
 ../inc/securitylog.h		SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(scs/securitylog.h)
 
--- a/cryptomgmtlibs/securitycommonutils/inc/securityutils.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitycommonutils/inc/securityutils.h	Mon Oct 12 10:17:04 2009 +0300
@@ -18,8 +18,9 @@
 
 
 /**
- @file
- @internalTechnology
+ @file 
+ @publishedPartner
+ @prototype
 */
 
 #ifndef SECURITYUTILS_H
--- a/cryptomgmtlibs/securitycommonutils/test/group/scstest.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitycommonutils/test/group/scstest.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -22,8 +22,9 @@
 
 uid				0x0 0x10283513
 
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 userinclude ../inc_private
+userinclude ../../../securitytestfw/inc/
 
 sourcepath		../source/scstest
 source			scstest.cpp
--- a/cryptomgmtlibs/securitycommonutils/test/group/scstestclient.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitycommonutils/test/group/scstestclient.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -21,7 +21,7 @@
 
 uid					0x0 0x10283511
 
-systeminclude		/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 userinclude			../inc_private
 
--- a/cryptomgmtlibs/securitycommonutils/test/group/scstestserver.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitycommonutils/test/group/scstestserver.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -21,8 +21,7 @@
 
 uid					0x0 0x10283512
 
-systeminclude		/epoc32/include
-
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 userinclude			../inc_private
 
--- a/cryptomgmtlibs/securitycommonutils/test/source/scstest/scstest.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitycommonutils/test/source/scstest/scstest.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -24,7 +24,7 @@
 
 #include <e32ldr.h>
 #include <f32file.h>
-#include <scs/rtestwrapper.h>
+#include "rtestwrapper.h"
 
 #include <scs/scscommon.h>
 #include "scstestcommon.h"
--- a/cryptomgmtlibs/securitytestfw/group/bld.inf	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/group/bld.inf	Mon Oct 12 10:17:04 2009 +0300
@@ -36,12 +36,6 @@
 #ifdef SYMBIAN_OLD_EXPORT_LOCATION
 ../inc/rtestwrapper.h /epoc32/include/scs/rtestwrapper.h
 #endif
-#ifdef SYMBIAN_OLD_EXPORT_LOCATION
-../inc/captestframework.h /epoc32/include/captestframework/captestframework.h
-#endif
-#ifdef SYMBIAN_OLD_EXPORT_LOCATION
-../inc/captestutility.h /epoc32/include/captestframework/captestutility.h
-#endif
 ../inc/securitytestframework.iby	/epoc32/rom/include/securitytestframework.iby
 
 // configuration file for the CommsDB set up
@@ -96,6 +90,10 @@
 	../test/autotesting/testsecurityonlyjava.bat /epoc32/winscw/c/autohardware/testsecurityonlyjava.bat
 #endif
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+	../test/autotesting/runcrypto_wmdrm.bat /epoc32/winscw/c/autohardware/runcrypto_wmdrm.bat
+	../test/autotesting/runfiletokens_disableauth_with_wmdrm.bat /epoc32/winscw/c/autohardware/runfiletokens_disableauth_with_wmdrm.bat
+#endif
 #ifdef SYMBIAN_CRYPTOSPI
 	../test/autotesting/runcrypto_9.5.bat /epoc32/winscw/c/autohardware/runcrypto_9.5.bat
 #else
@@ -128,6 +126,11 @@
 
 ../test/autotesting/runcaftests_9.5.bat /epoc32/winscw/c/autohardware/runcaftests_9.5.bat
 ../test/autotesting/runcaftests_9.6.bat /epoc32/winscw/c/autohardware/runcaftests_9.6.bat
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+../test/autotesting/runcaftests_wmdrm.bat /epoc32/winscw/c/autohardware/runcaftests_wmdrm.bat
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 ../test/autotesting/autoexec.bat /epoc32/winscw/c/autohardware/autoexec.bat
 
 // ROMKIT includes
--- a/cryptomgmtlibs/securitytestfw/group/captestframework.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/group/captestframework.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -36,9 +36,9 @@
 SOURCE			captestframeworkstep.cpp
 
 USERINCLUDE		.
-USERINCLUDE		../inc_private
-SYSTEMINCLUDE	/epoc32/include
-SYSTEMINCLUDE	/epoc32/include/test
+USERINCLUDE		../inc
+
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY			euser.lib
 LIBRARY			testexecuteutils.lib
--- a/cryptomgmtlibs/securitytestfw/group/captestframeworkhelper.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/group/captestframeworkhelper.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -35,10 +35,9 @@
 SOURCE			captestframeworkhelper.cpp
 
 USERINCLUDE		.
-USERINCLUDE		../inc_private
+USERINCLUDE		../inc
 
-SYSTEMINCLUDE	/epoc32/include
-SYSTEMINCLUDE	/epoc32/include/test
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY			euser.lib
 LIBRARY			testexecuteutils.lib
--- a/cryptomgmtlibs/securitytestfw/group/captestframeworkutil.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/group/captestframeworkutil.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -34,9 +34,9 @@
 SOURCE			captestutility.cpp
 
 USERINCLUDE		.
-USERINCLUDE		../inc_private
-SYSTEMINCLUDE	/epoc32/include
-SYSTEMINCLUDE	/epoc32/include/test
+USERINCLUDE		../inc
+
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY			euser.lib
 LIBRARY			efsrv.lib
--- a/cryptomgmtlibs/securitytestfw/group/rtestwrapper.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/group/rtestwrapper.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -22,7 +22,8 @@
 uid				0x0 0x0
 capability		ALL -Tcb
 
-systeminclude	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+USERINCLUDE ../inc
 
 sourcepath		../test/rtestwrapper
 source			rtestwrapper.cpp
--- a/cryptomgmtlibs/securitytestfw/group/sntpclient.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/group/sntpclient.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -26,7 +26,7 @@
 SOURCE	      util.cpp
 
 USERINCLUDE  ../test/sntpclient 
-SYSTEMINCLUDE /epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 CAPABILITY WriteDeviceData NetworkServices
 
--- a/cryptomgmtlibs/securitytestfw/group/t_testhandler2.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/group/t_testhandler2.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -30,8 +30,9 @@
 // Different def file because no TCapabilitySet on EKA1
 DEFFILE t_testhandler2_sss.def
 
-USERINCLUDE ../test/testhandler2 ../inc
-SYSTEMINCLUDE /epoc32/include
+USERINCLUDE ../test/testhandler2
+USERINCLUDE ../inc
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 #ifdef SYMBIAN_AUTH_SERVER
 SYSTEMINCLUDE /epoc32/include/authserver
--- a/cryptomgmtlibs/securitytestfw/group/t_testhandler2extra.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/group/t_testhandler2extra.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -28,8 +28,9 @@
 VENDORID 0x70000001
 
 USERINCLUDE ../test/testhandler2extra
-SYSTEMINCLUDE /epoc32/include
-SYSTEMINCLUDE /epoc32/include/testhandler2
+USERINCLUDE ../test/testhandler2
+
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 SOURCEPATH	../test/testhandler2extra
 
--- a/cryptomgmtlibs/securitytestfw/group/testhandler_on_testexecute.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/group/testhandler_on_testexecute.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -34,8 +34,10 @@
 SOURCE		server.cpp
 SOURCE		step.cpp	
 
-USERINCLUDE   	../test/testhandler_on_testexecute ../inc
-SYSTEMINCLUDE 	/epoc32/include /epoc32/include/test
+USERINCLUDE   	../test/testhandler_on_testexecute 
+USERINCLUDE   	../test/testhandler2
+USERINCLUDE   	../inc
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY    	euser.lib
 LIBRARY		testexecuteutils.lib
--- a/cryptomgmtlibs/securitytestfw/inc/SecurityTests.iby	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/inc/SecurityTests.iby	Mon Oct 12 10:17:04 2009 +0300
@@ -52,6 +52,11 @@
 #include "securitytestframework.iby"		
 
 #include "streamingcaf.iby"
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+#include "mtputils.iby"
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 	//Universal Software Install Framework production
 	#include "scr.iby" // Software Component Registry
@@ -93,7 +98,10 @@
 		file=ABI_DIR\BUILD_DIR\pkcs7.dll	System\Libs\pkcs7.dll
 
 		#include "tscaf.iby"
- 
+
+		#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		#include "mtputilstest.iby"
+ 		#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 
 		#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
 			//Universal Software Install Framework tests
@@ -216,7 +224,12 @@
 		data = ZDRIVE\autohardware\runpkcs12tests_9.4.bat		\runpkcs12tests.bat
 
 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		data = ZDRIVE\autohardware\runcaftests_wmdrm.bat		\runcaftests.bat
+#else
 		data = ZDRIVE\autohardware\runcaftests_9.6.bat		\runcaftests.bat
+#endif
+
 #else
 		data = ZDRIVE\autohardware\runcaftests_9.5.bat		\runcaftests.bat
 #endif
--- a/cryptomgmtlibs/securitytestfw/inc/SecurityTests_sdp_9.5.iby	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/inc/SecurityTests_sdp_9.5.iby	Mon Oct 12 10:17:04 2009 +0300
@@ -70,6 +70,12 @@
 	#include "randomtests.iby"
 	#include "hashtests.iby"
 
+	#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+	#include "mtputils.iby"
+	#include "mtputilstest.iby"
+	#include "refcafhelper.iby"
+	#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 #endif
  
 	
@@ -113,17 +119,28 @@
 data = ZDRIVE\autohardware\runpkcs12tests_9.4.bat		\runpkcs12tests.bat
 
 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+	data = ZDRIVE\autohardware\runcaftests_wmdrm.bat		\runcaftests.bat
+#else
 	data = ZDRIVE\autohardware\runcaftests_9.6.bat		\runcaftests.bat
+#endif
+
 #else
 	data = ZDRIVE\autohardware\runcaftests_9.5.bat		\runcaftests.bat
 #endif
 
 #ifdef SYMBIAN_CRYPTOSPI
-	data = ZDRIVE\autohardware\runcrypto_9.5.bat	               	\runcrypto.bat
+	#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		data = ZDRIVE\autohardware\runcrypto_wmdrm.bat	               	\runcrypto.bat
+	#else
+		data = ZDRIVE\autohardware\runcrypto_9.5.bat	               	\runcrypto.bat
+	#endif
 #else
 	data = ZDRIVE\autohardware\runcrypto_9.4.bat	               	\runcrypto.bat
 #endif
 
+
+
 data = ZDRIVE\autohardware\testsecurityperformance_cryptalg.bat	\testsecurityperformance_cryptalg.bat
 data = ZDRIVE\autohardware\testsecurityperformance_crypto.bat	\testsecurityperformance_crypto.bat
 
@@ -136,7 +153,11 @@
 #ifdef SYMBIAN_KEYSTORE_USE_AUTH_SERVER
 	data = ZDRIVE\autohardware\runfiletokens_useauth.bat		\runfiletokens.bat
 #else
-	data = ZDRIVE\autohardware\runfiletokens_disableauth.bat		\runfiletokens.bat
+	#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+		data = ZDRIVE\autohardware\runfiletokens_disableauth_with_wmdrm.bat		\runfiletokens.bat
+	#else
+		data = ZDRIVE\autohardware\runfiletokens_disableauth.bat		\runfiletokens.bat
+	#endif
 #endif // SYMBIAN_KEYSTORE_USE_AUTH_SERVER
 #else
 	data = ZDRIVE\autohardware\runfiletokens_9.4.bat		\runfiletokens.bat
--- a/cryptomgmtlibs/securitytestfw/inc/captestframework.h	Fri Oct 02 13:15:59 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/*
-* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
-
-
-
-
-/**
- @file
-*/
-
-#ifndef CAPTESTFRAMEWORK_H__
-#define CAPTESTFRAMEWORK_H__
-
-// Used to transfer data to the helper
-const TInt KDllNameTransferSlot=5;
-const TInt KShouldPassTransferSlot=6;
-const TInt KTestNumberTransferSlot=7;
-const TInt KLogFileTransferSlot=8;
-const TInt KFileSessionTransferSlot=9;
-const TInt KLogFileNameTransferSlot=10;
-
-
-// markers for the file used to transfer the results
-
-enum TFileMarker
-	{
-	ETestPassed,
-	ETestFailed,
-	ETestsEnded,
-	EFileEnd,
-	};
-
-
-class RFile;
-
-// classes to be implemented by the actaul test dll.
-class MCapabilityTest
-	{
-public:
-	virtual const TDesC& Name() const=0;
-	virtual const TDesC& SubName() const=0;
-	
-	virtual TCapabilitySet CapabilitiesRequired() const=0;
-	virtual TUid VidRequired() const=0;
-	virtual TUid SidRequired() const=0;
-
-	virtual void RunTestL(RFile& aLogFile)=0;
-	virtual void SetExpectPermissionDenied(TBool aExpectPermissionDenied)=0;
-	virtual ~MCapabilityTest() {};
-	};
-
-class MCapabilityTestFactory
-	{
-public:
-	virtual TInt NumberOfTests()=0;
-	virtual MCapabilityTest* Test(TInt aTestNumber)=0;
-	virtual ~MCapabilityTestFactory() {};
-	};
-
-
-
-
-#endif // #ifndef CAPTESTFRAMEWORK_H__
--- a/cryptomgmtlibs/securitytestfw/inc/captestutility.h	Fri Oct 02 13:15:59 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
-* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-* Implements default base classes for captestframework
-*
-*/
-
-
-
-
-/**
- @file
-*/
-
-#ifndef CAPTESTUTILITY_H__
-#define CAPTESTUTILITY_H__
-
-#include <e32base.h>
-#include <s32file.h> 
-#include <captestframework/captestframework.h>
-
-// CDefaultCapabilityTest
-class CDefaultCapabilityTest : public CBase, public MCapabilityTest
-	{
-public:
-	IMPORT_C const TDesC& Name() const;
-	IMPORT_C const TDesC& SubName() const;
-	
-	IMPORT_C TCapabilitySet CapabilitiesRequired() const;
-	IMPORT_C TUid VidRequired() const;
-	IMPORT_C TUid SidRequired() const;
-
-	IMPORT_C ~CDefaultCapabilityTest();
-	
-protected:
-	IMPORT_C void SetNameL(const TDesC& aName);	
-	void SetExpectPermissionDenied(TBool aExpectPermissionDenied = ETrue);	
-
-	IMPORT_C void SetCapabilityRequired(const TCapability& aCapability);
-	IMPORT_C void SetSidRequired(const TUid& aSid);
-	IMPORT_C void SetVidRequired(const TUid& aVid);
-	
-	IMPORT_C TInt CheckFailL(TInt aResult, const TDesC& aTestName);
-	IMPORT_C void RunTestL(RFile& aLogFile);
-
-	void SetFail() { iFail = ETrue;}
-	virtual void RunTestL() =0;
-private:
-	HBufC* iTestName;
-	HBufC* iTestSubName;
-	
-	RFile* iLogFile;
-	RFileWriteStream* iLogWriteStream;
-	TBool iExpectPermissionDenied;
-	TCapabilitySet iCapabilitySet;
-	TUid iVidRequired;
-	TUid iSidRequired;	
-	TBool iFail;
-	};
-
-// CDefaultCapabilityTestFactory
-class CDefaultCapabilityTestFactory : public CBase, public MCapabilityTestFactory
-
-	{
-public:
-	IMPORT_C virtual TInt NumberOfTests();
-	IMPORT_C virtual MCapabilityTest* Test(TInt aTestNumber);
-	
-	IMPORT_C void AddTestL(CDefaultCapabilityTest* aTest);
-
-	IMPORT_C ~CDefaultCapabilityTestFactory();
-	
-private:
-	RPointerArray<CDefaultCapabilityTest> iTests;
-	};
-
-// inline functions from CSwiCapabilityTest
-
-inline void CDefaultCapabilityTest::SetExpectPermissionDenied(TBool aExpectPermissionDenied)
-	{
-	iExpectPermissionDenied = aExpectPermissionDenied;
-	}
-
-#endif //#ifndef CAPTESTUTILITY_H__
--- a/cryptomgmtlibs/securitytestfw/test/autotesting/newdigest.pl	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/autotesting/newdigest.pl	Mon Oct 12 10:17:04 2009 +0300
@@ -65,10 +65,33 @@
 			parseLog($entry, \$failed, \$passed);
 			#printf SUMMARY (" %45s: %d tests failed out of %d\r\n", $entry, $failed, $failed+$passed);			
 		}
-		elsif ($entry =~ /\.htm/) 
-		{
-			parseHtm($entry, \$failed, \$passed, \$ntestcasefailed, \$ntestcasepassed);
-			#printf SUMMARY (" %45s: %d tests failed out of %d\r\n", $entry, $ntestcasefailed, $ntestcasepassed+$ntestcasefailed);
+                
+ 		elsif ($entry =~ /\.htm/) 
+ 		{
+		    open (HTML_LOG, "$entry" ) or die("open failed");
+            my $Is_Tef_Htm = 1; 
+
+            while(<HTML_LOG>)
+		    {
+			chomp;
+	
+			my $line  = $_;
+			$line =~ s/\x0//g;
+
+			if ($line =~ /tests failed/)
+			{
+              parseLog($entry, \$failed, \$passed);
+ 			  #printf SUMMARY (" %45s: %d tests failed out of %d\r\n", $entry, $failed, $failed+$passed);			
+              $Is_Tef_Htm = 0;
+            }
+
+            }
+
+	 	    close HTML_LOG;                    
+	        if( $Is_Tef_Htm )
+            {
+	 	      parseHtm($entry, \$failed, \$passed, \$ntestcasefailed, \$ntestcasepassed);
+            }        
 		}
 		if ( $passed > 0 or $failed > 0)
 		{
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptomgmtlibs/securitytestfw/test/autotesting/runcaftests_wmdrm.bat	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,66 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+
+md c:\tcaf
+copy /s z:\tcaf\* c:\tcaf
+testexecute c:\tcaf\tcaf.script
+move c:\logs\testexecute\tcaf.htm e:\testresults\tcaf.htm
+del c:\tcaf\*.*
+
+md c:\tcaf
+copy /s z:\tcaf\* c:\tcaf
+testexecute c:\tcaf\drmfileperformance_armv5.script
+move c:\logs\testexecute\drmfileperformance_armv5.htm e:\testresults\drmfileperformance_armv5.htm
+del c:\tcaf\*.*
+
+md c:\rta
+copy /s z:\rta\* c:\rta
+testexecute c:\rta\rta.script
+move c:\logs\testexecute\rta.htm e:\testresults\rta.htm
+del c:\rta\*.*
+
+md c:\tcaf
+md c:\tcaf\tscaf
+copy /s z:\tcaf\tscaf\* c:\tcaf\tscaf
+testexecute c:\tcaf\tscaf\tscaf.script
+move c:\logs\testexecute\tscaf.htm e:\testresults\tscaf.htm
+
+md c:\rta
+copy /s z:\rta\* c:\rta
+testexecute c:\rta\rta_64bit.script
+move c:\logs\testexecute\rta_64bit.htm e:\testresults\rta_64bit.htm
+del c:\rta\*.*
+
+md c:\tcaf
+copy /s z:\tcaf\* c:\tcaf
+testexecute c:\tcaf\consumerstep_64bit.script
+move c:\logs\testexecute\consumerstep_64bit.htm e:\testresults\consumerstep_64bit.htm
+
+md c:\tcaf
+copy /s z:\tcaf\* c:\tcaf
+testexecute c:\tcaf\tcafwmdrmsupport.script
+move c:\logs\testexecute\tcafwmdrmsupport.htm e:\testresults\tcafwmdrmsupport.htm
+
+md c:\tcaf
+md c:\tcaf\tmtputils
+copy /s z:\tcaf\tmtputils\* c:\tcaf\tmtputils
+testexecute c:\tcaf\tmtputils\tmtputils.script
+move c:\logs\testexecute\tmtputils.htm e:\testresults\tmtputils.htm
+
+md c:\tcaf
+copy /s z:\tcaf\* c:\tcaf
+testexecute c:\tcaf\tcafhelper.script
+move c:\logs\testexecute\tcafhelper.htm e:\testresults\tcafhelper.htm
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptomgmtlibs/securitytestfw/test/autotesting/runcrypto_wmdrm.bat	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,156 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+temb
+move c:\temblog.txt c:\testresults\
+move c:\testresults\temblog.txt e:\testresults\temblog.txt
+
+REM hash
+copy /s z:\thash\ c:\thash\
+thash
+move c:\hashlog.txt c:\testresults\
+move c:\testresults\hashlog.txt e:\testresults\hashlog.txt
+del /s c:\thash\
+
+REM random
+t_random
+move c:\t_random.log c:\testresults\
+move c:\testresults\t_random.log e:\testresults\t_random.log
+
+REM padding - uses testexecute framework
+copy /s z:\tpadding\ c:\tpadding\
+testexecute c:\tpadding\tpadding.script
+move c:\logs\testexecute\tpadding.htm e:\testresults\tpadding.htm
+del /s c:\tpadding\
+
+REM new cryptospi tests
+copy /s z:\testdata\tcryptospi\ c:\testdata\tcryptospi\
+testexecute z:\testdata\tcryptospi\scripts\tcryptospi.script
+move c:\logs\testexecute\tcryptospi.htm e:\testresults\tcryptospi.htm
+
+testexecute z:\testdata\tcryptospi\scripts\te_dummyeccciphertestcases.script
+move c:\logs\testexecute\te_dummyeccciphertestcases.htm e:\testresults\te_dummyeccciphertestcases.htm
+
+del /s c:\testdata\tcryptospi\
+
+REM crypto, asymmetric
+
+REM tasymmetric z:\tasymmetric\asymmetricPerformance.txt c:\testresults\asymmetricPerformance.log
+
+tasymmetric z:\tasymmetric\tasymmetrictests.script c:\logs\testexecute\tasymmetrictests.htm
+move c:\logs\testexecute\tasymmetrictests.htm e:\testresults\tasymmetrictests.htm
+
+REM crypto, symmetric
+
+tsymmetric z:\tsymmetric\tsymmetrictests.script c:\logs\testexecute\tsymmetrictests.htm
+move c:\logs\testexecute\tsymmetrictests.htm e:\testresults\tsymmetrictests.htm
+
+tsymmetric z:\tsymmetric\AESECBVectorsScript.script c:\logs\testexecute\AESECBVectorsScript.htm
+move c:\logs\testexecute\AESECBVectorsScript.htm e:\testresults\AESECBVectorsScript.htm
+
+tsymmetric z:\tsymmetric\AESECB_KAT_VT.script c:\logs\testexecute\AESECB_KAT_VT.htm
+move c:\logs\testexecute\AESECB_KAT_VT.htm e:\testresults\AESECB_KAT_VT.htm
+
+tsymmetric z:\tsymmetric\AESECB_KAT_VK.script c:\logs\testexecute\AESECB_KAT_VK.htm
+move c:\logs\testexecute\AESECB_KAT_VK.htm e:\testresults\AESECB_KAT_VK.htm
+
+tsymmetric z:\tsymmetric\AESMonteCarloEncryptECB128.script c:\logs\testexecute\AESMonteCarloEncryptECB128.htm
+move c:\logs\testexecute\AESMonteCarloEncryptECB128.htm e:\testresults\AESMonteCarloEncryptECB128.htm
+
+tsymmetric z:\tsymmetric\AESMonteCarloEncryptECB192.script c:\logs\testexecute\AESMonteCarloEncryptECB192.htm
+move c:\logs\testexecute\AESMonteCarloEncryptECB192.htm e:\testresults\AESMonteCarloEncryptECB192.htm
+
+tsymmetric z:\tsymmetric\AESMonteCarloEncryptECB256.script c:\logs\testexecute\AESMonteCarloEncryptECB256.htm
+move c:\logs\testexecute\AESMonteCarloEncryptECB256.htm e:\testresults\AESMonteCarloEncryptECB256.htm
+
+tsymmetric z:\tsymmetric\AESMonteCarloDecryptECB128.script c:\logs\testexecute\AESMonteCarloDecryptECB128.htm
+move c:\logs\testexecute\AESMonteCarloDecryptECB128.htm e:\testresults\AESMonteCarloDecryptECB128.htm
+
+tsymmetric z:\tsymmetric\AESMonteCarloDecryptECB192.script c:\logs\testexecute\AESMonteCarloDecryptECB192.htm
+move c:\logs\testexecute\AESMonteCarloDecryptECB192.htm e:\testresults\AESMonteCarloDecryptECB192.htm
+
+tsymmetric z:\tsymmetric\AESMonteCarloDecryptECB256.script c:\logs\testexecute\AESMonteCarloDecryptECB256.htm
+move c:\logs\testexecute\AESMonteCarloDecryptECB256.htm e:\testresults\AESMonteCarloDecryptECB256.htm
+
+tsymmetric z:\tsymmetric\AESMonteCarloEncryptCBC128.script c:\logs\testexecute\AESMonteCarloEncryptCBC128.htm
+move c:\logs\testexecute\AESMonteCarloEncryptCBC128.htm e:\testresults\AESMonteCarloEncryptCBC128.htm
+
+tsymmetric z:\tsymmetric\AESMonteCarloEncryptCBC192A.script c:\logs\testexecute\AESMonteCarloEncryptCBC192A.htm
+move c:\logs\testexecute\AESMonteCarloEncryptCBC192A.htm e:\testresults\AESMonteCarloEncryptCBC192A.htm
+
+tsymmetric z:\tsymmetric\AESMonteCarloEncryptCBC192B.script c:\logs\testexecute\AESMonteCarloEncryptCBC192B.htm
+move c:\logs\testexecute\AESMonteCarloEncryptCBC192B.htm e:\testresults\AESMonteCarloEncryptCBC192B.htm
+
+tsymmetric z:\tsymmetric\AESMonteCarloEncryptCBC256.script c:\logs\testexecute\AESMonteCarloEncryptCBC256.htm
+move c:\logs\testexecute\AESMonteCarloEncryptCBC256.htm e:\testresults\AESMonteCarloEncryptCBC256.htm
+
+tsymmetric z:\tsymmetric\AESMonteCarloDecryptCBC128.script c:\logs\testexecute\AESMonteCarloDecryptCBC128.htm
+move c:\logs\testexecute\AESMonteCarloDecryptCBC128.htm e:\testresults\AESMonteCarloDecryptCBC128.htm
+
+tsymmetric z:\tsymmetric\AESMonteCarloDecryptCBC192.script c:\logs\testexecute\AESMonteCarloDecryptCBC192.htm
+move c:\logs\testexecute\AESMonteCarloDecryptCBC192.htm e:\testresults\AESMonteCarloDecryptCBC192.htm
+
+tsymmetric z:\tsymmetric\AESMonteCarloDecryptCBC256.script c:\logs\testexecute\AESMonteCarloDecryptCBC256.htm
+move c:\logs\testexecute\AESMonteCarloDecryptCBC256.htm e:\testresults\AESMonteCarloDecryptCBC256.htm
+
+
+
+REM crypto, bigint
+
+tbigint z:\tbigint\tconstructiontests.script c:\logs\testexecute\tconstruction.htm
+move c:\logs\testexecute\tconstruction.htm e:\testresults\tconstruction.htm
+
+tbigint z:\tbigint\tbasicmathstests.script c:\logs\testexecute\tbasicmaths.htm
+move c:\logs\testexecute\tbasicmaths.htm e:\testresults\tbasicmaths.htm
+
+tbigint z:\tbigint\tmontgomerytests.script c:\logs\testexecute\tmontgomery.htm
+move c:\logs\testexecute\tmontgomery.htm e:\testresults\tmontgomery.htm
+
+REM tbigint z:\tbigint\tperformancetests.script c:\logs\testexecute\tperformance.htm
+REM move c:\logs\testexecute\tperformance.htm e:\testresults\tperformance.htm
+
+tbigint z:\tbigint\tprimetests.script c:\logs\testexecute\tprime.htm
+move c:\logs\testexecute\tprime.htm e:\testresults\tprime.htm
+
+REM tbigint z:\tbigint\tprimetests2.script c:\logs\testexecute\tprime2.htm
+REM move c:\logs\testexecute\tprime2.htm e:\testresults\tprime2.htm
+
+tbigint z:\tbigint\tprimefailuretests.script  c:\logs\testexecute\tprimefailure.htm
+move c:\logs\testexecute\tprimefailure.htm e:\testresults\tprimefailure.htm
+
+tbigint z:\tbigint\tprimegen.script c:\logs\testexecute\tprimegen.htm
+move c:\logs\testexecute\tprimegen.htm e:\testresults\tprimegen.htm
+
+
+
+REM crypto, tpkcs5kdf
+md c:\tpkcs5kdf
+
+copy z:\tpkcs12kdftests.script c:\tpkcs5kdf\tpkcs12kdftests.script
+tpkcs5kdf c:\tpkcs5kdf\tpkcs12kdftests.script c:\tpkcs5kdf\tpkcs12kdftests.htm
+move c:\tpkcs5kdf\tpkcs12kdftests.htm e:\testresults\tpkcs12kdftests.htm
+del /s c:\tpkcs5kdf\
+
+
+REM crypto, pbe
+
+md c:\tpbe
+copy z:\tpbe\*.dat c:\tpbe
+attrib c:\tpbe\strong.dat -r
+attrib c:\tpbe\weak.dat -r
+tpbe z:\tpbe\tpbetests_v2.script c:\logs\testexecute\tpbetestsv2.htm
+move c:\logs\testexecute\tpbetestsv2.htm e:\testresults\tpbetestsv2.htm
+
+del /s c:\tpbe\
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptomgmtlibs/securitytestfw/test/autotesting/runfiletokens_disableauth_with_wmdrm.bat	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,58 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+
+copy /s z:\tkeystore\ c:\tkeystore\
+copy /s z:\tcertstore\ c:\tcertstore\
+copy /s z:\ttesttools\ c:\ttesttools\
+copy /s z:\system\data\test1certstore.dat c:\system\data\test1certstore.dat
+copy /s c:\ttesttools\data\certclients.dat c:\private\101f72a6\certclients.dat
+
+TESTEXECUTE c:\ttesttools\scripts\sec-filetokens-tools.script
+move c:\logs\testexecute\sec-filetokens-tools.htm e:\testresults\sec-filetokens-tools.htm
+
+del c:\private\101f72a6\certclients.dat
+del c:\system\data\test1certstore.dat
+
+del /s c:\ttesttools\
+del /s c:\tcertstore\
+del /s c:\tkeystore\
+
+rem TCERTAPPS
+copy /s z:\tcertapps\ c:\tcertapps\
+t_certapps c:\tcertapps\scripts\script1.script c:\logs\testexecute\tcertapps.htm
+move c:\logs\testexecute\tcertapps.htm e:\testresults\tcertapps.htm
+t_certapps c:\tcertapps\scripts\apipolicing.script c:\logs\testexecute\tcertapps-apipolicing.htm
+move c:\logs\testexecute\tcertapps-apipolicing.htm e:\testresults\tcertapps-apipolicing.htm
+del /s c:\tcertapps\
+
+
+REM t_keystore
+copy /s z:\tkeystore\ c:\tkeystore\
+t_keystore c:\tkeystore\scripts\tkeystore.script c:\logs\testexecute\tkeystore.htm
+move c:\logs\testexecute\tkeystore.htm e:\testresults\tkeystore.htm
+t_keystore c:\tkeystore\scripts\authobjects.script c:\logs\testexecute\tkeystore_authobjects.htm
+move c:\logs\testexecute\tkeystore_authobjects.htm e:\testresults\tkeystore_authobjects.htm
+t_keystore c:\tkeystore\scripts\exportscript.script c:\logs\testexecute\tkeystore_export.htm
+move c:\logs\testexecute\tkeystore_export.htm e:\testresults\tkeystore_export.htm
+t_keystore c:\tkeystore\scripts\reload.script c:\logs\testexecute\tkeystore_reload.htm
+move c:\logs\testexecute\tkeystore_reload.htm e:\testresults\tkeystore_reload.htm
+t_keystore c:\tkeystore\scripts\oldserver_newfeature.script c:\logs\testexecute\oldserver_newfeature.htm
+move c:\logs\testexecute\oldserver_newfeature.htm e:\testresults\oldserver_newfeature.htm
+
+t_keystore c:\tkeystore\scripts\thwkeystore.txt c:\testresults\thwkeystore.log
+move c:\testresults\thwkeystore.log e:\testresults\thwkeystore.log
+
+del /s c:\tkeystore\
--- a/cryptomgmtlibs/securitytestfw/test/autotesting/sdp_bld.inf	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/autotesting/sdp_bld.inf	Mon Oct 12 10:17:04 2009 +0300
@@ -53,10 +53,17 @@
 #include "os/security/securityanddataprivacytools/securityconfig/group/bld.inf"
 #include "os/security/cryptomgmtlibs/securitytestfw/group/bld.inf"
 #include "os/security/contentmgmt/cafrecogniserconfig/bld.inf"
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+#include "os/security/contentmgmt/referencedrmagent/refcafhelper/group/bld.inf"
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
 #include "os/security/contentmgmt/contentaccessfwfordrm/group/bld.inf"
 #include "os/security/contentmgmt/cafstreamingsupport/group/bld.inf"
 #include "os/security/contentmgmt/referencedrmagent/RefTestAgent/group/bld.inf"
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+#include "os/security/contentmgmt/mtputils/group/bld.inf"
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 #include "os/security/authorisation/userpromptservice/group/bld.inf"
 #include "os/security/authorisation/userpromptutils/group/bld.inf"
 #include "app/techview/securityapps/securityupstechview/group/bld.inf"
--- a/cryptomgmtlibs/securitytestfw/test/autotesting/test_spec.txt	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/autotesting/test_spec.txt	Mon Oct 12 10:17:04 2009 +0300
@@ -25,7 +25,7 @@
 ###############################################################################
 {9.5}=Init,Crypto,CryptoTokens,CAF2,Common,Certman,SWI,IntegrityServices,Asnpkcs,Filetokens,SisTools,SwiTools95Only,SwiTools,CryptoSpi,UPS,StreamingCAF,SecurityTools,Misc,ToolsLegacy,UptoMCL
 {9.6}=Init,Crypto,CryptoTokens,CAF2,CAF296,Common,Certman,SWI,Asnpkcs,Filetokens,FileTokens_UseAuth,SisTools,SwiTools,CryptoSpi,UPS,StreamingCAF,SecurityTools,USIF,Misc,ToolsNew,SwiDiran,AuthServer
-{future}=Init,Crypto,CryptoTokens,CAF2,CAF296,Common,Certman,SWI,Asnpkcs,Filetokens,FileTokens_UseAuth,SisTools,SwiTools,CryptoSpi,UPS,AuthServer,StreamingCAF,SecurityTools,USIF,Misc,ToolsNew,SwiDiran
+{future}=Init,Crypto,CryptoTokens,CAF2,CAF296,CAF2Future,Common,Certman,SWI,Asnpkcs,Filetokens,FileTokens_UseAuth,SisTools,SwiTools,CryptoSpi,UPS,AuthServer,StreamingCAF,SecurityTools,USIF,Misc,ToolsNew,SwiDiran
 
 ###############################################################################
 #                               TEST DEFINITION                               #
@@ -134,6 +134,11 @@
 TESTEXECUTE, \logs\testexecute\RTA_64bit.htm,, z:\RTA\rta_64bit.script,1800, UDEB#UREL,\techview.bat,
 TESTEXECUTE, \logs\testexecute\consumerstep_64bit.htm,, z:\tcaf\consumerstep_64bit.script,1800, UDEB#UREL,\techview.bat,
 
+[CAF2Future]
+# Should run for vfuture onwards.
+TESTEXECUTE, \logs\testexecute\tcafwmdrmsupport.htm,, z:\tcaf\tcafwmdrmsupport.script,1800, UDEB#UREL,\techview.bat,
+TESTEXECUTE, \logs\testexecute\tmtputils.htm,, z:\tcaf\tmtputils\tmtputils.script,1800, UDEB#UREL,\techview.bat,
+TESTEXECUTE, \logs\testexecute\tcafhelper.htm,, z:\tcaf\tcafhelper.script,1800, UDEB#UREL,\techview.bat,
 
 
 [Common]
--- a/cryptomgmtlibs/securitytestfw/test/autotesting/test_spec_sdp_9.5.txt	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/autotesting/test_spec_sdp_9.5.txt	Mon Oct 12 10:17:04 2009 +0300
@@ -24,7 +24,7 @@
 #                             COMPONENT ASSIGNMENT                            #
 ###############################################################################
 {tb92SF}=Init,Crypto,CryptoTokens,CAF2,CAF296,Common,Certman,Asnpkcs,Filetokens,CryptoSpi,UPS,StreamingCAF,SecurityTools,Misc
-{tb101SF}=Init,Crypto,CryptoTokens,CAF2,CAF296,Common,Certman,Asnpkcs,Filetokens,FileTokens_UseAuth,CryptoSpi,UPS,AuthServer,StreamingCAF,SecurityTools,Misc
+{tb101SF}=Init,Crypto,CryptoTokens,CAF2,CAF296,CAF2Future,Common,Certman,Asnpkcs,Filetokens,FileTokens_UseAuth,CryptoSpi,UPS,AuthServer,StreamingCAF,SecurityTools,Misc,FileTokens_HwImpl
 
 
 ###############################################################################
@@ -103,6 +103,11 @@
 TESTEXECUTE, \logs\testexecute\RTA_64bit.htm,, z:\RTA\rta_64bit.script,1800, UDEB#UREL,\techview.bat,
 TESTEXECUTE, \logs\testexecute\consumerstep_64bit.htm,, z:\tcaf\consumerstep_64bit.script,1800, UDEB#UREL,\techview.bat,
 
+[CAF2Future]
+# Should run for vfuture onwards.
+TESTEXECUTE, \logs\testexecute\tcafwmdrmsupport.htm,, z:\tcaf\tcafwmdrmsupport.script,1800, UDEB#UREL,\techview.bat,
+TESTEXECUTE, \logs\testexecute\tmtputils.htm,, z:\tcaf\tmtputils\tmtputils.script,1800, UDEB#UREL,\techview.bat,
+TESTEXECUTE, \logs\testexecute\tcafhelper.htm,, z:\tcaf\tcafhelper.script,1800, UDEB#UREL,\techview.bat,
 
 [StreamingCAF]
 #Streaming CAF Tests
@@ -732,3 +737,8 @@
 
 # Categorisation tags are checked for all of security sub-system 
 PERL, \searchtags.txt,,\epoc32\winscw\c\tswi\searchtags.pl, 300, UDEB,,
+[FileTokens_HwImpl]
+T_KEYSTORE, \thwkeystore.log,,		     -Dstartupmode=1 -- \tkeystore\scripts\thwkeystore.txt	\thwkeystore.log,				300, UDEB#UREL, \epoc32\winscw\c\testdata\tcryptospi\scripts\batchfiles\pre_dummyeccplugin.bat, \epoc32\winscw\c\testdata\tcryptospi\scripts\batchfiles\post_dummyeccplugin.bat
+TESTEXECUTE, \logs\testexecute\te_dummyeccciphertestcases.htm,, -Dtextshell -- \testdata\tcryptospi\scripts\te_dummyeccciphertestcases.script, 900, UDEB#UREL, \epoc32\winscw\c\testdata\tcryptospi\scripts\batchfiles\pre_dummyeccplugin.bat, \epoc32\winscw\c\testdata\tcryptospi\scripts\batchfiles\post_dummyeccplugin.bat
+
+
--- a/cryptomgmtlibs/securitytestfw/test/autotesting/testsecurity_sdp.bat	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/autotesting/testsecurity_sdp.bat	Mon Oct 12 10:17:04 2009 +0300
@@ -35,8 +35,6 @@
 
 sntpclient -savings cbtime01.symbian.intra bantime01.symbian.intra
 
-runcaftests.bat
-
 runcrypto.bat
 
 REM Run recognizer tests
@@ -57,3 +55,4 @@
 
 runfiletokens.bat
 
+runcaftests.bat
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptomgmtlibs/securitytestfw/test/captestframework/captestframework.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,77 @@
+/*
+* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+
+/**
+ @file
+*/
+
+#ifndef CAPTESTFRAMEWORK_H__
+#define CAPTESTFRAMEWORK_H__
+
+// Used to transfer data to the helper
+const TInt KDllNameTransferSlot=5;
+const TInt KShouldPassTransferSlot=6;
+const TInt KTestNumberTransferSlot=7;
+const TInt KLogFileTransferSlot=8;
+const TInt KFileSessionTransferSlot=9;
+const TInt KLogFileNameTransferSlot=10;
+
+
+// markers for the file used to transfer the results
+
+enum TFileMarker
+	{
+	ETestPassed,
+	ETestFailed,
+	ETestsEnded,
+	EFileEnd,
+	};
+
+
+class RFile;
+
+// classes to be implemented by the actaul test dll.
+class MCapabilityTest
+	{
+public:
+	virtual const TDesC& Name() const=0;
+	virtual const TDesC& SubName() const=0;
+	
+	virtual TCapabilitySet CapabilitiesRequired() const=0;
+	virtual TUid VidRequired() const=0;
+	virtual TUid SidRequired() const=0;
+
+	virtual void RunTestL(RFile& aLogFile)=0;
+	virtual void SetExpectPermissionDenied(TBool aExpectPermissionDenied)=0;
+	virtual ~MCapabilityTest() {};
+	};
+
+class MCapabilityTestFactory
+	{
+public:
+	virtual TInt NumberOfTests()=0;
+	virtual MCapabilityTest* Test(TInt aTestNumber)=0;
+	virtual ~MCapabilityTestFactory() {};
+	};
+
+
+
+
+#endif // #ifndef CAPTESTFRAMEWORK_H__
--- a/cryptomgmtlibs/securitytestfw/test/captestframework/captestframeworkhelper.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/captestframework/captestframeworkhelper.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -26,7 +26,7 @@
 #include <e32base.h>
 #include <f32file.h>
 
-#include <captestframework/captestframework.h>
+#include "captestframework.h"
 
 
 void MainL();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptomgmtlibs/securitytestfw/test/captestframework/captestframeworkserver.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+
+/**
+ @file 
+*/
+
+#ifndef __CAPTESTFRAMEWORK_SERVER_H__
+#define __CAPTESTFRAMEWORK_SERVER_H__
+#include <test/testexecuteserverbase.h>
+
+class CCapTestFrameworkServer : public CTestServer
+	{
+public:
+	static CCapTestFrameworkServer* NewL();
+	virtual CTestStep* CreateTestStep(const TDesC& aStepName);
+	RFs& Fs(){return iFs;};
+
+private:
+	RFs iFs;
+	};
+#endif	/* ndef __CAPTESTFRAMEWORK_SERVER_H__ */
--- a/cryptomgmtlibs/securitytestfw/test/captestframework/captestframeworkstep.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/captestframework/captestframeworkstep.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -25,7 +25,7 @@
 #include <e32capability.h>
 
 #include "captestframeworkstep.h"
-#include <captestframework/captestframework.h>
+#include "captestframework.h"
 
 #include <test/testexecutelog.h>
 #include <s32file.h>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptomgmtlibs/securitytestfw/test/captestframework/captestframeworkstep.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,93 @@
+/*
+* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+
+/**
+ @file 
+*/
+#ifndef __CAPTESTFRAMEWORK_STEP_H__
+#define __CAPTESTFRAMEWORK_STEP_H__
+
+#include <test/testexecutestepbase.h>
+#include "captestframeworkserver.h"
+
+#include "captestframework.h"
+
+
+struct TTestEnvironment
+	{
+	TTestEnvironment(const TCapabilitySet& aCaps, TUid aSid, TUid aVid, TBool aExpectPass);
+	
+	TCapabilitySet iCaps;
+	TUid iSid;
+	TUid iVid;
+	TBool iExpectPass;
+	};
+
+
+class CCapTestFrameworkStep : public CTestStep
+	{
+public:
+	enum TThoroughness 
+		{
+		EBasicChecks,			// Just test using no capabilities, and capabilities required
+		EThoroughChecks,		// Test every subset required
+		};
+	
+public:
+	CCapTestFrameworkStep(TThoroughness aThoroughness = EBasicChecks);
+	~CCapTestFrameworkStep();
+	
+	TVerdict doTestStepPreambleL();
+	TVerdict doTestStepPostambleL();
+	TVerdict doTestStepL();
+
+private:
+	void RunTestDllL(const TDesC& aDllName);
+	MCapabilityTestFactory* SetupFactoryL();
+	
+	void PrintCapabilitySet(const TCapabilitySet& aCapSet, const TDesC& aExtra=KNullDesC);
+
+	void RunTestStepL(MCapabilityTest* aTest);
+
+	void GenerateEnvironmentsL(const TCapabilitySet& aCapsNeeded, const TUid& aSidNeeded, const TUid& aVidNeeded, RArray<TTestEnvironment>& aEnvironments);
+
+	TCapabilitySet InvertCapSet(const TCapabilitySet& aCapSet);
+
+	
+	// Sets the helper up with capabilities
+	void SetupHelperL(const TTestEnvironment& aEnvironment);
+	
+	// Runs helper
+	void RunHelperL(TInt aTestNumber, TBool aShouldPass);
+
+private:
+	RFs iFs;
+	TThoroughness iThoroughness;
+	TInt iCurrentTest;
+	MCapabilityTestFactory* iFactory;
+	RLibrary iLibrary;
+	TPtrC iDllName;
+	TBool iOmitTCBCapInComplementSet; // This functionality is needed for testing components that don't have the TCB capability, for example the SIF API.
+	};
+
+_LIT(KRunBasicCapabilityChecks,"RunBasicCapabilityChecks");
+_LIT(KRunThoroughCapabilityChecks,"RunThoroughCapabilityChecks");
+
+#endif /* #ifndef __CAPTESTFRAMEWORK_STEP_H__ */
--- a/cryptomgmtlibs/securitytestfw/test/captestframework/captestutility.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/captestframework/captestutility.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -22,7 +22,7 @@
  @file
 */
 
-#include <captestframework/captestutility.h>
+#include "captestutility.h"
 
 // CDefaultCapabilityTest
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptomgmtlibs/securitytestfw/test/captestframework/captestutility.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,95 @@
+/*
+* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Implements default base classes for captestframework
+*
+*/
+
+
+
+
+/**
+ @file
+*/
+
+#ifndef CAPTESTUTILITY_H__
+#define CAPTESTUTILITY_H__
+
+#include <e32base.h>
+#include <s32file.h> 
+#include "captestframework.h"
+
+// CDefaultCapabilityTest
+class CDefaultCapabilityTest : public CBase, public MCapabilityTest
+	{
+public:
+	IMPORT_C const TDesC& Name() const;
+	IMPORT_C const TDesC& SubName() const;
+	
+	IMPORT_C TCapabilitySet CapabilitiesRequired() const;
+	IMPORT_C TUid VidRequired() const;
+	IMPORT_C TUid SidRequired() const;
+
+	IMPORT_C ~CDefaultCapabilityTest();
+	
+protected:
+	IMPORT_C void SetNameL(const TDesC& aName);	
+	void SetExpectPermissionDenied(TBool aExpectPermissionDenied = ETrue);	
+
+	IMPORT_C void SetCapabilityRequired(const TCapability& aCapability);
+	IMPORT_C void SetSidRequired(const TUid& aSid);
+	IMPORT_C void SetVidRequired(const TUid& aVid);
+	
+	IMPORT_C TInt CheckFailL(TInt aResult, const TDesC& aTestName);
+	IMPORT_C void RunTestL(RFile& aLogFile);
+
+	void SetFail() { iFail = ETrue;}
+	virtual void RunTestL() =0;
+private:
+	HBufC* iTestName;
+	HBufC* iTestSubName;
+	
+	RFile* iLogFile;
+	RFileWriteStream* iLogWriteStream;
+	TBool iExpectPermissionDenied;
+	TCapabilitySet iCapabilitySet;
+	TUid iVidRequired;
+	TUid iSidRequired;	
+	TBool iFail;
+	};
+
+// CDefaultCapabilityTestFactory
+class CDefaultCapabilityTestFactory : public CBase, public MCapabilityTestFactory
+
+	{
+public:
+	IMPORT_C virtual TInt NumberOfTests();
+	IMPORT_C virtual MCapabilityTest* Test(TInt aTestNumber);
+	
+	IMPORT_C void AddTestL(CDefaultCapabilityTest* aTest);
+
+	IMPORT_C ~CDefaultCapabilityTestFactory();
+	
+private:
+	RPointerArray<CDefaultCapabilityTest> iTests;
+	};
+
+// inline functions from CSwiCapabilityTest
+
+inline void CDefaultCapabilityTest::SetExpectPermissionDenied(TBool aExpectPermissionDenied)
+	{
+	iExpectPermissionDenied = aExpectPermissionDenied;
+	}
+
+#endif //#ifndef CAPTESTUTILITY_H__
--- a/cryptomgmtlibs/securitytestfw/test/rtestwrapper/rtestwrapper.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/rtestwrapper/rtestwrapper.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -23,7 +23,7 @@
 /**
  @file
 */
-#include <scs/rtestwrapper.h>
+#include "rtestwrapper.h"
 #include <e32base.h>
 #include <f32file.h>
 
--- a/cryptomgmtlibs/securitytestfw/test/securityframeworktestserver/group/securityframeworktestserver.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/securityframeworktestserver/group/securityframeworktestserver.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -26,8 +26,7 @@
 SOURCE		nooperationteststep.cpp	
 
 USERINCLUDE   ../src
-SYSTEMINCLUDE /epoc32/include
-SYSTEMINCLUDE /epoc32/include/test
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY     	euser.lib
 LIBRARY		testexecuteutils.lib
--- a/cryptomgmtlibs/securitytestfw/test/testhandler2/Thardcodedsetup.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/testhandler2/Thardcodedsetup.h	Mon Oct 12 10:17:04 2009 +0300
@@ -19,8 +19,8 @@
 #ifndef __T_HARDCODEDSETUP_H__
 #define __T_HARDCODEDSETUP_H__
 
-#include <testhandler2/t_testsetup.h>
-#include <testhandler2/thardcodedtests.h>
+#include "t_testsetup.h"
+#include "thardcodedtests.h"
 
 class CTestAction;
 class TTestActionSpec;
--- a/cryptomgmtlibs/securitytestfw/test/testhandler2/tScriptSetup.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/testhandler2/tScriptSetup.h	Mon Oct 12 10:17:04 2009 +0300
@@ -19,8 +19,8 @@
 #ifndef __T_SCRIPTSETUP_H__
 #define __T_SCRIPTSETUP_H__
 
-#include <testhandler2/t_testsetup.h>
-#include <testhandler2/tscripttests.h>
+#include "t_testsetup.h"
+#include "tscripttests.h"
 
 //test setup base classes
 _LIT8(KActionStart, "<action>");
--- a/cryptomgmtlibs/securitytestfw/test/testhandler2/tSyncAction.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/testhandler2/tSyncAction.h	Mon Oct 12 10:17:04 2009 +0300
@@ -20,7 +20,7 @@
 #ifndef __T_SYNCACTION_H__
 #define __T_SYNCACTION_H__
 
-#include <testhandler2/t_testaction.h>
+#include "t_testaction.h"
 
 class CSyncAction : public CTestAction
 	{
--- a/cryptomgmtlibs/securitytestfw/test/testhandler2/tTestSpec.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/testhandler2/tTestSpec.h	Mon Oct 12 10:17:04 2009 +0300
@@ -21,7 +21,7 @@
 #define __T_TESTSPEC_H__
 
 #include <e32base.h>
-#include <testhandler2/t_mtestspec.h>
+#include "t_mtestspec.h"
 
 /**
  * This class represents a series of a test that needs to be run. It should be passed 
--- a/cryptomgmtlibs/securitytestfw/test/testhandler2/t_certstoreactionmemfail.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/testhandler2/t_certstoreactionmemfail.h	Mon Oct 12 10:17:04 2009 +0300
@@ -25,7 +25,7 @@
 #ifndef __T_CERTSTOREACTIONMEMFAIL_H__
 #define __T_CERTSTOREACTIONMEMFAIL_H__
 
-#include <testhandler2/t_testaction.h>
+#include "t_testaction.h"
 
 class CMemFailStart : public CTestAction
 	{
--- a/cryptomgmtlibs/securitytestfw/test/testhandler2/t_message.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/testhandler2/t_message.h	Mon Oct 12 10:17:04 2009 +0300
@@ -25,7 +25,7 @@
 #ifndef __TMESSAGE_H__
 #define __TMESSAGE_H__
 
-#include <testhandler2/t_testaction.h>
+#include "t_testaction.h"
 
 class TTestActionSpec;
 
--- a/cryptomgmtlibs/securitytestfw/test/testhandler2/t_policy.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/testhandler2/t_policy.h	Mon Oct 12 10:17:04 2009 +0300
@@ -20,7 +20,7 @@
 #ifndef __TPOLICY_H__
 #define __TPOLICY_H__
 
-#include <testhandler2/t_testaction.h>
+#include "t_testaction.h"
 
 /**
  * This action is used to test whether security policies are correctly enforced.
--- a/cryptomgmtlibs/securitytestfw/test/testhandler2/t_testaction.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/testhandler2/t_testaction.h	Mon Oct 12 10:17:04 2009 +0300
@@ -21,7 +21,7 @@
 
 #include <e32base.h>
 #include <f32file.h>
-#include <testhandler2/t_testactionspec.h>
+#include "t_testactionspec.h"
 
 class CConsoleBase;
 class CConsoleBase;
--- a/cryptomgmtlibs/securitytestfw/test/testhandler2/t_testsetup.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/testhandler2/t_testsetup.h	Mon Oct 12 10:17:04 2009 +0300
@@ -30,7 +30,7 @@
 #define DEFAULTGROUPING		SMOKE
 
 #include <e32base.h>
-#include <testhandler2/t_output.h>
+#include "t_output.h"
 
 class CTestHandlerSettings;
 struct TScriptTests;
--- a/cryptomgmtlibs/securitytestfw/test/testhandler2/tscriptandhardcoded.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/testhandler2/tscriptandhardcoded.h	Mon Oct 12 10:17:04 2009 +0300
@@ -19,7 +19,7 @@
 #ifndef __T_SCRIPTANDHARDCODED_H__
 #define __T_SCRIPTANDHARDCODED_H__
 
-#include <testhandler2/tscriptsetup.h>
-#include <testhandler2/thardcodedsetup.h>
+#include "tscriptsetup.h"
+#include "thardcodedsetup.h"
 
 #endif
--- a/cryptomgmtlibs/securitytestfw/test/testhandler_on_testexecute/step.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/testhandler_on_testexecute/step.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -21,7 +21,7 @@
 */
 #include "step.h"
 #include "testexecuteinterface.h"
-#include "testhandler2/t_testsetup.h"
+#include "t_testsetup.h"
 
 using namespace TestExecuteInterface;
 
--- a/cryptomgmtlibs/securitytestfw/test/testutil/group/testutilclient.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/testutil/group/testutilclient.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -38,7 +38,7 @@
 
 SOURCE		testutilclient.cpp
 
-SYSTEMINCLUDE  	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY		euser.lib
 LIBRARY		efsrv.lib
--- a/cryptomgmtlibs/securitytestfw/test/testutil/group/testutilserver.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securitytestfw/test/testutil/group/testutilserver.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -44,7 +44,7 @@
 SOURCEPATH	../testutilcommon
 SOURCE 		testutilssessioncommon.cpp
 
-SYSTEMINCLUDE  	/epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY		euser.lib 
 LIBRARY		efsrv.lib
--- a/cryptomgmtlibs/securityutils/test/trecog/trecog.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptomgmtlibs/securityutils/test/trecog/trecog.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -21,9 +21,8 @@
 UID             0x1000007A 0x1027553D
 CAPABILITY  	AllFiles WriteDeviceData PowerMgmt Protserv SwEvent
 
-
-SYSTEMINCLUDE   /epoc32/include /epoc32/include/techview /epoc32/include/test
-systeminclude   /epoc32/include/ecom
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 SOURCEPATH		.
 SOURCE			trecogserver.cpp trecogstep.cpp
--- a/cryptoplugins/cryptospiplugins/group/bld.inf	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoplugins/cryptospiplugins/group/bld.inf	Mon Oct 12 10:17:04 2009 +0300
@@ -22,6 +22,9 @@
 */
 
 #include "../test/h4drv/bld.inf"
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+#include "../test/dummyecchwplugin/group/bld.inf"
+#endif
 
 PRJ_PLATFORMS
 default
@@ -53,9 +56,14 @@
 // ROMKIT includes
 ../inc/cryptospi_testplugins.iby /epoc32/rom/include/cryptospi_testplugins.iby
 
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+../inc/cryptospi_testwmdrmplugins.iby /epoc32/rom/include/cryptospi_testwmdrmplugins.iby
+#endif
 
 
 
 
 
 
+
+
--- a/cryptoplugins/cryptospiplugins/inc/cryptospi_testplugins.iby	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoplugins/cryptospiplugins/inc/cryptospi_testplugins.iby	Mon Oct 12 10:17:04 2009 +0300
@@ -47,4 +47,4 @@
 file=ABI_DIR\BUILD_DIR\tcrypto.exe 	"sys\bin\tcrypto.exe"
 file=ABI_DIR\BUILD_DIR\temb.exe 	"sys\bin\temb.exe"
 file=ABI_DIR\BUILD_DIR\tasync.exe 	"sys\bin\tasync.exe"
-#endif
\ No newline at end of file
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoplugins/cryptospiplugins/inc/cryptospi_testwmdrmplugins.iby	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,23 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+file=ABI_DIR\BUILD_DIR\cryptospihai.dll 	"sys\bin\cryptospihai.dll"
+file=ABI_DIR\BUILD_DIR\dummyecchwplugin.dll 	"sys\bin\dummyecchwplugin.dll"
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoplugins/cryptospiplugins/test/dummyecchwplugin/bwins/cryptospihaiu.def	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,4 @@
+EXPORTS
+	?SignL@CCryptoSpiHai@CryptoSpiHai@@SAXHABVTDesC8@@AAVCCryptoParams@CryptoSpi@@@Z @ 1 NONAME ; void CryptoSpiHai::CCryptoSpiHai::SignL(int, class TDesC8 const &, class CryptoSpi::CCryptoParams &)
+	?DecryptL@CCryptoSpiHai@CryptoSpiHai@@SAXHABVTDesC8@@AAVTDes8@@@Z @ 2 NONAME ; void CryptoSpiHai::CCryptoSpiHai::DecryptL(int, class TDesC8 const &, class TDes8 &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoplugins/cryptospiplugins/test/dummyecchwplugin/bwins/dummyecchwpluginu.def	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,12 @@
+EXPORTS
+	?Enumerate@CCryptoPluginEntry@@SAPAPBXVTUid@@AAH@Z @ 1 NONAME ; void const * * CCryptoPluginEntry::Enumerate(class TUid, int &)
+	?GetExtendedCharacteristicsL@CCryptoPluginEntry@@SAXVTUid@@AAPAVCExtendedCharacteristics@CryptoSpi@@@Z @ 2 NONAME ; void CCryptoPluginEntry::GetExtendedCharacteristicsL(class TUid, class CryptoSpi::CExtendedCharacteristics * &)
+	?CreateAsymmetricCipherL@CCryptoPluginEntry@@SAXAAPAVMAsymmetricCipher@CryptoSpi@@VTUid@@ABVCKey@3@11PBVCCryptoParams@3@@Z @ 3 NONAME ; void CCryptoPluginEntry::CreateAsymmetricCipherL(class CryptoSpi::MAsymmetricCipher * &, class TUid, class CryptoSpi::CKey const &, class TUid, class TUid, class CryptoSpi::CCryptoParams const *)
+	?CreateAsymmetricSignerL@CCryptoPluginEntry@@SAXAAPAVMSigner@CryptoSpi@@VTUid@@ABVCKey@3@1PBVCCryptoParams@3@@Z @ 4 NONAME ; void CCryptoPluginEntry::CreateAsymmetricSignerL(class CryptoSpi::MSigner * &, class TUid, class CryptoSpi::CKey const &, class TUid, class CryptoSpi::CCryptoParams const *)
+	?CreateAsymmetricVerifierL@CCryptoPluginEntry@@SAXAAPAVMVerifier@CryptoSpi@@VTUid@@ABVCKey@3@1PBVCCryptoParams@3@@Z @ 5 NONAME ; void CCryptoPluginEntry::CreateAsymmetricVerifierL(class CryptoSpi::MVerifier * &, class TUid, class CryptoSpi::CKey const &, class TUid, class CryptoSpi::CCryptoParams const *)
+	?CreateHashL@CCryptoPluginEntry@@SAXAAPAVMHash@CryptoSpi@@VTUid@@1PBVCKey@3@PBVCCryptoParams@3@@Z @ 6 NONAME ; void CCryptoPluginEntry::CreateHashL(class CryptoSpi::MHash * &, class TUid, class TUid, class CryptoSpi::CKey const *, class CryptoSpi::CCryptoParams const *)
+	?CreateKeyAgreementL@CCryptoPluginEntry@@SAXAAPAVMKeyAgreement@CryptoSpi@@VTUid@@ABVCKey@3@PBVCCryptoParams@3@@Z @ 7 NONAME ; void CCryptoPluginEntry::CreateKeyAgreementL(class CryptoSpi::MKeyAgreement * &, class TUid, class CryptoSpi::CKey const &, class CryptoSpi::CCryptoParams const *)
+	?CreateKeyPairGeneratorL@CCryptoPluginEntry@@SAXAAPAVMKeyPairGenerator@CryptoSpi@@VTUid@@PBVCCryptoParams@3@@Z @ 8 NONAME ; void CCryptoPluginEntry::CreateKeyPairGeneratorL(class CryptoSpi::MKeyPairGenerator * &, class TUid, class CryptoSpi::CCryptoParams const *)
+	?CreateRandomL@CCryptoPluginEntry@@SAXAAPAVMRandom@CryptoSpi@@VTUid@@PBVCCryptoParams@3@@Z @ 9 NONAME ; void CCryptoPluginEntry::CreateRandomL(class CryptoSpi::MRandom * &, class TUid, class CryptoSpi::CCryptoParams const *)
+	?CreateSymmetricCipherL@CCryptoPluginEntry@@SAXAAPAVMSymmetricCipher@CryptoSpi@@VTUid@@ABVCKey@3@111PBVCCryptoParams@3@@Z @ 10 NONAME ; void CCryptoPluginEntry::CreateSymmetricCipherL(class CryptoSpi::MSymmetricCipher * &, class TUid, class CryptoSpi::CKey const &, class TUid, class TUid, class TUid, class CryptoSpi::CCryptoParams const *)
+	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoplugins/cryptospiplugins/test/dummyecchwplugin/eabi/cryptospihaiu.def	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,4 @@
+EXPORTS
+	_ZN12CryptoSpiHai13CCryptoSpiHai5SignLEiRK6TDesC8RN9CryptoSpi13CCryptoParamsE @ 1 NONAME
+	_ZN12CryptoSpiHai13CCryptoSpiHai8DecryptLEiRK6TDesC8R5TDes8 @ 2 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoplugins/cryptospiplugins/test/dummyecchwplugin/eabi/dummyecchwpluginu.def	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,18 @@
+EXPORTS
+	_ZN18CCryptoPluginEntry9EnumerateE4TUidRi @ 1 NONAME
+	_ZN18CCryptoPluginEntry27GetExtendedCharacteristicsLE4TUidRPN9CryptoSpi24CExtendedCharacteristicsE @ 2 NONAME
+	_ZN18CCryptoPluginEntry23CreateAsymmetricCipherLERPN9CryptoSpi17MAsymmetricCipherE4TUidRKNS0_4CKeyES4_S4_PKNS0_13CCryptoParamsE @ 3 NONAME
+	_ZN18CCryptoPluginEntry23CreateAsymmetricSignerLERPN9CryptoSpi7MSignerE4TUidRKNS0_4CKeyES4_PKNS0_13CCryptoParamsE @ 4 NONAME
+	_ZN18CCryptoPluginEntry25CreateAsymmetricVerifierLERPN9CryptoSpi9MVerifierE4TUidRKNS0_4CKeyES4_PKNS0_13CCryptoParamsE @ 5 NONAME
+	_ZN18CCryptoPluginEntry11CreateHashLERPN9CryptoSpi5MHashE4TUidS4_PKNS0_4CKeyEPKNS0_13CCryptoParamsE @ 6 NONAME
+	_ZN18CCryptoPluginEntry19CreateKeyAgreementLERPN9CryptoSpi13MKeyAgreementE4TUidRKNS0_4CKeyEPKNS0_13CCryptoParamsE @ 7 NONAME
+	_ZN18CCryptoPluginEntry23CreateKeyPairGeneratorLERPN9CryptoSpi17MKeyPairGeneratorE4TUidPKNS0_13CCryptoParamsE @ 8 NONAME
+	_ZN18CCryptoPluginEntry13CreateRandomLERPN9CryptoSpi7MRandomE4TUidPKNS0_13CCryptoParamsE @ 9 NONAME
+	_ZN18CCryptoPluginEntry22CreateSymmetricCipherLERPN9CryptoSpi16MSymmetricCipherE4TUidRKNS0_4CKeyES4_S4_S4_PKNS0_13CCryptoParamsE @ 10 NONAME
+	
+	
+	
+
+	
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoplugins/cryptospiplugins/test/dummyecchwplugin/group/bld.inf	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+PRJ_TESTMMPFILES
+
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+cryptospihai.mmp
+dummyecchwplugin.mmp
+#endif
+
+PRJ_TESTEXPORTS
+
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoplugins/cryptospiplugins/test/dummyecchwplugin/group/cryptospihai.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,52 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* cryptospihai.dll provides a reference implementation for cryptospi 
+* hardware abstraction interface (HAI). This is used by a cryptospi  
+* plugin, in the case where actual keys are stored in hardware. This 
+* plugin does the following:-
+* a) extracts the key from Crypto Token HAI
+* b) performs the operations (signing and decryption)
+* c) returns the results to the spi plugin. 
+* Licensees can use this plug-in as a reference for implementing a 
+* similar plug-in.
+*
+*/
+
+
+TARGET 		cryptospihai.dll
+TARGETTYPE	dll
+
+CAPABILITY 	All -Tcb
+
+UID 		0xA000D693 0xA000D694
+VENDORID	0x70000001
+
+DEFFILE cryptospihai.def
+
+USERINCLUDE		.
+SYSTEMINCLUDE /epoc32/include
+USERINCLUDE	../../../../../crypto/weakcryptospi/inc/spi
+USERINCLUDE	../../../../../cryptoservices/filebasedcertificateandkeystores/test/tcryptotokenhai
+
+SOURCEPaTH ../src
+SOURCE		cryptospihai.cpp
+
+LIBRARY		euser.lib
+LIBRARY		cryptospi.lib
+LIBRARY		tcryptotokenhai.lib
+LIBRARY     cryptography.lib
+
+SMPSAFE
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoplugins/cryptospiplugins/test/dummyecchwplugin/group/dummyecchwplugin.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,51 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* dummyecchwplugin.dll is a cryptospi plug-in which provides a dummy 
+* implementation of Ecc. This is used for reference and testing 
+* purposes only. This does not actually implement the ecc algorithm. 
+* This plug-in performs cryptographic operations without having access 
+* to the actual key. It accomplishes this in the following way:-
+* a) extracts the key handle
+* b) uses this handle to invoke cryptospihai.dll. cryptospihai.dll 
+* performs the operations and returns the output back.
+* Licensees can use this plug-in as a reference for implementing a 
+* similar plug-in.
+*
+*/
+
+
+TARGET 		dummyecchwplugin.dll
+TARGETTYPE	dll
+
+CAPABILITY 	All -Tcb
+
+UID 		0xA000D695 0xA000D696
+VENDORID	0x70000001
+
+DEFFILE dummyecchwplugin.def
+
+USERINCLUDE		.
+USERINCLUDE	../../../../../crypto/weakcryptospi/inc/spi
+SYSTEMINCLUDE /epoc32/include
+
+SOURCEPATH ../src
+SOURCE		pluginentry.cpp
+SOURCE		dummyeccimpl.cpp
+SOURCE		dummyeccsignerimpl.cpp
+
+LIBRARY		euser.lib cryptospi.lib cryptospihai.lib
+
+SMPSAFE
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoplugins/cryptospiplugins/test/dummyecchwplugin/src/cryptospihai.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,109 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include "cryptospihai.h"
+#include "keys.h"
+#include <e32def.h>
+#include <cryptospi/cryptohashapi.h>
+#include <pbedata.h>
+#include "tcryptotokenhai.h"
+
+using namespace CryptoSpiHai;
+
+/**
+ * Performs the signing operation.
+ * 
+ * A cryptoSPI plugin uses this, when it does not have access to the  
+ * actual key.
+ * 
+ * @param aKeyHandle The key handle retrieved from hw crypto 
+ * token
+ * @param aInput The text which has to be signed. This is not being 
+ * used due to signing logic used in this function.
+ * @param aSignature Output param. The cryptoSPI signature.
+ * 
+ * @leave Can leave with all the leave codes present in HAI of 
+ * reference crypto token implementation.
+ * 
+ * @note This function does not actually implement ECC signing. This 
+ * function just shows how the private key can be extracted from 
+ * crypto token hai. This function just returns the private key as 
+ * output signature. The caller can verify the signature by ensuring 
+ * that test case has same public and private keys and then comparing 
+ * the signature with public key.
+ */
+EXPORT_C void CCryptoSpiHai::SignL(TInt aKeyHandle,
+        const TDesC8& /*aInput*/, CryptoSpi::CCryptoParams& aSignature)
+    {
+    MCTToken* token = NULL;
+    /**
+     * We are dereferencing a NULL pointer below. We need to pass 
+     * MCTToken here. It is not used currently.
+     */
+    CCryptoTokenHai *cryptoTokenHai = CCryptoTokenHai::NewLC(token);
+
+    //Call Crypto Token HAI to get the actual key
+    HBufC8* actualKey = NULL;
+    cryptoTokenHai->ExportPrivateKeyL(aKeyHandle, actualKey);
+    CleanupStack::PushL(actualKey);
+
+    aSignature.AddL(*actualKey, CryptoSpi::KEccKeyTypeUid);
+    CleanupStack::PopAndDestroy(actualKey);
+    CleanupStack::PopAndDestroy(cryptoTokenHai);
+    }
+
+/**
+ * Performs the decryption operation.
+ * 
+ * A cryptoSPI plugin uses this, when it does not have access to the 
+ * actual key.
+ * 
+ * @param aKeyHandle The key handle retrieved from hw crypto token
+ * @param aInput The cipher text. This is not being used due to signing  
+ * logic used in this function.
+ * @param aOutput Output param. The decrypted plain text
+ * 
+ * @leave Can leave with all the leave codes present in HAI of 
+ * reference crypto token implementation.
+ *
+ * @note This function does not actually implement ECC decryption. This 
+ * function just shows how the private key can be extracted from 
+ * crypto token hai. This function just returns the private key as 
+ * decrypted text. The caller can verify the decryption by ensuring 
+ * that test case has same public and private keys and then comparing 
+ * the decrypted text with public key. 
+ */
+EXPORT_C void CCryptoSpiHai::DecryptL(TInt aKeyHandle,
+        const TDesC8& /*aInput*/, TDes8& aOutput)
+    {
+    MCTToken* token = NULL;
+    CCryptoTokenHai *cryptoTokenHai = CCryptoTokenHai::NewLC(token);
+
+    //Call Crypto Token HAI to get the actual key
+    HBufC8* actualKey = NULL;
+    cryptoTokenHai->ExportPrivateKeyL(aKeyHandle, actualKey);
+    CleanupStack::PushL(actualKey);
+    aOutput.Copy(*actualKey);
+
+    CleanupStack::PopAndDestroy(actualKey);
+    CleanupStack::PopAndDestroy(cryptoTokenHai);
+    }
+
+// End of file
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoplugins/cryptospiplugins/test/dummyecchwplugin/src/cryptospihai.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,81 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+/**
+ @file
+ @internalComponent
+ @released
+ */
+#ifndef	CCRYPTOSPIHAI_H
+#define	CCRYPTOSPIHAI_H
+
+#include <e32base.h>
+#include <e32cmn.h>
+#include <cryptospi/cryptospidef.h>
+#include <cryptospi/cryptoparams.h>
+
+namespace CryptoSpiHai
+    {
+    /**
+     * This class forms the hardware abstraction interface part of the 
+     * cryptoSPI. In the production code, this should be replaced by a 
+     * device driver. This layer abstracts the hardware from a cryptoSPI
+     * plugin. It interacts with the HAI of crypto token to get the actual 
+     * key and performs the operations. This layer should be implemented in
+     * kernel space.
+     */
+    NONSHARABLE_CLASS(CCryptoSpiHai) : public CBase
+        {
+    public:
+        /**
+         * Performs the signing operation.
+         * 
+         * A cryptoSPI plugin uses this, when it does not have access 
+         * to the actual key.
+         * 
+         * @param aKeyHandle The key handle retrieved from hw crypto 
+         * token
+         * @param aInput The text which has to be signed.
+         * @param aSignature Output param. The cryptoSPI signature.
+         * 
+         * @leave Can leave with all the leave codes present in HAI of 
+         * reference crypto token implementation. 
+         */
+        IMPORT_C static void SignL(TInt aKeyHandle,
+                const TDesC8& aInput, CryptoSpi::CCryptoParams& aSignature);
+        
+        /**
+         * Performs the decryption operation.
+         * 
+         * A cryptoSPI plugin uses this, when it does not have access 
+         * to the actual key.
+         * 
+         * @param aKeyHandle The key handle retrieved from hw crypto 
+         * token
+         * @param aInput The cipher text.
+         * @param aOutput Output param. The decrypted plain text
+         * 
+         * @leave Can leave with all the leave codes present in HAI of 
+         * reference crypto token implementation. 
+         */        
+        IMPORT_C static void DecryptL(TInt aKeyHandle,
+                const TDesC8& aInput, TDes8& aOuput);
+        };
+    }
+
+#endif	//	CCRYPTOSPIHAI_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoplugins/cryptospiplugins/test/dummyecchwplugin/src/dummyeccimpl.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,189 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include "dummyeccimpl.h"
+
+#include <e32def.h>
+#include <cryptospi/cryptospidef.h>
+#include "keys.h"
+#include <cryptospi/plugincharacteristics.h>
+#include "pluginconfig.h"
+#include "cryptospihai.h"
+
+using namespace DummyEccHwCrypto;
+using namespace CryptoSpiHai;
+
+/**
+ * These are just randomly selected numbers. There is no logic behind 
+ * their values.
+ */ 
+const TInt KMaxOutputLength = 50;
+const TInt KMaxInputLength = 50;
+
+CDummyECCCipherImpl* CDummyECCCipherImpl::NewL(const CKey& aKey,
+        TUid aCryptoMode, TUid aPaddingMode)
+    {
+    CDummyECCCipherImpl* self = CDummyECCCipherImpl::NewLC(aKey, aCryptoMode,
+            aPaddingMode);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+CDummyECCCipherImpl* CDummyECCCipherImpl::NewLC(const CKey& aKey,
+        TUid aCryptoMode, TUid aPaddingMode)
+    {
+    CDummyECCCipherImpl* self = new (ELeave) CDummyECCCipherImpl(aCryptoMode,
+            aPaddingMode);
+    CleanupStack::PushL(self);
+    self->ConstructL(aKey);
+    return self;
+    }
+
+CDummyECCCipherImpl::CDummyECCCipherImpl(TUid aCryptoMode, TUid aPaddingMode) :
+    iCryptoMode(aCryptoMode), iPaddingMode(aPaddingMode)
+    {
+    }
+
+void CDummyECCCipherImpl::ConstructL(const CKey& aKey)
+    {
+    SetKeyL(aKey);
+    }
+
+// MPlugin Interface Start
+void CDummyECCCipherImpl::Close()
+    {
+    delete this;
+    }
+
+void CDummyECCCipherImpl::Reset()
+    {
+    }
+
+void CDummyECCCipherImpl::GetCharacteristicsL(
+        const TCharacteristics*& aPluginCharacteristics)
+    {
+    TInt numCiphers = sizeof(KAsymmetricCipherCharacteristics)
+            / sizeof(TAsymmetricCipherCharacteristics*);
+    TInt32 implUid = ImplementationUid().iUid;
+    for (TInt i = 0; i < numCiphers; ++i)
+        {
+        if (KAsymmetricCipherCharacteristics[i]->cmn.iImplementationUID
+                == implUid)
+            {
+            aPluginCharacteristics = KAsymmetricCipherCharacteristics[i];
+            break;
+            }
+        }
+    }
+
+const CExtendedCharacteristics* CDummyECCCipherImpl::GetExtendedCharacteristicsL()
+    {
+    // All Symbian software plug-ins have unlimited concurrency, cannot be reserved
+    // for exclusive use and are not CERTIFIED to be standards compliant.
+    return CExtendedCharacteristics::NewL(KMaxTInt, EFalse);
+    }
+
+TAny* CDummyECCCipherImpl::GetExtension(TUid /* aExtensionId */)
+    {
+    return 0;
+    }
+// End of MPlugin Interface
+
+// MAsymmetricCipherBase Interface
+void CDummyECCCipherImpl::SetKeyL(const CKey& aKey)
+    {
+    // delete any previous key and recreate the key
+    delete iKey;
+    iKey = NULL;
+    iKey = CKey::NewL(aKey);
+    }
+
+void CDummyECCCipherImpl::SetCryptoModeL(TUid aCryptoMode)
+    {
+    switch (aCryptoMode.iUid)
+        {
+        case KCryptoModeEncrypt:
+        case KCryptoModeDecrypt:
+            break;
+        default:
+            User::Leave(KErrNotSupported);
+        }
+    iCryptoMode = aCryptoMode;
+    }
+
+void CDummyECCCipherImpl::SetPaddingModeL(TUid /* aPaddingMode */)
+    {
+    User::Leave(KErrNotSupported);
+    }
+
+TInt CDummyECCCipherImpl::GetMaximumInputLengthL() const
+    {
+    return KMaxInputLength;
+    }
+
+TInt CDummyECCCipherImpl::GetMaximumOutputLengthL() const
+    {
+    return KMaxOutputLength;
+    }
+// End of MAsymmetricCipherBase Interface
+
+// MAsymmetricCipher Interface
+void CDummyECCCipherImpl::ProcessL(const TDesC8& aInput, TDes8& aOutput)
+    {
+    if (iCryptoMode.iUid == KCryptoModeEncrypt)
+        {
+        EncryptL(aInput, aOutput);
+        }
+    else
+        {
+        DecryptL(aInput, aOutput);
+        }
+    }
+
+TUid CDummyECCCipherImpl::ImplementationUid() const
+    {
+    return KCryptoPluginEccCipherUid;
+    }
+
+CDummyECCCipherImpl::~CDummyECCCipherImpl()
+    {
+    delete iKey;
+    }
+
+void CDummyECCCipherImpl::EncryptL(const TDesC8& /* aInput */, TDes8& /* aOuput */)
+    {
+    User::Leave(KErrNotSupported);
+    }
+
+void CDummyECCCipherImpl::DecryptL(const TDesC8& aInput, TDes8& aOutput)
+    {
+    if (iKey->IsPresent(KPassedHandleToKeyUid))
+        {
+        const TInt& keyHandle = iKey->GetTIntL(KPassedHandleToKeyUid);
+
+        // Invoke the Spi HAI to perform the operation
+        CCryptoSpiHai::DecryptL(keyHandle, aInput, aOutput);
+        }
+    else
+        {
+        User::Leave(KErrNotSupported);
+        }
+    }
+// End of file
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoplugins/cryptospiplugins/test/dummyecchwplugin/src/dummyeccimpl.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,97 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+/**
+ @file
+ @internalComponent
+ @released
+*/
+#ifndef	CDUMMYECCIMPL_H
+#define	CDUMMYECCIMPL_H
+
+#include <e32base.h>
+#include <e32cmn.h>
+#include <cryptospi/cryptospidef.h>
+#include "keys.h"
+#include "asymmetriccipherplugin.h"
+
+namespace DummyEccHwCrypto
+	{
+	using namespace CryptoSpi;
+	
+	/**
+	 * Implements the MAsymmetricCipher interface.
+	 * 
+	 * This should be used to create the cipher object to perform 
+	 * encryption / decryption using ECC.
+	 */
+	NONSHARABLE_CLASS(CDummyECCCipherImpl) : public CBase, public MAsymmetricCipher
+		{
+	public:
+	    static CDummyECCCipherImpl* NewL(const CKey& aKey, TUid aCryptoMode, TUid aPaddingMode);
+	    static CDummyECCCipherImpl* NewLC(const CKey& aKey, TUid aCryptoMode, TUid aPaddingMode);
+	    
+	    // MPlugin Interface
+	    void Close();
+	    void Reset();
+	    void GetCharacteristicsL(const TCharacteristics*& aPluginCharacteristics);
+	    const CExtendedCharacteristics* GetExtendedCharacteristicsL();
+	    TAny* GetExtension(TUid aExtensionId); 
+	    // End of MPlugin Interface
+	    
+	    // MAsymmetricCipherBase Interface
+	    void SetKeyL(const CKey& aKey);
+	    void SetCryptoModeL(TUid aCryptoMode);
+	    void SetPaddingModeL(TUid aPaddingMode);
+	    TInt GetMaximumInputLengthL() const;
+	    TInt GetMaximumOutputLengthL() const;
+	    // End of MAsymmetricCipherBase Interface
+	    
+		// MAsymmetricCipher Interface
+		void ProcessL(const TDesC8& aInput, TDes8& aOutput);
+		
+		TUid ImplementationUid() const;
+		// Destructor
+		~CDummyECCCipherImpl();
+
+	private:
+		CDummyECCCipherImpl(TUid aCryptoMode, TUid aPaddingMode);
+		void ConstructL(const CKey& aKey);
+		void DecryptL(const TDesC8& aInput, TDes8& aOutput);
+		void EncryptL(const TDesC8& aInput, TDes8& aOutput);
+		
+	private:
+		/* The key extracted from a CKey object. This would just have 
+		 * a handle to the key stored in hardware. Hence the actual key 
+		 * would not be available to the user of this cryptoSPI plugin.
+		 */
+	    CKey* iKey;
+		
+		/// encryption or decryption
+		TUid iCryptoMode;		
+
+		/* The current padding scheme. This is not being used in the 
+		 * reference implementation.
+		 */
+		TUid iPaddingMode;
+		};
+
+			
+	}
+
+#endif	//	CDUMMYECCIMPL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoplugins/cryptospiplugins/test/dummyecchwplugin/src/dummyeccsignerimpl.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,147 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include "dummyeccsignerimpl.h"
+#include "keys.h"
+#include "pluginconfig.h"
+#include "cryptospihai.h"
+
+using namespace DummyEccHwCrypto;
+using namespace CryptoSpiHai;
+
+const TInt KMaxSignerOutputLength = 50;
+const TInt KMaxSignerInputLength = 50;
+
+// CDummyECCSignerImpl
+CDummyECCSignerImpl* CDummyECCSignerImpl::NewL(const CKey& aKey,
+        TUid aPaddingMode)
+    {
+    CDummyECCSignerImpl* self =
+            CDummyECCSignerImpl::NewLC(aKey, aPaddingMode);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+CDummyECCSignerImpl* CDummyECCSignerImpl::NewLC(const CKey& aKey,
+        TUid aPaddingMode)
+    {
+    CDummyECCSignerImpl* self =
+            new (ELeave) CDummyECCSignerImpl(aPaddingMode);
+    CleanupStack::PushL(self);
+    self->ConstructL(aKey);
+    return self;
+    }
+
+CDummyECCSignerImpl::CDummyECCSignerImpl(TUid aPaddingMode) :
+    iPaddingMode(aPaddingMode)
+    {
+    }
+
+CDummyECCSignerImpl::~CDummyECCSignerImpl()
+    {
+    delete iKey;
+    }
+
+void CDummyECCSignerImpl::ConstructL(const CKey& aKey)
+    {
+    SetKeyL(aKey);
+    }
+
+// MPlugin Interface
+void CDummyECCSignerImpl::Close()
+    {
+    delete this;
+    }
+void CDummyECCSignerImpl::Reset()
+    {
+    }
+void CDummyECCSignerImpl::GetCharacteristicsL(
+        const TCharacteristics*& aPluginCharacteristics)
+    {
+    TInt numCiphers = sizeof(KSignerCharacteristics)
+            / sizeof(TAsymmetricSignatureCharacteristics*);
+    TInt32 implUid = ImplementationUid().iUid;
+    for (TInt i = 0; i < numCiphers; ++i)
+        {
+        if (KSignerCharacteristics[i]->cmn.iImplementationUID == implUid)
+            {
+            aPluginCharacteristics = KSignerCharacteristics[i];
+            break;
+            }
+        }
+    }
+
+const CExtendedCharacteristics* CDummyECCSignerImpl::GetExtendedCharacteristicsL()
+    {
+    // All Symbian software plug-ins have unlimited concurrency, cannot be reserved
+    // for exclusive use and are not CERTIFIED to be standards compliant.
+    return CExtendedCharacteristics::NewL(KMaxTInt, EFalse);
+    }
+
+TAny* CDummyECCSignerImpl::GetExtension(TUid /* aExtensionId */)
+    {
+    return 0;
+    }
+// End of MPlugin Interface
+
+// MSignatureBase Interface
+void CDummyECCSignerImpl::SetPaddingModeL(TUid /* aPaddingMode */)
+    {
+    User::Leave(KErrNotSupported);
+    }
+
+void CDummyECCSignerImpl::SetKeyL(const CKey& aKey)
+    {
+    // delete any previous key and recreate the key
+    delete iKey;
+    iKey = NULL;
+    iKey = CKey::NewL(aKey);
+    }
+
+TInt CDummyECCSignerImpl::GetMaximumInputLengthL() const
+    {
+    return KMaxSignerInputLength;
+    }
+
+TInt CDummyECCSignerImpl::GetMaximumOutputLengthL() const
+    {
+    return KMaxSignerOutputLength;
+    }
+
+TUid CDummyECCSignerImpl::ImplementationUid() const
+    {
+    return KCryptoPluginEccSignerUid;
+    }
+
+void CDummyECCSignerImpl::SignL(const TDesC8& aInput,
+        CCryptoParams& aSignature)
+    {
+    if (iKey->IsPresent(KPassedHandleToKeyUid))
+        {
+        const TInt keyHandle = iKey->GetTIntL(KPassedHandleToKeyUid);
+
+        // Invoke the Spi HAI to perform the operation
+        CCryptoSpiHai::SignL(keyHandle, aInput, aSignature);
+        }
+    else
+        {
+        User::Leave(KErrNotSupported);
+        }
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoplugins/cryptospiplugins/test/dummyecchwplugin/src/dummyeccsignerimpl.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,85 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+/**
+ @file
+ @internalComponent
+ @released
+*/
+#ifndef	CDUMMYECCSIGNERIMPL_H
+#define	CDUMMYECCSIGNERIMPL_H
+#include <e32base.h>
+#include <e32cmn.h>
+#include "keys.h"
+#include "signerplugin.h"
+
+namespace DummyEccHwCrypto
+	{
+	using namespace CryptoSpi;
+
+    /**
+     * Implements the MSigner interface.
+     * 
+     * This should be used to create the signer object to perform 
+     * signing using ECC.
+     */
+	NONSHARABLE_CLASS(CDummyECCSignerImpl) : public CBase, public MSigner
+		{
+	public:
+		static CDummyECCSignerImpl* NewL(const CryptoSpi::CKey& aKey, 
+			TUid aPaddingMode);
+		static CDummyECCSignerImpl* NewLC(const CryptoSpi::CKey& aKey, 
+			TUid aPaddingMode);
+
+		// MPlugin Interface
+		void Close();
+        void Reset();
+        void GetCharacteristicsL(const TCharacteristics*& aPluginCharacteristics);
+        const CExtendedCharacteristics* GetExtendedCharacteristicsL();
+        TAny* GetExtension(TUid aExtensionId);
+        // End of MPlugin Interface    
+        
+        // MSignatureBase inteface
+		void SetPaddingModeL(TUid aPaddingMode);
+		void SetKeyL(const CKey& aPrivateKey);
+		TInt GetMaximumInputLengthL() const;
+		TInt GetMaximumOutputLengthL() const;
+		// End of MSignatureBase inteface
+		
+		// MSigner interface
+		void SignL(const TDesC8& aInput, CCryptoParams& aSignature);
+
+		TUid ImplementationUid() const;
+		/// Destructor
+		~CDummyECCSignerImpl();
+
+	private:
+		CDummyECCSignerImpl(TUid aPaddingMode);
+		void ConstructL(const CryptoSpi::CKey& aKey);
+
+	private:
+	    /* The key extracted from a CKey object. This would just have 
+         * a handle to the key stored in hardware. Hence the actual key 
+         * would not be available to the user of this cryptoSPI plugin.
+         */
+        CKey* iKey;
+	    TUid iPaddingMode;
+		};
+	}
+
+#endif //CDUMMYECCSIGNERIMPL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoplugins/cryptospiplugins/test/dummyecchwplugin/src/pluginconfig.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,133 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+/**
+ @file
+ @internalComponent
+ @released
+ */
+#ifndef CCRYPTOAPI_DUMMYECCHWPLUGINCONFIG_H
+#define CCRYPTOAPI_DUMMYECCHWPLUGINCONFIG_H
+
+#include <cryptospi/cryptoparams.h>
+#include <e32cmn.h>
+#include <cryptospi/romlit.h>
+#include "cryptospi/cryptospidef.h"
+
+namespace DummyEccHwCrypto
+    {
+    using namespace CryptoSpi;
+    /**
+     Creator Name
+     */
+    _ROMLIT16(KNokia, "Nokia");
+    /**
+     implementation Name
+     */
+    _ROMLIT16(KEccCipherDescription, "Ecc");
+    _ROMLIT16(KEccSignerDescription, "EccSigner");
+
+    /**
+     ECC Cipher Characteristics
+     */
+    static const TInt32 KCryptoPluginEccCipher = 0xA000D697;
+    static const TUid KCryptoPluginEccCipherUid =
+        {
+        KCryptoPluginEccCipher
+        };
+    static const TInt32 KECCCipherPaddingModes[] =
+        {
+        KPaddingModeNone
+        };
+
+    static const TAsymmetricCipherCharacteristics KECC_1 =
+        {
+        KAsymmetricCipherInterface, /* iInterfaceUID */
+        KAlgorithmCipherEcc, /* iAlgorithmUID */
+        KCryptoPluginEccCipher, /* iImplementationUID */
+        &KNokia, /* iCreatorName */
+        EFalse, /* iIsFIPSApproved */
+        ETrue, /* iIsHardwareSupported */
+        6, /* iMaxConcurrencySupported */
+        &KEccCipherDescription, /* iAlgorithmName */
+        100, /* iLatency */
+        90, /* iThroughput */
+        360, /* iMaximumKeyLength */
+        KECCCipherPaddingModes, /* iSupportedPaddingModes */
+        sizeof(KECCCipherPaddingModes) / sizeof(KECCCipherPaddingModes[0]), /* iPaddingModeNum */
+        3
+        /* iKeySupportMode */
+        };
+
+    /**
+     ECC Signer Characteristics
+     */
+    static const TInt32 KCryptoPluginEccSigner = 0xA000D698;
+    static const TUid KCryptoPluginEccSignerUid =
+        {
+        KCryptoPluginEccSigner
+        };
+    static const TInt32 KECCSignerPaddingModes[] =
+        {
+        KPaddingModeNone
+        };
+
+    static const TAsymmetricSignatureCharacteristics KECCSigner_1 =
+        {
+        KSignerInterface, /* iInterfaceUID */
+        KAlgorithmSignerEcc, /* iAlgorithmUID */
+        KCryptoPluginEccSigner, /* iImplementationUID */
+        &KNokia, /* iCreatorName */
+        EFalse, /* iIsFIPSApproved */
+        ETrue, /* iIsHardwareSupported */
+        6, /* iMaxConcurrencySupported */
+        &KEccSignerDescription, /* iAlgorithmName */
+        100, /* iLatency */
+        90, /* iThroughput */
+        360, /* iMaximumKeyLength */
+        KECCCipherPaddingModes, /* iSupportedPaddingModes */
+        sizeof(KECCCipherPaddingModes) / sizeof(KECCCipherPaddingModes[0]), /* iPaddingModeNum */
+        3
+        /* iKeySupportMode */
+        };
+
+    /**
+     For each crypto algorithm type implemented in this plugin list the characteristics
+     */
+
+    /**
+     Asymmetric Cipher implementation characteristic table
+     */
+    static const TAsymmetricCipherCharacteristics
+            * const KAsymmetricCipherCharacteristics[] =
+                {
+                &KECC_1
+                };
+
+    /**
+     Signer implementation characteristic table
+     */
+    static const TAsymmetricSignatureCharacteristics
+            * const KSignerCharacteristics[] =
+                {
+                &KECCSigner_1
+                };
+
+    }
+
+#endif //CCRYPTOAPI_DUMMYECCHWPLUGINCONFIG_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoplugins/cryptospiplugins/test/dummyecchwplugin/src/pluginentry.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,141 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include "pluginentry.h"
+#include "pluginconfig.h"
+#include "dummyeccimpl.h"
+#include "dummyeccsignerimpl.h"
+#include "keys.h"
+#include <cryptospi/cryptospidef.h>
+
+using namespace DummyEccHwCrypto;
+
+EXPORT_C const TCharacteristics** CCryptoPluginEntry::Enumerate(
+        TUid aInterface, TInt& aNumPlugins)
+    {
+    const TCharacteristics** ptr(0);
+
+    switch (aInterface.iUid)
+        {
+        case KAsymmetricCipherInterface:
+            {
+            aNumPlugins = sizeof(KAsymmetricCipherCharacteristics)
+                    / sizeof(TAsymmetricCipherCharacteristics*);
+            ptr
+                    = (const TCharacteristics**) &KAsymmetricCipherCharacteristics[0];
+            }
+            break;
+
+        case KSignerInterface:
+            {
+            aNumPlugins = sizeof(KSignerCharacteristics)
+                    / sizeof(TAsymmetricSignatureCharacteristics*);
+            ptr = (const TCharacteristics**) &KSignerCharacteristics[0];
+            }
+            break;
+
+        default:
+            aNumPlugins = 0;
+        }
+
+    return ptr;
+    }
+
+EXPORT_C void CCryptoPluginEntry::GetExtendedCharacteristicsL(
+        TUid /* aImplementationUid */, CExtendedCharacteristics*& /* aExt */)
+    {
+    User::Leave(KErrNotSupported);
+    }   
+
+EXPORT_C void CCryptoPluginEntry::CreateAsymmetricCipherL(
+        MAsymmetricCipher*& aPlugin, TUid aImplementationId,
+        const CKey& aKey, TUid aCryptoMode, TUid aPaddingMode,
+        const CCryptoParams* /* aAlgorithmParams */)
+    {
+    switch (aImplementationId.iUid)
+        {
+        case KCryptoPluginEccCipher:
+            {
+            aPlugin = CDummyECCCipherImpl::NewL(aKey, aCryptoMode, aPaddingMode);
+            }
+            break;
+
+        default:
+            User::Leave(KErrNotFound);
+        }
+    }
+
+EXPORT_C void CCryptoPluginEntry::CreateAsymmetricSignerL(
+        MSigner*& aPlugin, TUid aImplementationId,
+        const CKey& aKey, TUid aPaddingMode, const CCryptoParams* /* aAlgorithmParams */)
+    {
+    switch (aImplementationId.iUid)
+        {
+        case KCryptoPluginEccSigner:
+            {
+            aPlugin = CDummyECCSignerImpl::NewL(aKey, aPaddingMode);
+            }
+            break;
+
+        default:
+            User::Leave(KErrNotFound);
+        }
+    }
+
+EXPORT_C void CCryptoPluginEntry::CreateAsymmetricVerifierL(
+        MVerifier*& /*aPlugin*/, TUid /*aImplementationId*/,
+        const CKey& /*aKey*/, TUid /*aPaddingMode*/, const CCryptoParams* /*aAlgorithmParams*/)
+    {
+    User::Leave(KErrNotFound);
+    }
+
+EXPORT_C void CCryptoPluginEntry::CreateHashL(MHash*& /*aPlugin*/,
+        TUid /*aImplementationId*/, TUid /*aOperationMode*/,
+        const CKey* /*aKey*/, const CCryptoParams* /*aAlgorithmParams*/)
+    {
+    User::Leave(KErrNotFound);
+    }
+
+EXPORT_C void CCryptoPluginEntry::CreateKeyAgreementL(
+        MKeyAgreement*& /*aPlugin*/, TUid /*aImplementationId*/,
+        const CKey& /*aPrivateKey*/, const CCryptoParams* /*aAlgorithmParams*/)
+    {
+    User::Leave(KErrNotFound);
+    }
+
+EXPORT_C void CCryptoPluginEntry::CreateKeyPairGeneratorL(
+        MKeyPairGenerator*& /*aPlugin*/, TUid /*aImplementationId*/,
+        const CCryptoParams* /*aAlgorithmParams*/)
+    {
+    User::Leave(KErrNotFound);
+    }
+
+EXPORT_C void CCryptoPluginEntry::CreateRandomL(MRandom*& /*aPlugin*/,
+        TUid /*aImplementationId*/, const CCryptoParams* /*aAlgorithmParams*/)
+    {
+    User::Leave(KErrNotFound);
+    }
+
+EXPORT_C void CCryptoPluginEntry::CreateSymmetricCipherL(
+        MSymmetricCipher*& /*aPlugin*/, TUid /*aImplementationId*/, const CKey& /*aKey*/,
+        TUid /*aCryptoMode*/, TUid /*aOperationMode*/, TUid /*aPadding*/,
+        const CCryptoParams* /*aAlgorithmParams*/)
+    {
+    User::Leave(KErrNotSupported);
+    }
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoplugins/cryptospiplugins/test/dummyecchwplugin/src/pluginentry.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,210 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+/**
+ * @file
+ * @internalComponent
+ * @released
+ */
+#ifndef CPLUGINENTRY_H
+#define CPLUGINENTRY_H
+
+#include <cryptospi/cryptoparams.h>
+#include <e32cmn.h>
+#include <cryptospi/cryptospidef.h>
+#include "keys.h"
+#include <cryptospi/hashplugin.h>
+#include <cryptospi/randomplugin.h>
+#include "symmetriccipherplugin.h"
+#include "asymmetriccipherplugin.h"
+#include "signerplugin.h"
+#include "verifierplugin.h"
+#include "keypairgeneratorplugin.h"
+#include "keyagreementplugin.h"
+
+using namespace CryptoSpi;
+
+class CCryptoPluginEntry
+    {
+public:
+    /**
+     * Enumerates the set of plug-ins supported by the module for a given interface
+     * e.g. all of the hash plug-ins.
+     *
+     * @param aInterface The UID of the plug-in interface type. If the UID is not recognised
+     * then the NULL pointer must be returned.
+     * @param aNumPlugins The number of plug-in characteristics objects in the result.
+     */
+    IMPORT_C static const TCharacteristics** Enumerate(TUid aInterface,
+            TInt& aNumPlugins);
+
+    IMPORT_C static void GetExtendedCharacteristicsL(TUid aImplementationUid,
+            CExtendedCharacteristics*&);
+    
+    /**
+     * Creates a new instance of an asymmetric cipher
+     *
+     * @param aPlugin A reference to a pointer that should be set to point to 
+     * the new asymmetric cipher object.
+     * @param aImplementationId The UID of the asymmetric cipher plug-in to instantiate.
+     * @param aKey The encryption/decryption key.
+     * @param aPaddingMode The padding mode.
+     * @param aAlgorithmParams The parameters that are specific to a particular 
+     * algorithm. This is for extendibility and will normally be null.
+     * 
+     * @leave Function can leave with any system wide error codes in 
+     * case of failure.
+     */
+    IMPORT_C static void CreateAsymmetricCipherL(MAsymmetricCipher*& aPlugin,
+            TUid aImplementationId, const CKey& aKey, TUid aCryptoMode,
+            TUid aPaddingMode, const CCryptoParams* aAlgorithmParams);
+
+    /**
+     * Creates a new instance of an asymmetric signer.
+     *
+     * @param aPlugin A reference to a pointer that should be set to point to 
+     * the new asymmetric signer object.
+     * @param aImplementationId The UID of the signer plug-in to instantiate.
+     * @param aKey The signing key.
+     * @param aPaddingMode The padding mode.
+     * @param aAlgorithmParams The parameters that are specific to a particular 
+     * algorithm. This is for extendibility and will normally be null.
+     * 
+     * @leave Function can leave with any system wide error codes in 
+     * case of failure.
+     */
+    IMPORT_C static void CreateAsymmetricSignerL(MSigner*& aPlugin,
+            TUid aImplementationId, const CKey& aKey, TUid aPaddingMode,
+            const CCryptoParams* aAlgorithmParams);
+
+    /**
+     * Creates a new instance of an asymmetric verifier.
+     *
+     * @param aPlugin A reference to a pointer that should be set to point to 
+     * the new asymmetric verifier object.
+     * @param aImplementationId The UID of the verifier plug-in to instantiate.
+     * @param aKey The key to verify the signature with.
+     * @param aAlgorithmParams The parameters that are specific to a particular 
+     * algorithm. This is for extendibility and will normally be null.
+     *
+     * @leave Function can leave with any system wide error codes in 
+     * case of failure.
+     */
+    IMPORT_C static void CreateAsymmetricVerifierL(MVerifier*& aPlugin,
+                                                   TUid aImplementationId,
+                                                   const CKey& aKey,
+                                                   TUid aPaddingMode,
+                                                   const CCryptoParams* aAlgorithmParams);
+
+    /**
+     * Creates a new instance of a Hash object.
+     *
+     * @param aPlugin A reference to a pointer that should be set to point to 
+     * the new hash object.
+     * @param aImplementationId The UID of the hash plug-in to instantiate.
+     * @param aAlgorithmParams The parameters that are specific to a particular 
+     * algorithm. This is for extendibility and will normally be null.
+     *
+     * @leave Function can leave with any system wide error codes in 
+     * case of failure.
+     */
+    IMPORT_C static void CreateHashL(MHash*& aPlugin,
+                                     TUid aImplementationId,
+                                     TUid aOperationMode,
+                                     const CKey* aKey,
+                                     const CCryptoParams* aAlgorithmParams);
+
+    /**
+     * Creates a new instance of a Random object.
+     *
+     * @param aPlugin A reference to a pointer that should be set to point to the new random object.
+     * @param aImplementationId The UID of the random plug-in to instantiate.
+     * @param aAlgorithmParams The parameters that are specific to a particular 
+     * algorithm. This is for extendibility and will normally be null.
+     *
+     * @leave Function can leave with any system wide error codes in 
+     * case of failure.
+     */
+    IMPORT_C static void CreateRandomL(MRandom*& aPlugin,
+                                       TUid aImplementationId,
+                                       const CCryptoParams* aAlgorithmParams);
+
+
+    /**
+     * Creates a new instance of a key agreement system.
+     *
+     * @param aPlugin A reference to a pointer that should be set to point to 
+     * the new asymmetric key pair generator object.
+     * @param aImplementationId The UID of the key agreement plug-in to instantiate.
+     * @param aPrivateKey The private key to combine with the other parties public key
+     * during the agreement.
+     * @param aAlgorithmParams The parameters that are specific to a particular 
+     * algorithm. This is for extendibility and will normally be null.
+     *
+     * @leave Function can leave with any system wide error codes in 
+     * case of failure.
+     */
+    IMPORT_C static void CreateKeyAgreementL(MKeyAgreement*& aPlugin,
+                                             TUid aImplementationId,
+                                             const CKey& aPrivateKey,
+                                             const CCryptoParams* aAlgorithmParams);
+
+    /**
+     * Creates a new instance of an asymmetric key pair generator.
+     *
+     * @param aPlugin A reference to a pointer that should be set to point to 
+     * the new asymmetric key pair generator object.
+     * @param aImplementationId The UID of the verifier plug-in to instantiate.
+     * @param aAlgorithmParams The parameters that are specific to a particular 
+     * algorithm. This is for extendibility and will normally be null.
+     *
+     * @leave Function can leave with any system wide error codes in 
+     * case of failure.
+     */
+    IMPORT_C static void CreateKeyPairGeneratorL(MKeyPairGenerator*& aPlugin,
+                                                 TUid aImplementationId,
+                                                 const CCryptoParams* aAlgorithmParams);
+                                        
+    /**
+     * Creates a new instance of a symmetric cipher
+     *
+     * @param aPlugin A reference to a pointer that should be set to point to 
+     * the new asymmetric object.
+     * @param aImplementationId The UID of the symmetric cipher plug-in to instantiate.
+     * @param aKey The encryption/decryption key.
+     * @param aCryptoMode Encrypt or Decrypt.
+     * @param aOperationMode the block cipher mode to use ECB, CBC, CTR etc
+     * @param aPadding the padding scheme to use.
+     * @param aAlgorithmParams The parameters that are specific to a particular 
+     * algorithm. This is for extendibility and will normally be null.
+     *
+     * @leave Function can leave with any system wide error codes in 
+     * case of failure.
+     */
+    IMPORT_C static void CreateSymmetricCipherL(MSymmetricCipher*& aPlugin,
+                                                TUid aImplementationId,
+                                                const CKey& aKey,
+                                                TUid aCryptoMode,
+                                                TUid aOperationMode,
+                                                TUid aPadding,
+                                                const CCryptoParams* aAlgorithmParams);
+
+
+    };
+
+#endif // CPLUGINENTRY_H
--- a/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptodriver.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptodriver.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -21,7 +21,7 @@
  @internalComponent
  @released
 */
-#include <cryptodriver.h>
+#include "cryptodriver.h"
 
 /*
   NOTE: The following member functions would normally be exported from a separate client DLL
--- a/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptodriver.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptodriver.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -22,7 +22,7 @@
 UID 		0x2000840B 0x2000840B
 VENDORID	0x70000001
 
-SYSTEMINCLUDE /epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 SOURCE		cryptodriver.cpp
 
--- a/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptoh4.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptoh4.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -22,7 +22,7 @@
  @released
 */
 #include <kernel/kern_priv.h>
-#include <cryptodriver.h>
+#include "cryptodriver.h"
 #ifdef __MARM__
 #include <omap_hrp/assp/shared/omap_reg.h>
 #include <omap_hrp/assp/shared/omap_interrupt.h>
--- a/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptoh4.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptoh4.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -18,6 +18,7 @@
 
 #define             NO_EKERN_LIB
 #include 			"kernel/kern_ext.mmh"
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 SYSTEMINCLUDE		/epoc32/include/drivers
 
 #ifdef MARM
--- a/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptoh4aes.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptoh4aes.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -22,7 +22,7 @@
  @released
 */
 #include <kernel/kern_priv.h>
-#include <cryptodriver.h>
+#include "cryptodriver.h"
 #ifdef __MARM__
 #include <omap_hrp/assp/shared/omap_reg.h>
 #include <omap_hrp/assp/shared/omap_interrupt.h>
--- a/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptoh4rng.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptoh4rng.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -22,7 +22,7 @@
  @released
 */
 #include <kernel/kern_priv.h>
-#include <cryptodriver.h>
+#include "cryptodriver.h"
 #ifdef __MARM__
 #include <omap_hrp/assp/shared/omap_reg.h>
 #include <omap_hrp/assp/shared/omap_interrupt.h>
--- a/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptojobs.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptojobs.h	Mon Oct 12 10:17:04 2009 +0300
@@ -26,7 +26,7 @@
 #include <e32cmn.h>
 #include <e32ver.h>
 #include <e32def.h>
-#include <cryptodriver.h>
+#include "cryptodriver.h"
 
 #define TRACE_FUNCTION(funcName) do{ static TraceFunction tf( __FILE__ , funcName ); tf.Inc(); }while(0)
 
--- a/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptoldd.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptoldd.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -22,9 +22,9 @@
  @released
 */
 #include <kernel/kern_priv.h>
-#include <cryptodriver.h>
+#include "cryptodriver.h"
 #include "cryptoldd.h"
-#include <keyhandle.h>
+#include "keyhandle.h"
 #include "kmskext.h"
 
 DECLARE_STANDARD_LDD()
--- a/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptoldd.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/cryptoldd.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -18,10 +18,10 @@
 
 #define  NO_EKERN_LIB
 #include "kernel/kern_ext.mmh"
-SYSTEMINCLUDE		/epoc32/include/omap_hrp/h4
-SYSTEMINCLUDE		/epoc32/include/omap_hrp/assp/shared
-SYSTEMINCLUDE		/epoc32/include/omap_hrp/assp/omap24xx
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 USERINCLUDE ../../../../../crypto/weakcryptospi/test/kms/private_include/product
+USERINCLUDE ../../../../../crypto/weakcryptospi/test/kms/exported_include
+
 
 TARGET 		cryptoldd.ldd
 UNPAGED
--- a/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/tcrypto.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/tcrypto.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -21,7 +21,7 @@
  @internalComponent
  @released
 */
-#include <cryptodriver.h>
+#include "cryptodriver.h"
 #include <e32base.h>
 #include <e32cons.h>
 #include <e32test.h>
--- a/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/tcrypto.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4/tcrypto.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -22,7 +22,7 @@
 UID 		0x2000851C 0x2000851C
 VENDORID	0x70000001
 
-SYSTEMINCLUDE /epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 SOURCE		tcrypto.cpp
 
--- a/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/crypto_h4_plugin.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/crypto_h4_plugin.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -30,12 +30,14 @@
 CAPABILITY	All
 
 
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 USERINCLUDE		.
-SYSTEMINCLUDE	/epoc32/include 
 // Need these for export controlled headers required to develop a plugin
 USERINCLUDE	../../../../../crypto/weakcryptospi/inc
 USERINCLUDE	../../../../../crypto/weakcryptospi/inc/spi
+USERINCLUDE	../crypto_h4
+USERINCLUDE ../../../../../crypto/weakcryptospi/test/kms/exported_include
 
 SOURCE		pluginentry.cpp
 SOURCE		rijndaelimpl.cpp h4cipherimpl.cpp
--- a/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/h4cipherimpl.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/h4cipherimpl.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -31,7 +31,7 @@
 #include "pluginconfig.h"
 #include <cryptopanic.h>
 #include <securityerr.h>
-#include <keyhandle.h>
+#include "keyhandle.h"
 
 using namespace HwCrypto;
 
--- a/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/randomimpl.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/randomimpl.h	Mon Oct 12 10:17:04 2009 +0300
@@ -26,7 +26,7 @@
 
 #include <cryptospi/cryptoplugin.h>
 #include <cryptospi/randomplugin.h>
-#include <cryptodriver.h>
+#include "cryptodriver.h"
 
 #ifdef __MARM__
 #define __NOTSHARED __declspec(notshared)
--- a/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/rijndaelimpl.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/rijndaelimpl.h	Mon Oct 12 10:17:04 2009 +0300
@@ -27,7 +27,7 @@
 #include <e32cmn.h>
 #include "keys.h"
 #include "h4cipherimpl.h"
-#include <cryptodriver.h>
+#include "cryptodriver.h"
 
 /**
 Plug-in class for AES (Rijndael) block cipher
--- a/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/tasync.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/tasync.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -21,7 +21,7 @@
  @internalComponent
  @released
 */
-#include <cryptodriver.h>
+#include "cryptodriver.h"
 #include <e32base.h>
 #include <e32cons.h>
 #include <e32test.h>
--- a/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/tasync.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/tasync.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -22,7 +22,9 @@
 UID 		0x2000A3D6 0x2000A3D6
 VENDORID	0x70000001
 
-SYSTEMINCLUDE /epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+
+USERINCLUDE	../crypto_h4
 
 SOURCE		tasync.cpp
 
--- a/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/temb.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/temb.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -21,7 +21,7 @@
  @internalComponent
  @released
 */
-#include <cryptodriver.h>
+#include "cryptodriver.h"
 #include <e32base.h>
 #include <e32cons.h>
 #include <e32test.h>
@@ -34,7 +34,7 @@
 #include "keys.h"
 #include <cryptospi/cryptospidef.h>
 #include "cryptosymmetriccipherapi.h"
-#include <kmsclient.h>
+#include "kmsclient.h"
 #include <f32file.h>
 //#include "kmsservercommon.h"
 using namespace CryptoSpi;
--- a/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/temb.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoplugins/cryptospiplugins/test/h4drv/crypto_h4_plugin/temb.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -22,10 +22,12 @@
 UID 		0x2000851C 0x2000851C
 VENDORID	0x70000001
 
-SYSTEMINCLUDE /epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 // Need these for export controlled headers required to develop a plugin
 USERINCLUDE	../../../../../crypto/weakcryptospi/inc
 USERINCLUDE	../../../../../crypto/weakcryptospi/inc/spi
+USERINCLUDE	../crypto_h4
+USERINCLUDE ../../../../../crypto/weakcryptospi/test/kms/exported_include
 
 SOURCE		temb.cpp
 
--- a/cryptoservices/asnpkcs/test/tasnpkcs.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/asnpkcs/test/tasnpkcs.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -30,7 +30,7 @@
 SOURCE tactiondecodepkcs5.cpp tasnpkcsmain.cpp
 SOURCE tactiontestpkcs8.cpp
 
-SYSTEMINCLUDE /epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 USERINCLUDE ../../../crypto/weakcrypto/inc
 USERINCLUDE ../../../cryptomgmtlibs/securitytestfw/test/testhandler2
--- a/cryptoservices/asnpkcs/test/tpkcs8enc/tpkcs8enc.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/asnpkcs/test/tpkcs8enc/tpkcs8enc.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -32,8 +32,7 @@
 USERINCLUDE  ../../../../crypto/weakcrypto/inc
 USERINCLUDE  ../../../filebasedcertificateandkeystores/source/generic/client 
 USERINCLUDE  ../../../filebasedcertificateandkeystores/source/generic/common
-SYSTEMINCLUDE /epoc32/include
-SYSTEMINCLUDE /epoc32/include/ecom
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY	euser.lib efsrv.lib ecom.lib cryptography.lib
 LIBRARY certstore.lib asn1.lib crypto.lib hash.lib
--- a/cryptoservices/certificateandkeymgmt/certstore/certstore.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/certstore/certstore.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -44,6 +44,7 @@
 
 USERINCLUDE ../../../crypto/weakcrypto/inc
 USERINCLUDE  ../../../cryptomgmtlibs/cryptotokenfw/inc_interfaces
+USERINCLUDE  ../../filebasedcertificateandkeystores/inc
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY	euser.lib estor.lib efsrv.lib 
--- a/cryptoservices/certificateandkeymgmt/certstore/unifiedkeystore.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/certstore/unifiedkeystore.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -372,6 +372,50 @@
 		}
 	}
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+void CUnifiedKeyStore::Open(const TCTTokenObjectHandle& aHandle,
+                            CryptoSpi::CSigner*& aSigner,
+                            TRequestStatus& aStatus)
+    {
+    if (DoOpen(aHandle, aStatus))
+        {
+        iKeyStore->Open(aHandle, aSigner, iStatus);
+        }
+    }
+
+void CUnifiedKeyStore::Open(const TCTTokenObjectHandle& aHandle,
+                            CryptoSpi:: CAsymmetricCipher*& asymmetricCipherObj,
+                            TRequestStatus& aStatus)
+    {
+    if (DoOpen(aHandle, aStatus))
+        {
+        iKeyStore->Open(aHandle, asymmetricCipherObj, iStatus);
+        }
+    }
+
+void CUnifiedKeyStore::Decrypt(const TCTTokenObjectHandle& aHandle,
+                               const TDesC8& aCiphertext,
+                               HBufC8*& aPlaintextPtr,
+                               TRequestStatus& aStatus)
+    {
+    if (DoOpen(aHandle, aStatus))
+        {
+        iKeyStore->Decrypt(aHandle, aCiphertext, aPlaintextPtr, iStatus);
+        }
+    }
+
+void CUnifiedKeyStore::Sign(const TCTTokenObjectHandle& aHandle,
+                            const TDesC8& aPlaintext,
+                            CryptoSpi::CCryptoParams*& aSignature,
+                            TRequestStatus& aStatus)
+    {
+    if (DoOpen(aHandle, aStatus))
+        {
+        iKeyStore->Sign(aHandle, aPlaintext, aSignature, iStatus);
+        }
+    }
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+
 //	************************************************************************
 //	MKeyStoreManager
 //	************************************************************************
--- a/cryptoservices/certificateandkeymgmt/inc/unifiedkeystore_v2.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/inc/unifiedkeystore_v2.h	Mon Oct 12 10:17:04 2009 +0300
@@ -32,6 +32,15 @@
 
 #include <mctkeystoremanager.h>
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+namespace CryptoSpi
+    {
+    class CSigner;
+    class CAsymmetricCipher;
+    class CCryptoParams;
+    }
+#endif
+
 /**
  * Unified KeyStore panics 
  *
@@ -127,6 +136,23 @@
 							  TRequestStatus& aStatus);
 	virtual void CancelExportPublic();
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    virtual void Open(const TCTTokenObjectHandle& aHandle,
+                      CryptoSpi::CSigner*& aSigner,
+                      TRequestStatus& aStatus);
+    virtual void Open(const TCTTokenObjectHandle& aHandle,
+                      CryptoSpi::CAsymmetricCipher*& asymmetricCipherObj,
+                      TRequestStatus& aStatus);
+    virtual void Decrypt(const TCTTokenObjectHandle& aHandle,
+                         const TDesC8& aCiphertext,
+                         HBufC8*& aPlaintextPtr,
+                         TRequestStatus& aStatus);
+    virtual void Sign(const TCTTokenObjectHandle& aHandle,
+                      const TDesC8& aPlaintext,
+                      CryptoSpi::CCryptoParams*& aSignature,
+                      TRequestStatus& aStatus);
+#endif
+
 public:		//	For MCTKeyStoreManager except those (CreateKey, ImportKey, ImportEncryptedKey)
 			//	that require a caller-specified store
 	
--- a/cryptoservices/certificateandkeymgmt/pkcs7/pkcs7.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/pkcs7/pkcs7.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -52,9 +52,10 @@
 
 USERINCLUDE .
 USERINCLUDE ../inc
-SYSTEMINCLUDE +/include 
 USERINCLUDE ../../../crypto/weakcrypto/inc
 
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+
 SOURCEPATH	.
 
 SOURCE pkcs7asn1.cpp
--- a/cryptoservices/certificateandkeymgmt/tadditionalstores/tDeviceImmutablestores.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/tadditionalstores/tDeviceImmutablestores.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -39,9 +39,7 @@
 
 USERINCLUDE ../../../crypto/weakcrypto/inc
 
-SYSTEMINCLUDE 	.
-SYSTEMINCLUDE 	/epoc32/include 
-SYSTEMINCLUDE	/epoc32/include/ecom
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 
 start resource 102077C2.rss
--- a/cryptoservices/certificateandkeymgmt/tadditionalstores/tHwSimstores.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/tadditionalstores/tHwSimstores.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -39,9 +39,7 @@
 
 USERINCLUDE ../../../crypto/weakcrypto/inc
 
-SYSTEMINCLUDE 	.
-SYSTEMINCLUDE 	/epoc32/include 
-SYSTEMINCLUDE	/epoc32/include/ecom
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 
 start resource 10206843.rss
--- a/cryptoservices/certificateandkeymgmt/tadditionalstores/tHwUiccstores.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/tadditionalstores/tHwUiccstores.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -39,9 +39,7 @@
 
 USERINCLUDE ../../../crypto/weakcrypto/inc
 
-SYSTEMINCLUDE 	.
-SYSTEMINCLUDE 	/epoc32/include 
-SYSTEMINCLUDE	/epoc32/include/ecom
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 
 start resource 10206845.rss
--- a/cryptoservices/certificateandkeymgmt/tadditionalstores/tHwWimstores.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/tadditionalstores/tHwWimstores.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -39,9 +39,7 @@
 
 USERINCLUDE ../../../crypto/weakcrypto/inc
 
-SYSTEMINCLUDE 	.
-SYSTEMINCLUDE 	/epoc32/include 
-SYSTEMINCLUDE	/epoc32/include/ecom
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 
 start resource 10206844.rss
--- a/cryptoservices/certificateandkeymgmt/tadditionalstores/tadditionalstores.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/tadditionalstores/tadditionalstores.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -37,9 +37,7 @@
 
 USERINCLUDE ../../../crypto/weakcrypto/inc
 
-SYSTEMINCLUDE 	.
-SYSTEMINCLUDE 	/epoc32/include 
-SYSTEMINCLUDE	/epoc32/include/ecom
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 
 start resource 101f5278.rss
--- a/cryptoservices/certificateandkeymgmt/tadditionalstores/tadditionalstoressoftware.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/tadditionalstores/tadditionalstoressoftware.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -39,9 +39,7 @@
 
 USERINCLUDE ../../../crypto/weakcrypto/inc
 
-SYSTEMINCLUDE 	.
-SYSTEMINCLUDE 	/epoc32/include 
-SYSTEMINCLUDE	/epoc32/include/ecom
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 
 start resource 101FF737.rss
--- a/cryptoservices/certificateandkeymgmt/tasn1/tasn1.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/tasn1/tasn1.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -38,9 +38,9 @@
 SOURCE		testbitstr.cpp
 USERINCLUDE .
 
-SYSTEMINCLUDE /epoc32/include/testhandler2  
-SYSTEMINCLUDE /epoc32/include 
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 USERINCLUDE ../../../crypto/weakcrypto/inc
+USERINCLUDE ../../../cryptomgmtlibs/securitytestfw/test/testhandler2
 
 LIBRARY	euser.lib efsrv.lib asn1.lib t_testhandler2.lib
 
--- a/cryptoservices/certificateandkeymgmt/tcertcommon/tcertcommon.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/tcertcommon/tcertcommon.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -32,9 +32,10 @@
 SOURCE Tcertwriter.cpp
 
 USERINCLUDE ../../../crypto/weakcrypto/inc
+USERINCLUDE ../../../cryptomgmtlibs/securitytestfw/test/testhandler2
 
 USERINCLUDE .
-SYSTEMINCLUDE /epoc32/include/testhandler2 /epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY	euser.lib x500.lib x509.lib crypto.lib
 LIBRARY certstore.lib
--- a/cryptoservices/certificateandkeymgmt/tcertcommon/tcertutils.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/tcertcommon/tcertutils.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -20,7 +20,7 @@
 #include "tcertutils.h"
 #include <wtlscert.h>
 #include <certificateapps.h>
-#include <testhandler2/t_input.h>
+#include "t_input.h"
 #include <ccertattributefilter.h>
 #include <cctcertinfo.h>
 #include <mctwritablecertstore.h>
--- a/cryptoservices/certificateandkeymgmt/tcertdump/tcertdump.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/tcertdump/tcertdump.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -30,7 +30,7 @@
 SOURCE        displaytype.cpp
 
 USERINCLUDE   .
-SYSTEMINCLUDE /epoc32/include
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 LIBRARY       euser.lib efsrv.lib x509.lib charconv.lib bafl.lib estor.lib x500.lib
 
 VENDORID 0x70000001
--- a/cryptoservices/certificateandkeymgmt/tcertstore/tcertstore.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/tcertstore/tcertstore.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -57,8 +57,7 @@
 USERINCLUDE ../../../cryptomgmtlibs/securitytestfw/test/testhandler2
 USERINCLUDE ../../../cryptomgmtlibs/securitytestfw/test/testutil/client
 
-SYSTEMINCLUDE /epoc32/include
-SYSTEMINCLUDE /epoc32/include/ecom
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY	euser.lib estor.lib efsrv.lib x509.lib certstore.lib wtlscert.lib
 LIBRARY ctframework.lib t_testhandler2.lib ecom.lib tfiletokens.lib testutilclient.lib
--- a/cryptoservices/certificateandkeymgmt/testhwerrstore/testhwerrcertstore.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/testhwerrstore/testhwerrcertstore.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -32,8 +32,7 @@
 SOURCEPATH	.
 SOURCE testhwerrcertstoretokentype.cpp
 
-SYSTEMINCLUDE 	/epoc32/include
-SYSTEMINCLUDE	/epoc32/include/ecom
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 
 start resource 101FE9EE.rss
--- a/cryptoservices/certificateandkeymgmt/tpkcs10/tpkcs10v2.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/tpkcs10/tpkcs10v2.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -37,8 +37,7 @@
 	
 
 USERINCLUDE		.
-SYSTEMINCLUDE	/epoc32/include
-SYSTEMINCLUDE	/epoc32/include/test
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 
 LIBRARY     	euser.lib
--- a/cryptoservices/certificateandkeymgmt/tpkcs12intgrtn/group/tpkcs12libtest.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/tpkcs12intgrtn/group/tpkcs12libtest.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -31,8 +31,7 @@
 USERINCLUDE .
 USERINCLUDE ../inc
 
-SYSTEMINCLUDE	/epoc32/include
-SYSTEMINCLUDE	/epoc32/include/test
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 SOURCEPATH	.
 
--- a/cryptoservices/certificateandkeymgmt/tpkcs7/tpkcs7.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/tpkcs7/tpkcs7.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -38,8 +38,7 @@
 
 USERINCLUDE		.
 USERINCLUDE		../inc
-SYSTEMINCLUDE	/epoc32/include
-SYSTEMINCLUDE	/epoc32/include/test
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY			euser.lib efsrv.lib
 LIBRARY			testexecuteutils.lib testexecutelogclient.lib
--- a/cryptoservices/certificateandkeymgmt/tpkixcert/taction_build.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/tpkixcert/taction_build.h	Mon Oct 12 10:17:04 2009 +0300
@@ -24,7 +24,7 @@
 #ifndef __TACTION_BUILD_H__
 #define __TACTION_BUILD_H__
 
-#include <testhandler2/t_testaction.h>
+#include "t_testaction.h"
 #include <unifiedcertstore.h>
 #include "tcertutils.h"
 
--- a/cryptoservices/certificateandkeymgmt/tpkixcert/tactionvalidate.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/tpkixcert/tactionvalidate.h	Mon Oct 12 10:17:04 2009 +0300
@@ -24,7 +24,7 @@
 #ifndef __TACTIONVALIDATE_H__
 #define __TACTIONVALIDATE_H__
 
-#include <testhandler2/t_testaction.h>
+#include "t_testaction.h"
 #include "tpkixcertval.h"
 #include <unifiedcertstore.h>
 #include "tcertutils.h"
--- a/cryptoservices/certificateandkeymgmt/tpkixcert/tpkixcert.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/tpkixcert/tpkixcert.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -35,10 +35,13 @@
 SOURCE tpkixcertmain.cpp
 
 USERINCLUDE ../../../crypto/weakcrypto/inc
+USERINCLUDE ../../../cryptomgmtlibs/securitytestfw/test/testhandler2
+USERINCLUDE ../../../cryptomgmtlibs/securitytestfw/test/testhandler2extra
+
 
 USERINCLUDE .
 USERINCLUDE ../tcertcommon
-SYSTEMINCLUDE /epoc32/include/testhandler2 /epoc32/include 
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 
 LIBRARY	euser.lib efsrv.lib x509.lib tcertcommon.lib
--- a/cryptoservices/certificateandkeymgmt/tpkixcert/tpkixcertmain.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/tpkixcert/tpkixcertmain.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -17,11 +17,11 @@
 
 
 #include <e32base.h>
-#include <testhandler2/t_testhandler.h>
+#include "t_testhandler.h"
 #include <f32file.h>
 #include "tactionvalidate.h"
 #include "taction_build.h"
-#include <testhandler2/tscriptandhardcoded.h>
+#include "tscriptandhardcoded.h"
 
 LOCAL_D void callExampleL() // initialize and call example code under cleanup stack
     {
--- a/cryptoservices/certificateandkeymgmt/tpkixcert_tef/group/tpkixcert_tef.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/tpkixcert_tef/group/tpkixcert_tef.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -29,8 +29,7 @@
 SOURCE		datetimefatalteststep.cpp
 
 USERINCLUDE   ../src
-SYSTEMINCLUDE /epoc32/include
-SYSTEMINCLUDE /epoc32/include/test
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY     	euser.lib
 LIBRARY		testexecuteutils.lib
--- a/cryptoservices/certificateandkeymgmt/twtlscert/twtlscert.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/twtlscert/twtlscert.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -34,11 +34,12 @@
 SOURCE ValidateTest.cpp CorruptionTest.cpp SyntaxTest.cpp
 
 USERINCLUDE ../../../crypto/weakcrypto/inc
+USERINCLUDE ../../../cryptomgmtlibs/securitytestfw/test/testhandler2
 
 USERINCLUDE .
 USERINCLUDE ../tcertcommon
 USERINCLUDE ../inc
-SYSTEMINCLUDE /epoc32/include /epoc32/include/testhandler2 /epoc32/include/ecom
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY	euser.lib estor.lib efsrv.lib wtlscert.lib random.lib crypto.lib
 LIBRARY bafl.lib 
--- a/cryptoservices/certificateandkeymgmt/tx509/tx509.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/certificateandkeymgmt/tx509/tx509.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -33,10 +33,11 @@
 SOURCE extensiontest.cpp comparisontest.cpp
 
 USERINCLUDE ../../../crypto/weakcrypto/inc
+USERINCLUDE ../../../cryptomgmtlibs/securitytestfw/test/testhandler2
 
 USERINCLUDE .
 USERINCLUDE ../tcertcommon
-SYSTEMINCLUDE /epoc32/include /epoc32/include/testhandler2
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY	euser.lib efsrv.lib x509.lib crypto.lib
 LIBRARY random.lib tcertcommon.lib
--- a/cryptoservices/filebasedcertificateandkeystores/Inc/CFSTokenTypeClient.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/Inc/CFSTokenTypeClient.h	Mon Oct 12 10:17:04 2009 +0300
@@ -18,8 +18,9 @@
 
 
 /**
- @file
- @internalComponent
+ @file 
+ @publishedPartner
+ @prototype
 */
  
 #ifndef __CFSTOKENTYPECLIENT_H__
--- a/cryptoservices/filebasedcertificateandkeystores/Inc/filetokenstests.iby	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/Inc/filetokenstests.iby	Mon Oct 12 10:17:04 2009 +0300
@@ -45,6 +45,14 @@
 ECOM_PLUGIN(101faaa3.dll, 101faaa3.rsc)
 ECOM_PLUGIN(101faaa5.dll, 101faaa5.rsc)
 
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+data = ZDRIVE\tkeystore\scripts\thwkeystore.txt		tkeystore\scripts\thwkeystore.txt
+data = ZPRIVATE\101f7e95\hwkeys.dat					private\101f7e95\hwkeys.dat
+data = ZDRIVE\tkeystore\data\hwkeys.dat				tkeystore\scripts\hwkeys.dat
+file = ABI_DIR\BUILD_DIR\tcryptotokenhai.dll			sys\bin\tcryptotokenhai.dll
+ECOM_PLUGIN(101faaaa.dll, 101faaaa.rsc)
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
+
 //scripts
 #ifdef SYMBIAN_KEYSTORE_USE_AUTH_SERVER
 data = ZDRIVE\tkeystore\scripts\registration.ini		tkeystore\scripts\registration.ini
--- a/cryptoservices/filebasedcertificateandkeystores/group/bld.inf	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/group/bld.inf	Mon Oct 12 10:17:04 2009 +0300
@@ -26,9 +26,8 @@
 DEFAULT
 
 PRJ_EXPORTS
-#ifdef SYMBIAN_OLD_EXPORT_LOCATION
-../Inc/CFSTokenTypeClient.h   /epoc32/include/cfstokentypeclient.h
-#endif
+
+../Inc/CFSTokenTypeClient.h   SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(cfstokentypeclient.h)
 ../Inc/certstorepatchdata.h  SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(certstorepatchdata.h)
 ../Inc/keystore_errs.h  SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(keystore_errs.h)
 
@@ -333,6 +332,14 @@
 // ROMKIT includes
 ../Inc/filetokenstests.iby /epoc32/rom/include/filetokenstests.iby
 
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+../test/tkeystore/scripts/thwkeystore.txt			/epoc32/winscw/c/tkeystore/scripts/thwkeystore.txt
+../test/tkeystore/data/hwkeys.dat				/epoc32/data/z/private/101f7e95/hwkeys.dat
+../test/tkeystore/data/hwkeys.dat				/epoc32/release/winscw/udeb/z/private/101f7e95/hwkeys.dat
+../test/tkeystore/data/hwkeys.dat				/epoc32/release/winscw/urel/z/private/101f7e95/hwkeys.dat
+../test/tkeystore/data/hwkeys.dat				/epoc32/winscw/c/tkeystore/data/hwkeys.dat
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
+
 PRJ_MMPFILES
 
 #ifndef TOOLS
@@ -354,6 +361,11 @@
 
 #ifndef TOOLS
 #ifndef TOOLS2
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+../test/tcryptotokenhai/tcryptotokenhai.mmp
+../test/thwkeystore/client/thwkeystoreclient.mmp
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
+
 ../test/tfiletokens/tfiletokens.mmp
 ../test/tkeystore/tkeystore.mmp
 ../test/tcertapps/tcertapps.mmp
@@ -363,5 +375,6 @@
 ../test/ttestplugin/dummykeystore.mmp
 ../test/ttestplugin/dummykeystoreman1.mmp
 ../test/ttestplugin/dummykeystoreman2.mmp
+
 #endif //TOOLS2
 #endif //TOOLS
--- a/cryptoservices/filebasedcertificateandkeystores/group/fstokencli.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/group/fstokencli.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -44,6 +44,7 @@
 userinclude  ../Inc 
 userinclude  ../../../crypto/weakcrypto/inc
 userinclude  ../../../cryptomgmtlibs/cryptotokenfw/inc_interfaces
+userinclude  ../../../cryptomgmtlibs/cryptotokenfw/inc
 userinclude  ../source/generic/common
 userinclude  ../source/generic/client
 userinclude  ../source/keystore/Client
--- a/cryptoservices/filebasedcertificateandkeystores/source/keystore/Client/CKeyStoreAuthObject.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/source/keystore/Client/CKeyStoreAuthObject.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -18,7 +18,7 @@
 
 #include "CKeyStoreAuthObject.h"
 #include "cfskeystoreclient.h"
-#include <ct/logger.h>
+#include "ct/logger.h"
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
 const TUid KKeyStoreAuthObjectUID = {0x101FE681};
 #endif
--- a/cryptoservices/filebasedcertificateandkeystores/source/keystore/Client/cfskeystoreclient.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/source/keystore/Client/cfskeystoreclient.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -25,7 +25,7 @@
 #include <mctauthobject.h>
 #include <asymmetrickeys.h>
 #include <pbedata.h>
-#include <ct/logger.h>
+#include "ct/logger.h"
 #include <mctkeystoreuids.h>
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/filebasedcertificateandkeystores/test/bwins/tcryptotokenhaiu.def	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,12 @@
+EXPORTS
+	?NewLC@CCryptoTokenHai@@SAPAV1@PAVMCTToken@@@Z @ 1 NONAME ; class CCryptoTokenHai * CCryptoTokenHai::NewLC(class MCTToken *)
+	?KeyPresent@CCryptoTokenHai@@QAEHH@Z @ 2 NONAME ; int CCryptoTokenHai::KeyPresent(int)
+	?ListL@CCryptoTokenHai@@QBEXABUTCTKeyAttributeFilter@@AAV?$RPointerArray@VCCTKeyInfo@@@@@Z @ 3 NONAME ; void CCryptoTokenHai::ListL(struct TCTKeyAttributeFilter const &, class RPointerArray<class CCTKeyInfo> &) const
+	?ExportPublicKeyL@CCryptoTokenHai@@QAEXHAAPAVHBufC8@@@Z @ 4 NONAME ; void CCryptoTokenHai::ExportPublicKeyL(int, class HBufC8 * &)
+	?DecryptL@CCryptoTokenHai@@QAEXHABVTDesC8@@AAPAVHBufC8@@@Z @ 5 NONAME ; void CCryptoTokenHai::DecryptL(int, class TDesC8 const &, class HBufC8 * &)
+	?ExportPrivateKeyL@CCryptoTokenHai@@QAEXHAAPAVHBufC8@@@Z @ 6 NONAME ; void CCryptoTokenHai::ExportPrivateKeyL(int, class HBufC8 * &)
+	?ImportKeyL@CCryptoTokenHai@@QAEXABVTDesC16@@ABVTDesC8@@1@Z @ 7 NONAME ; void CCryptoTokenHai::ImportKeyL(class TDesC16 const &, class TDesC8 const &, class TDesC8 const &)
+	?SignL@CCryptoTokenHai@@QAEXHABVTDesC8@@AAPAVHBufC8@@@Z @ 8 NONAME ; void CCryptoTokenHai::SignL(int, class TDesC8 const &, class HBufC8 * &)
+	?NewL@CCryptoTokenHai@@SAPAV1@PAVMCTToken@@@Z @ 9 NONAME ; class CCryptoTokenHai * CCryptoTokenHai::NewL(class MCTToken *)
+	??1CCryptoTokenHai@@UAE@XZ @ 10 NONAME ; CCryptoTokenHai::~CCryptoTokenHai(void)
+
--- a/cryptoservices/filebasedcertificateandkeystores/test/certtool/certtool.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/certtool/certtool.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -66,7 +66,7 @@
 
 USERINCLUDE	.
 USERINCLUDE	../keytool
-SYSTEMINCLUDE	/epoc32/include 
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY	euser.lib efsrv.lib
 LIBRARY certstore.lib crypto.lib
--- a/cryptoservices/filebasedcertificateandkeystores/test/certtool/certtool_commands.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/certtool/certtool_commands.h	Mon Oct 12 10:17:04 2009 +0300
@@ -109,10 +109,11 @@
 	static CCertToolList* NewL(CCertToolController* aController);
 	~CCertToolList();
 	void ConstructL();
+	void InitializeIterations();	
 
 public: // From CCertToolCommand
 	void DoCommandL(CUnifiedCertStore& aCertStore, CKeyToolParameters* aParam);
-	
+		
 public: // From CActive
 	void RunL();
 	void DoCancel();
@@ -146,6 +147,16 @@
 		EIntermediate,
 		EGetTrust,
 		} iState;			
+
+	// Number of certificates that have to be listed up to the current iteration.
+	TInt iCurrentListCount;	
+	// Keeps track of the number of iterations left.
+	TInt iNumberOfIterationsLeft;
+	// List offset for the last iteration if total number of certificates is not an exact
+	// multiple of default LIST_COUNT.
+	TInt iLastIterationOffset;
+	// Default list offset for each iteration.
+	TInt iCurrentListOffset;
 	};
 	
 
--- a/cryptoservices/filebasedcertificateandkeystores/test/certtool/certtool_list.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/certtool/certtool_list.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -27,6 +27,9 @@
 _LIT(KUserType, "user");
 _LIT(KPeerType, "peer");
 
+// The number of certificates being listed at a time.
+#define LIST_COUNT 30
+
 /*static*/ CCertToolList* CCertToolList::NewLC(CCertToolController* aController)
 	{
 	CCertToolList* self = new (ELeave) CCertToolList(aController);
@@ -107,6 +110,35 @@
 	SetActive();	
 	}
 	
+	
+
+
+void CCertToolList::InitializeIterations()
+    { 	
+	// Initialize the current list count and iCurrentListOffset with default LIST_COUNT.
+    iCurrentListCount = iCurrentListOffset = LIST_COUNT;				
+			
+    if (iCertInfos.Count() < LIST_COUNT)
+        {
+        iCurrentListCount = iCurrentListOffset = iCertInfos.Count();
+        }
+				    
+    // Compute the number of iterations for listing.    
+    // The latter operation is to add another iteration count if iCertInfos 
+    // count is not an exact multiple of LIST_COUNT.
+	iNumberOfIterationsLeft =  (iCertInfos.Count() / LIST_COUNT) + !!(iCertInfos.Count() % LIST_COUNT);   
+								
+
+   // Initialize the last iteration offset with default LIST_COUNT.				
+   iLastIterationOffset = LIST_COUNT;		
+                		
+   if (iCertInfos.Count() % LIST_COUNT)
+       {
+       // If the number of certificates is not an exact multiple of default LIST_COUNT.
+   	   iLastIterationOffset = (iCertInfos.Count() % LIST_COUNT);        			 
+       }
+   }       
+	
 void CCertToolList::RunL()
 	{
 	if (iStatus.Int() != KErrNone)
@@ -116,7 +148,7 @@
 			// A problem occured. Handle gracefully.
 			User::Leave(iStatus.Int());	
 			}
-		}
+		}		
 		
 	switch (iState)
 		{
@@ -159,6 +191,10 @@
 						}						
 					KeyToolUtils::FilterCertsL(iCertInfos, ownerType);
 					}
+
+               
+                InitializeIterations();   
+
   				iState = ERetrieve;
   				iIndex = 0;
 				if (iIndex <= (iCertInfos.Count()-1 ))
@@ -176,20 +212,28 @@
 			break;
 		case ERetrieve :
 			{
+            // This marks the beginning of the current iteration.           
+			// Retrieve all the certificates up to the current list count.            
+                       
 			iParsedCerts.Append(iCertificate);
 			iIndex++;
-			if (iIndex <= (iCertInfos.Count()-1 ))
-				{
-				iCertStore->Retrieve(*iCertInfos[iIndex], iCertificate, iStatus);
-				SetActive();
-				}
+
+			if (iIndex < iCurrentListCount)
+			    {
+			    iCertStore->Retrieve(*iCertInfos[iIndex], iCertificate, iStatus);            
+			    SetActive();
+			    }
 			else
-				{
-				iState = EGetApps;
-				iIndex = 0;
-				iCertStore->Applications(*iCertInfos[iIndex], iApps, iStatus);
-				SetActive();
-				}
+			    {                
+			    iState = EGetApps;
+                                                 
+			    // Start getting the applications starting from the iIndex(current list's beginning). 
+			    iIndex = iCurrentListCount - iCurrentListOffset;
+			    RUidArray t;
+			    iApps = t;
+			    iCertStore->Applications(*iCertInfos[iIndex], iApps, iStatus);
+			    SetActive();
+			    }
 			}
 			break;
 		case EGetApps :
@@ -197,20 +241,24 @@
 			iCertApps.Append(iApps);
 
 			iIndex++;
-			if (iIndex <= (iCertInfos.Count()-1 ))
-				{
-				RUidArray t;
-				iApps = t;				
-				iCertStore->Applications(*iCertInfos[iIndex], iApps, iStatus);
-				SetActive();
-				}
+
+			// Get all the applications up to the current list count.            
+			if (iIndex < iCurrentListCount)
+			    {      
+			    RUidArray t;
+			    iApps = t;				
+			    iCertStore->Applications(*iCertInfos[iIndex], iApps, iStatus);
+			    SetActive();
+			    }
 			else
-				{
-				iState = EGetTrust;
-				iIndex = 0;
-				iCertStore->Trusted(*iCertInfos[iIndex], iTrust, iStatus);
-				SetActive();
-				}			
+			    {
+			    iState = EGetTrust;
+                                
+		    	// Start getting the trust starting from the iIndex(current list's beginning). 
+			    iIndex = iCurrentListCount - iCurrentListOffset;                
+			    iCertStore->Trusted(*iCertInfos[iIndex], iTrust, iStatus);
+			    SetActive();
+			    }			
 			}
 			break;
 		case EGetTrust :
@@ -218,21 +266,67 @@
 			iCertTrust.Append(iTrust);
 
 			iIndex++;
-			if (iIndex <= (iCertInfos.Count()-1 ))
-				{
-				iCertStore->Trusted(*iCertInfos[iIndex], iTrust, iStatus);
-				SetActive();
-				}
-			else
-				{
-				iState = EFinished;
-				TInt certCount = iCertInfos.Count();
-				for (TInt i = 0; i < certCount; i++)
- 					{
- 					iController->DisplayCertL(*iCertInfos[i], *iParsedCerts[i], iCertApps[i], iCertTrust[i], iParams->iIsDetailed, iParams->iPageWise);
- 					}
-				CActiveScheduler::Stop();
-				}			
+	
+  			// Get all the trust up to the current list count. 
+  			if (iIndex < iCurrentListCount) 
+		            {
+		            iCertStore->Trusted(*iCertInfos[iIndex], iTrust, iStatus);
+		            SetActive();
+		            }
+  			else 
+		            {
+                    // Update the number of iterations.                  
+                    iNumberOfIterationsLeft--;                                        
+
+                    // Check if this happens to be the last iteration. If so, adjust the list offset.                                                                    
+			        if (iNumberOfIterationsLeft == 0)
+			            {
+			            iCurrentListOffset = iLastIterationOffset;
+			            }                                
+                                
+		            // We are done with the current list processing, it's time to display the collected data.                
+		            TInt DisplayOffset = iCurrentListOffset;
+                    
+             	    // Display(list) the certificates just processed.  This marks the end of the current iteration.    
+		            for (TInt i = iIndex - DisplayOffset; i < iCurrentListCount; i++)
+		                 {
+		                 iController->DisplayCertL(*iCertInfos[i], *iParsedCerts[i], iCertApps[i], iCertTrust[i], iParams->iIsDetailed, iParams->iPageWise);                      
+	                         if (iParsedCerts[i] )
+		                     {
+		                     delete iParsedCerts[i];  // Relinquish the resources for facilitating the subsequent listing.
+		                     iParsedCerts[i] = 0;     
+		                     }
+		                 }                 
+                
+    	                    // How many more are remaining??
+		            TInt RemainingListCount = iCertInfos.Count() - iCurrentListCount;                
+                
+
+                            if (RemainingListCount == 0)
+		                {
+            	                iState = EFinished;
+		                CActiveScheduler::Stop();
+		                break;
+		                }                                                    
+                
+		            if (RemainingListCount < LIST_COUNT)
+		                {       
+                        // Total number of certificates is not an exact multiple of default LIST_COUNT.
+                        // Last iteration will have the list count lesser than the default LIST_COUNT.
+                        // So, only one iteration is left.
+		                iCurrentListCount += RemainingListCount;
+		                }
+		            else
+		                {
+                                //  Still a few more are left.
+	                        iCurrentListCount += LIST_COUNT;
+		                }
+                  
+		            // Start the next iteration.   
+		            iState = ERetrieve;               
+		            iCertStore->Retrieve(*iCertInfos[iIndex], iCertificate, iStatus);
+		            SetActive();                                         
+		            }			
 			}
 			break;
 		case EFinished :
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/filebasedcertificateandkeystores/test/eabi/tcryptotokenhaiu.def	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,16 @@
+EXPORTS
+	_ZN15CCryptoTokenHai10ImportKeyLERK7TDesC16RK6TDesC8S5_ @ 1 NONAME
+	_ZN15CCryptoTokenHai10KeyPresentEi @ 2 NONAME
+	_ZN15CCryptoTokenHai16ExportPublicKeyLEiRP6HBufC8 @ 3 NONAME
+	_ZN15CCryptoTokenHai17ExportPrivateKeyLEiRP6HBufC8 @ 4 NONAME
+	_ZN15CCryptoTokenHai4NewLEP8MCTToken @ 5 NONAME
+	_ZN15CCryptoTokenHai5NewLCEP8MCTToken @ 6 NONAME
+	_ZN15CCryptoTokenHai5SignLEiRK6TDesC8RP6HBufC8 @ 7 NONAME
+	_ZN15CCryptoTokenHai8DecryptLEiRK6TDesC8RP6HBufC8 @ 8 NONAME
+	_ZN15CCryptoTokenHaiD0Ev @ 9 NONAME
+	_ZN15CCryptoTokenHaiD1Ev @ 10 NONAME
+	_ZN15CCryptoTokenHaiD2Ev @ 11 NONAME
+	_ZNK15CCryptoTokenHai5ListLERK21TCTKeyAttributeFilterR13RPointerArrayI10CCTKeyInfoE @ 12 NONAME
+	_ZTI11CKeyDetails @ 13 NONAME
+	_ZTV11CKeyDetails @ 14 NONAME
+
--- a/cryptoservices/filebasedcertificateandkeystores/test/keytool/keytool.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/keytool/keytool.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -71,7 +71,8 @@
 USERINCLUDE	../../source/generic/server
 USERINCLUDE	../../source/keystore/server
 #endif // SYMBIAN_AUTH_SERVER
-SYSTEMINCLUDE	/epoc32/include 
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+
 #ifdef SYMBIAN_AUTH_SERVER
 SYSTEMINCLUDE	/epoc32/include/ct
 #endif // SYMBIAN_AUTH_SERVER
--- a/cryptoservices/filebasedcertificateandkeystores/test/tcertapps/tcertapps.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tcertapps/tcertapps.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -29,7 +29,7 @@
 USERINCLUDE ../../../../cryptomgmtlibs/securitytestfw/test/testhandler2
 USERINCLUDE ../../Inc\
 
-SYSTEMINCLUDE /epoc32/include /epoc32/include/ct
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY	euser.lib efsrv.lib
 LIBRARY t_testhandler2.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tcryptotokenhai/tcryptotokenhai.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,622 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* This class implements the reference Crypto Token Hardware Abstraction 
+* Interface (HAI). It is just intended to show how operations using 
+* device keys can be performed using crypto token framework. In the 
+* real world scenario, this HAI should be replaced by device drivers 
+* by the licensees. In such a case, all the operations performed by 
+* the replacing class would be performed in Kernel Space.
+*
+*/
+
+
+#include "tcryptotokenhai.h"
+#include "tkeydetails.h"
+#include "cryptosignatureapi.h"
+#include "keys.h"
+
+#include <cryptospi/cryptoparams.h>
+#include <cryptospi/cryptospidef.h>
+
+EXPORT_C CCryptoTokenHai* CCryptoTokenHai::NewLC(MCTToken* aToken)
+	{
+	CCryptoTokenHai* instance = new(ELeave) CCryptoTokenHai(*aToken);
+	CleanupStack::PushL(instance);
+	instance->ConstructL();
+	return instance;
+	}
+
+EXPORT_C CCryptoTokenHai* CCryptoTokenHai::NewL(MCTToken* aToken)
+	{
+	CCryptoTokenHai* instance = CCryptoTokenHai::NewLC(aToken);
+	CleanupStack::Pop(instance);
+	return instance;
+	}
+
+void CCryptoTokenHai::ConstructL()
+	{
+	User::LeaveIfError(iFs.Connect());
+	OpenStoreL();
+	}
+
+CCryptoTokenHai::CCryptoTokenHai(MCTToken& aToken)
+	:iToken(aToken)
+	{}
+
+EXPORT_C CCryptoTokenHai::~CCryptoTokenHai()
+	{
+	if(iFileStore)
+        {
+        CompactStore();
+        delete iFileStore;
+        }
+	
+	iFs.Close();
+	iKeys.ResetAndDestroy();
+    iKeys.Close();
+	}
+
+/**
+ * Performs the decryption operation.
+ * 
+ * This API gets called when the decryption is supposed to be done in  
+ * the hardware.
+ * 
+ * @param aHandle The key handle
+ * @param aCiphertext The cipher text. This is not being used presently 
+ * due to decryption logic used in this function.
+ * @param aPlainText Output param. The decrypted plain text. Ownership 
+ * of the pointer lies with the caller.
+ * 
+ * @leave This function can leave with following error codes:-
+ * - KErrNotFound - If the key corresponding to given handle is not 
+ * found.
+ * - Any other error code returned by AllocL().
+ *
+ * @note This function does not actually implement ECC decryption. It 
+ * just intends to show that the key is with this class and it can 
+ * do actual ECC decryption here. This function just returns the 
+ * private key as decrypted text. The caller can verify the decryption 
+ * by ensuring that test case has same public and private keys and then 
+ * comparing the decrypted text with public key. 
+ */
+EXPORT_C void CCryptoTokenHai::DecryptL(	TInt aHandle,	
+											const TDesC8& /* aCiphertext */,
+											HBufC8*& aPlainText )
+	{
+    TInt keyIndex = KeyPresent(aHandle);
+    if(keyIndex == KErrNotFound)
+        {
+        User::Leave(KErrNotFound);
+        }
+    
+    ExportPrivateKeyL(aHandle, aPlainText);
+	}
+
+/**
+ * Performs the signing operation.
+ * 
+ * This API gets called when the signing is supposed to be done inside 
+ * the hardware.
+ * 
+ * @param aHandle The key handle
+ * @param aPlaintext The text which has to be signed. This is not being 
+ * used due to signing logic used in this function.
+ * @param aSignature Output param. The signature in HBufC8 format.  
+ * Ownership of the pointer lies with the caller. This should be 
+ * converted to CCryptoParams by the crypto token reference plugin. 
+ * 
+ * @leave This function can leave with following error codes:-
+ * - KErrNotFound - If the key corresponding to given handle is not 
+ * found.
+ * - Any other error code returned by AllocL().
+ * 
+ * @note This function does not actually implement ECC signing. It 
+ * just intends to show that the key is with this class and it can 
+ * do actual ECC signing here. Currently this function just returns 
+ * the private key as output signature. The caller can verify the 
+ * signature by ensuring that test case has same public and private 
+ * keys and then comparing the signature with public key.
+ */
+EXPORT_C void CCryptoTokenHai::SignL( 	TInt aHandle,
+										const TDesC8& /* aPlaintext */,
+										HBufC8*& aSignature )
+	{
+	TInt keyIndex = KeyPresent(aHandle);
+	if(keyIndex == KErrNotFound)
+	    {
+	    User::Leave(KErrNotFound);
+	    }
+	
+	ExportPrivateKeyL(aHandle, aSignature);
+	}
+
+/**
+ * Returns the index of the key whose handle is given.
+ * 
+ * @param aHandle Handle of the key. This is used to search the key.
+ * 
+ * @return index of the key if search is successful, KErrNotFound 
+ * otherwise.
+ */
+EXPORT_C TInt CCryptoTokenHai::KeyPresent( TInt aHandle )
+	{
+	int keysCount = iKeys.Count();
+	for(TInt i=0; i < keysCount; ++i)
+		{
+		if(iKeys[i]->Handle() == aHandle)
+			{
+			return i;
+			}
+		}
+	return KErrNotFound;
+	}
+
+/**
+ * Extracts the private key.
+ * 
+ * @param aHandle Handle of the private key to be extracted.
+ * @param aKey Output Parameter. Stores the private key on success. 
+ * Ownership of pointer is with the caller.
+ * 
+ * @leave Following leave codes possible:-
+ * - Any leave code returned by AllocL().
+ * - KErrNotFound - If key corresponding to the given handle is not 
+ * found.
+ * 
+ * @note In the actual implementation, licensees should ensure that 
+ * this function can be called only in Kernel space. In the reference 
+ * implementation, this function gets called only by CCryptoSpiHai, 
+ * which is assumed to operate in kernel space. This would ensure that 
+ * the private key always stays inside the hardware.
+ */
+EXPORT_C void CCryptoTokenHai::ExportPrivateKeyL( TInt aHandle, HBufC8*& aKey )
+	{
+	int keysCount = iKeys.Count();
+	for(int i = 0; i < keysCount; ++i)
+		{
+		if(iKeys[i]->Handle() == aHandle)
+			{
+			aKey = iKeys[i]->PrivateKey()->AllocL();
+			return;
+			}
+		}
+	User::Leave(KErrNotFound);
+	}
+
+/**
+ * Extracts the public key.
+ * 
+ * @param aHandle Handle of the public key to be extracted.
+ * @param aKey Output Parameter. Stores the public key on success.
+ * Ownership of pointer is with the caller.
+ * 
+ * @leave Following leave codes possible:-
+ * - Any leave code returned by AllocL().
+ * - KErrNotFound - If key corresponding to the given handle is not 
+ * found.
+ */
+EXPORT_C void CCryptoTokenHai::ExportPublicKeyL( TInt aHandle, HBufC8*& aKey )
+    {
+    int keysCount = iKeys.Count();
+    for(int i = 0; i < keysCount; ++i)
+        {
+        if(iKeys[i]->Handle() == aHandle)
+            {
+            aKey = iKeys[i]->PublicKey()->AllocL();
+            return;
+            }
+        }
+    User::Leave(KErrNotFound);
+    }
+
+/**
+ * Stores the key with given details.
+ * 
+ * @param aLabel Label of the key.
+ * @param aPrivateKey Private component of the key.
+ * @param aPublicKey Public component of the key.
+ * 
+ * @leave Following leave codes possible:-
+ * - KErrAlreadyExists If there is already a key with the inputted
+ * label.
+ * - Any other leave code returned by NewL() or AppendL().
+ *  
+ * @note In the present reference implementation this function is not 
+ * being used, since device keys are pre-provisioned by the licensees. 
+ * Hence licensees may decide not to implement this function in their 
+ * real implementation. 
+ */
+EXPORT_C void CCryptoTokenHai::ImportKeyL(const TDesC& aLabel, 
+        const TDesC8& aPrivateKey, const TDesC8& aPublicKey)
+	{
+	int keysCount = iKeys.Count();
+	for(int i = 0; i < keysCount; ++i)
+		{
+		if(iKeys[i]->Label() == aLabel)
+			{
+			User::Leave(KErrAlreadyExists);
+			}
+		}
+	CKeyDetails* keyDetails = CKeyDetails::NewL(keysCount+1,aLabel,aPrivateKey,aPublicKey);
+	iKeys.AppendL(keyDetails);
+	}
+
+/**
+ * Populates the string containing full RAM path of file containing 
+ * keys.
+ */
+void CCryptoTokenHai::MakePrivateFilenameL(RFs& aFs, const TDesC& aLeafName, TDes& aNameOut)
+    {
+    aNameOut.SetLength(0);  
+    aNameOut.Append(RFs::GetSystemDriveChar());
+
+    aNameOut.Append(':');
+
+    // Get private path
+    TBuf<20> privatePath;
+    User::LeaveIfError(aFs.PrivatePath(privatePath));
+    aNameOut.Append(privatePath);
+    
+    aNameOut.Append(aLeafName);
+    }
+
+/**
+ * Creates the corresponding directory, if it does not exist.
+ */
+void CCryptoTokenHai::EnsurePathL(RFs& aFs, const TDesC& aFile)
+    {
+    TInt err = aFs.MkDirAll(aFile);
+    if (err != KErrNone && err != KErrAlreadyExists)
+        {
+        User::Leave(err);
+        }
+    }
+
+/**
+ * Populates the string containing full ROM path of the keys file.
+ */
+void CCryptoTokenHai::MakePrivateROMFilenameL(RFs& aFs, const TDesC& aLeafName, TDes& aNameOut)
+    {
+    _LIT(KFileStoreROMDrive, "Z:");
+    
+    aNameOut.Copy(KFileStoreROMDrive);
+
+    // Get private path
+    TBuf<20> privatePath;
+    User::LeaveIfError(aFs.PrivatePath(privatePath)); 
+    aNameOut.Append(privatePath);
+    aNameOut.Append(aLeafName);
+    }
+
+/**
+ * Copies the contents of source file to destination file.
+ * 
+ * This is typically used to copy the keys file from ROM to RAM.
+ */
+void CCryptoTokenHai::CopyL(RFs& aFs, const TDesC& aSouce, const TDesC& aDest)
+    {
+    RFileReadStream in;
+    User::LeaveIfError(in.Open(aFs, aSouce, EFileRead | EFileShareReadersOnly));
+    CleanupClosePushL(in);
+
+    RFileWriteStream out;
+    User::LeaveIfError(out.Replace(aFs, aDest, EFileWrite | EFileShareExclusive));
+    CleanupClosePushL(out);
+
+    in.ReadL(out);  
+    CleanupStack::PopAndDestroy(2, &in);
+    }
+
+/**
+ * Keys corresponding to this store are present in hwkeys.dat. 
+ * In the production code written by licensees, this would be the path 
+ * where device keys are stored.
+ */
+_LIT(KKeyStoreFilename,"hwkeys.dat");
+
+/**
+ * Opens a store containing hardware keys.
+ * 
+ * This function uses the following logic to open the store:-
+ * -# Try to open the store from the private directory.
+ * -# If this fails copy the file from ROM to RAM.
+ * -# If both fail, create your own keys store from scratch.
+ */
+void CCryptoTokenHai::OpenStoreL()
+	{
+	TFileName fullPath;
+	MakePrivateFilenameL(iFs, KKeyStoreFilename, fullPath);
+
+	EnsurePathL(iFs, fullPath);
+	TRAPD(result, OpenStoreInFileL(fullPath));
+
+	if (result == KErrInUse  ) 
+		{		
+		// Cannot access the file now. Abort rather than wiping the keystore.
+		User::Leave(result); 
+		}
+	
+	if (result != KErrNone )
+		{		
+		/*
+		 * Not yet opened a valid store, either no file to be found, or 
+		 * no valid store in it. Copy the original one stored in the 
+		 * ROM.
+		 */
+		TRAPD(result2, CopyStoreFromROML(fullPath, result));
+				
+		if (KErrNone != result2)
+			{
+			/*
+			 * We tried to copy the keystore from ROM. For some reason this
+			 * failed and we still cannot open the file. Create a new one from
+			 * scratch.
+			 */ 
+			CreateStoreInFileL(fullPath);
+			}
+		}
+
+	}
+
+/**
+ * Copies the key store file from ROM to RAM.
+ */
+void CCryptoTokenHai::CopyStoreFromROML(const TDesC& fullPath, TInt result)
+    {
+    if (result != KErrNotFound)
+        {
+        // Wipe the keystore if we can't open it (it's corrupt anyway)
+        User::LeaveIfError(iFs.Delete(fullPath));
+        }
+
+    TFileName romPath;
+    MakePrivateROMFilenameL(iFs, KKeyStoreFilename, romPath);
+
+    // Copy data from rom and open it   
+    CopyL(iFs, romPath, fullPath);
+    OpenStoreInFileL(fullPath);
+    }
+
+/**
+ * Opens a store from the given file.
+ */
+void CCryptoTokenHai::OpenStoreInFileL(const TDesC& aFile)
+	{
+	RFile file;
+	User::LeaveIfError(file.Open(iFs, aFile, EFileRead | EFileWrite | EFileShareAny));
+	CleanupClosePushL(file);
+    delete iFileStore;
+    iFileStore = NULL;
+
+	iFileStore = CPermanentFileStore::FromL(file);
+    // iFileStore takes ownership of file now
+	CleanupStack::Pop(&file);
+	
+    // Get the salt, root and manager TStreamIds
+    iRootStreamId = iFileStore->Root();
+    if (iRootStreamId == KNullStreamId)
+        {
+        User::Leave(KErrCorrupt);
+        }
+    RStoreReadStream rootStream;
+    rootStream.OpenLC(*iFileStore, iRootStreamId);
+    ReadKeysFromStoreL();
+    CleanupStack::PopAndDestroy(&rootStream);
+    }
+
+/**
+ * Creates a keys store in RAM from scratch.
+ * 
+ * @note This function should never get called as hwkeys.dat should be 
+ * always present in ROM. If this function somehow gets called, it 
+ * will create a hwkeys.dat file from scratch. However, this file would 
+ * not contain any keys and tests would not pass.
+ */
+void CCryptoTokenHai::CreateStoreInFileL(const TDesC& aFile)
+	{
+	TInt r = iFs.MkDirAll(aFile);
+	if ( (r!=KErrNone) && (r!=KErrAlreadyExists) )
+		User::Leave(r);
+
+    delete iFileStore;
+    iFileStore = NULL;
+	iFileStore = CPermanentFileStore::ReplaceL(iFs, aFile, EFileRead | EFileWrite | EFileShareExclusive);
+	iFileStore->SetTypeL(KPermanentFileStoreLayoutUid);
+
+	TCleanupItem cleanupStore(RevertStore, iFileStore);
+	CleanupStack::PushL(cleanupStore);
+	
+	// Create root stream - just contains id of info stream
+	RStoreWriteStream rootStream;
+	iRootStreamId = rootStream.CreateLC(*iFileStore);
+	iFileStore->SetRootL(iRootStreamId);
+	WriteKeysToStoreL(rootStream);
+	iFileStore->CommitL();
+	CleanupStack::PopAndDestroy(&rootStream);
+	CleanupStack::Pop(); // cleanupStore
+	}
+
+/**
+ * Copies the keys stored in the instance to inputted write stream.
+ * 
+ * This invokes the CKeyDetails::ExternalizeL() function.
+ */
+void CCryptoTokenHai::WriteKeysToStoreL(RStoreWriteStream& aRootStream)
+	{
+	TInt keyCount = iKeys.Count();
+	aRootStream.WriteInt32L(keyCount);
+
+	for (TInt index = 0; index < keyCount; index++)
+		{
+		aRootStream << *iKeys[index];
+		}
+	aRootStream.CommitL();
+	}
+
+/**
+ * Copies the keys present in the read store to instance of class.
+ * 
+ * This eventually invokes the CKeyDetails::InternalizeL() function.
+ */
+void CCryptoTokenHai::ReadKeysFromStoreL()
+	{
+	RStoreReadStream rootStream;
+	
+	rootStream.OpenLC(*iFileStore, iRootStreamId);
+	TInt keyCount = rootStream.ReadInt32L();
+
+	for (TInt index = 0; index < keyCount; index++)
+		{
+		CKeyDetails* keyDetails = CKeyDetails::NewL(rootStream);
+		iKeys.Append(keyDetails);
+		}
+	CleanupStack::PopAndDestroy(&rootStream);
+	}
+
+/**
+ * This is a cleanup item that reverts the store.
+ */
+void CCryptoTokenHai::RevertStore(TAny* aStore)
+	{
+	CPermanentFileStore* store = reinterpret_cast<CPermanentFileStore*>(aStore);
+	TRAP_IGNORE(store->RevertL());
+	}
+
+/**
+ * Compacts the store.
+ */
+void CCryptoTokenHai::CompactStore()
+    {
+    ASSERT(iFileStore);
+    TRAP_IGNORE(iFileStore->ReclaimL(); iFileStore->CompactL());
+    }
+
+/**
+ * Populates the list of keys based on the input filter.
+ * 
+ * @param aFilter Set of conditions to be used to decide which keys 
+ * should be listed
+ * @param aKeys Output param. Contains the array of keys which fulfil 
+ * criteria mentioned in filter. Caller should take responsibility of 
+ * this array.
+ * 
+ * @leave Any of the system wide error codes.
+ * 
+ * @note Though Crypto Token HAI internally operates in CKeyDetails, 
+ * this function returns CCTKeyInfo array.
+ */
+EXPORT_C void CCryptoTokenHai::ListL(const TCTKeyAttributeFilter&  aFilter , 
+                RPointerArray<CCTKeyInfo>& aKeys) const
+    {
+    TInt count = iKeys.Count();
+    for(TInt index = 0 ;index < count; ++ index)
+    	{
+    	const CKeyDetails* keyDetails = iKeys[index];
+    	
+    	if(KeyMatchesFilterL(*keyDetails,aFilter))
+    		{
+			MCTAuthenticationObject* authObject = NULL;
+			HBufC8* attribute = keyDetails->PKCS8AttributeSet().AllocLC();
+			HBufC* label = keyDetails->Label().AllocLC();
+			
+			CCTKeyInfo* keyInfo = CCTKeyInfo::NewL(
+					keyDetails->ID(),keyDetails->Usage(),keyDetails->Size(),
+					authObject,label,iToken,keyDetails->Handle(),keyDetails->UsePolicy(),
+					keyDetails->ManagementPolicy(),keyDetails->Algorithm(),keyDetails->AccessType(),
+					keyDetails->Native(),keyDetails->StartDate(),keyDetails->EndDate(),attribute);
+			
+			CleanupStack::Pop(2, attribute); // label
+			CleanupReleasePushL(*keyInfo);
+						
+			User::LeaveIfError(aKeys.Append(keyInfo));
+			CleanupStack::Pop(keyInfo); 
+			
+			}
+    	}
+    	
+    }
+
+/**
+ * Takes in a filter and key details and decides if key fulfils the 
+ * filter criteria.
+ * 
+ * @param aInfo The Key Details
+ * @param aFilter Filter specifying the conditions to be satisfied for 
+ * listing the keys.
+ * 
+ * @retval ETrue if key satisfies the conditions specified in filter
+ * @retval EFalse otherwise.
+ * 
+ * @leave KErrArgument If there is an issue in policy filter.
+ */
+TBool CCryptoTokenHai::KeyMatchesFilterL(const CKeyDetails& aInfo,
+										   const TCTKeyAttributeFilter& aFilter) const
+	{
+		
+	if (aFilter.iKeyId.Length() && aFilter.iKeyId != aInfo.ID())
+		{
+		return EFalse;
+		}
+
+	if (aFilter.iUsage != EPKCS15UsageAll)
+		{
+		if ((aInfo.Usage() & aFilter.iUsage) == 0)
+			return EFalse;
+		}
+
+	if (aFilter.iKeyAlgorithm != CCTKeyInfo::EInvalidAlgorithm && 
+		aFilter.iKeyAlgorithm != aInfo.Algorithm())
+		{
+		return EFalse;
+		}
+	
+	switch (aFilter.iPolicyFilter)
+		{
+		case TCTKeyAttributeFilter::EAllKeys:
+			// All keys pass
+			break;
+			   
+		case TCTKeyAttributeFilter::EUsableKeys:
+			if (!aInfo.UsePolicy().CheckPolicy(RThread()))
+				{
+				return EFalse;
+				}
+			break;
+			
+		case TCTKeyAttributeFilter::EManageableKeys:
+			if (!aInfo.ManagementPolicy().CheckPolicy(RThread()))
+				{
+				return EFalse;
+				}
+			break;
+
+		case TCTKeyAttributeFilter::EUsableOrManageableKeys:
+			if (!aInfo.UsePolicy().CheckPolicy(RThread()) &&
+				!aInfo.ManagementPolicy().CheckPolicy(RThread()))
+				{
+				return EFalse;
+				}
+			break;
+						
+		default:
+			User::Leave(KErrArgument);
+		}
+
+	return ETrue;
+	}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tcryptotokenhai/tcryptotokenhai.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,93 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* This class implements the reference Crypto Token Hardware Abstraction 
+* Interface (HAI). It is just intended to show how operations using 
+* device keys can be performed using crypto token framework. In the 
+* real world scenario, this HAI should be replaced by device drivers 
+* by the licensees. In such a case, all the operations performed by 
+* the replacing class would be performed in Kernel Space.
+*
+*/
+
+
+/**
+ * @file
+ * @internalComponent
+ * @released
+ */
+#ifndef CCRYPTOTOKENHAI_H
+#define CCRYPTOTOKENHAI_H
+
+#include <e32base.h>
+#include <f32file.h>
+#include <S32FILE.H>
+#include <mctkeystore.h>
+
+class CKeyDetails;
+class MCTToken;
+
+namespace CryptoSpi
+	{
+	class CSigner;
+	}
+
+NONSHARABLE_CLASS(CCryptoTokenHai) : public CBase
+	{
+	public:
+		IMPORT_C static CCryptoTokenHai* NewLC(MCTToken* aToken);
+		IMPORT_C static CCryptoTokenHai* NewL(MCTToken* aToken);
+		IMPORT_C ~CCryptoTokenHai();
+		
+	public:
+		IMPORT_C void DecryptL(TInt aHandle,
+								const TDesC8& aCiphertext,
+								HBufC8*& aPlaintext );
+	
+		IMPORT_C void SignL( 	TInt aHandle,
+								const TDesC8& aPlaintext,
+								HBufC8*& aSignature );
+	
+		IMPORT_C TInt KeyPresent( TInt aHandle );
+		IMPORT_C void ExportPrivateKeyL( TInt aHandle, HBufC8*& aKey );
+		IMPORT_C void ExportPublicKeyL( TInt aHandle, HBufC8*& aKey );
+		IMPORT_C void ImportKeyL( const TDesC& aLabel, const TDesC8& aPrivateKey, const TDesC8& aPublicKey );
+		IMPORT_C void ListL(const TCTKeyAttributeFilter& aFilter, RPointerArray<CCTKeyInfo>& aKeys) const;
+		
+	private:
+		void ConstructL();
+		CCryptoTokenHai(MCTToken& aToken);
+	    void OpenStoreL();
+	    void OpenStoreInFileL(const TDesC& aFile);
+	    void CreateStoreInFileL(const TDesC& aFile);
+	    void MakePrivateFilenameL(RFs& aFs, const TDesC& aLeafName, TDes& aNameOut);
+		void EnsurePathL(RFs& aFs, const TDesC& aFile);
+		void MakePrivateROMFilenameL(RFs& aFs, const TDesC& aLeafName, TDes& aNameOut);
+		void CopyL(RFs& aFs, const TDesC& aSouce, const TDesC& aDest);
+		void CompactStore();
+		static void RevertStore(TAny* aStore);
+		void ReadKeysFromStoreL();
+		TBool KeyMatchesFilterL(const CKeyDetails& aInfo, const TCTKeyAttributeFilter& aFilter) const;
+		void CopyStoreFromROML(const TDesC& fullPath, TInt result);
+		void WriteKeysToStoreL(RStoreWriteStream& aRootStream);
+		
+	private:
+		RPointerArray<CKeyDetails> iKeys;
+		RFs iFs;
+		CPermanentFileStore* iFileStore;
+		TStreamId iRootStreamId;
+		MCTToken& iToken;
+	};
+
+#endif	//	CCRYPTOTOKENHAI_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tcryptotokenhai/tcryptotokenhai.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Reference crypto token implementation
+*
+*/
+
+
+
+/**
+ @file
+*/
+
+// reference implementation for hardware adaptation interface
+
+target tcryptotokenhai.dll
+targettype dll
+
+// ECom Dll recognition UID followed by the unique UID for this dll
+UID 0x10009D8D 0x101Faaa1
+VENDORID 0x70000001
+CAPABILITY All -TCB
+
+DEFFILE tcryptotokenhai.def
+
+SOURCEPATH	.
+SOURCE tcryptotokenhai.cpp
+
+SOURCEPATH ../thwkeystore/common
+SOURCE tkeydetails.cpp
+
+SYSTEMINCLUDE 	/epoc32/include 
+
+USERINCLUDE .
+USERINCLUDE ../thwkeystore/common
+USERINCLUDE ../../../../crypto/weakcryptospi/inc/spi
+
+LIBRARY	euser.lib 
+LIBRARY cryptospi.lib
+LIBRARY ctframework.lib
+LIBRARY efsrv.lib
+LIBRARY estor.lib
+
+SMPSAFE
+
--- a/cryptoservices/filebasedcertificateandkeystores/test/tfiletokens/CServerOOMTestRunner.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tfiletokens/CServerOOMTestRunner.h	Mon Oct 12 10:17:04 2009 +0300
@@ -19,7 +19,7 @@
 #ifndef __CSERVEROOMTESTRUNNER_H__
 #define __CSERVEROOMTESTRUNNER_H__
 
-#include <clientsession.h>
+#include "clientsession.h"
 #include "t_testrunner.h"
 #include <f32file.h>
 
--- a/cryptoservices/filebasedcertificateandkeystores/test/tfiletokens/t_filetokens.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tfiletokens/t_filetokens.h	Mon Oct 12 10:17:04 2009 +0300
@@ -19,7 +19,7 @@
 #ifndef __T_FILETOKENS_H__
 #define __T_FILETOKENS_H__
 
-#include <testhandler2/t_testaction.h>
+#include "t_testaction.h"
 
 _LIT8(KServerOOMTestStart, "startserveroom");
 _LIT8(KServerOOMTestStop, "stopserveroom");
--- a/cryptoservices/filebasedcertificateandkeystores/test/tfiletokens/tfiletokens.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tfiletokens/tfiletokens.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -27,9 +27,9 @@
 VENDORID		0x70000001
 CAPABILITY		All -Tcb
 
-SYSTEMINCLUDE	/epoc32/include
-SYSTEMINCLUDE 	../../source/generic/client 
-SYSTEMINCLUDE 	../../source/generic/common
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+USERINCLUDE 	../../source/generic/client 
+USERINCLUDE 	../../source/generic/common
 
 USERINCLUDE		../../../../cryptomgmtlibs/securitytestfw/test/testhandler2
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/client/101faaaa.rss	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,45 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Registration data for reference hardware plugin dll
+*
+*/
+
+
+#include <cryptotokenregistryinfo.rh>
+
+RESOURCE REGISTRY_INFO theInfo
+	{
+	dll_uid = 0x101Faaaa;
+	interfaces = 
+		{
+		INTERFACE_INFO
+			{
+			interface_uid = CT_INTERFACE_UID;
+			implementations = 
+				{
+				BINARY_IMPLEMENTATION_INFO
+					{
+					implementation_uid = 0x101FFFF4;
+					version_no = 1;
+					display_name = "Test reference hardware plugin implementation";
+					default_data = { 0x34, 0x73, 0x1F, 0x10,	//	MKeyStore
+									 0x35, 0x73, 0x1F, 0x10 };	//	KeyStore Manager
+					opaque_data = {	CT_SOFTWARE,CT_FALSE,
+									CT_REMOVABLE, CT_FALSE};
+					}
+				};
+			}
+		};
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/client/thwkeystore.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <e32std.h>
+#include <ecom/implementationproxy.h>
+#include "thwtokentypeclient.h"
+
+const TInt KHardwareImplementationId = 0x101FFFF4;
+
+static CCTTokenType* NewFunctionL();
+
+CCTTokenType* NewFunctionL()
+	{
+	CCTTokenType* hardwareKeyStore = CHardwareTokenTypeClient::NewL();
+	return hardwareKeyStore;
+	}
+
+const TImplementationProxy ImplementationTable[] =
+	{
+	IMPLEMENTATION_PROXY_ENTRY(KHardwareImplementationId, NewFunctionL)
+	};
+
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
+	{
+	aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+	return (ImplementationTable);
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/client/thwkeystoreclient.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,503 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Contains the implementation of CHardwareKeyStoreClient. In this 
+* class only the newly added APIs for WMDRM have been implemented. 
+* So this is not a full functional crypto token.
+*
+*/
+
+
+#include "thwkeystoreclient.h"
+#include "thwkeystoredefs.h"
+#include "keys.h"
+#include <cryptospi/cryptospidef.h>
+#include "cryptoasymmetriccipherapi.h"
+#include "cryptosignatureapi.h"
+#include <s32mem.h>
+
+MCTTokenInterface* CHardwareKeyStoreClient::NewKeyStoreInterfaceL(MCTToken& aToken)
+	{
+	//	Destroyed by MCTTokenInterface::DoRelease() 
+	CHardwareKeyStoreClient* me = new (ELeave) CHardwareKeyStoreClient(aToken);
+	CleanupStack::PushL(me);
+	me->ConstructL();
+	CleanupStack::Pop(me);
+	return (me);
+	}
+
+CHardwareKeyStoreClient::CHardwareKeyStoreClient(MCTToken& aToken)
+	: CActive(EPriorityNormal), 
+	// Reference count starts at one as we're always created and returned by a GetInterface() call on the token
+	iRefCount(1),
+	iToken(aToken)
+	{
+	}
+
+void CHardwareKeyStoreClient::ConstructL()
+	{
+	CActiveScheduler::Add(this);
+	iCryptoTokenHai = CCryptoTokenHai::NewL(&iToken);
+	}
+
+CHardwareKeyStoreClient::~CHardwareKeyStoreClient()
+	{
+	Cancel();
+	delete iCryptoTokenHai;
+	}
+
+MCTToken& CHardwareKeyStoreClient::Token()
+	{
+	return iToken;
+	}
+
+void CHardwareKeyStoreClient::AddRef()
+	{
+	++iRefCount;
+	
+	iToken.AddRef();
+	}
+
+void CHardwareKeyStoreClient::DoRelease()
+	{
+	--iRefCount;
+
+	ASSERT(iRefCount >= 0);
+	if (iRefCount == 0)
+		{
+		MCTTokenInterface::DoRelease();
+		}
+	}
+
+void CHardwareKeyStoreClient::ReleaseObject(const TCTTokenObjectHandle& /*aHandle*/)
+	{
+	}
+
+void CHardwareKeyStoreClient::RunL()
+	{
+	User::LeaveIfError(iStatus.Int());
+	
+	switch(iState)
+		{
+		case ECreateSigner:
+		{
+			if(iCryptoTokenHai->KeyPresent(iHandle.iObjectId) != KErrNotFound)
+			    {
+                CryptoSpi::TKeyProperty keyProperty;
+                keyProperty.iAlgorithmUid = CryptoSpi::KEccSignerUid;
+                    
+                CryptoSpi::CCryptoParams* keyParameters = CryptoSpi::CCryptoParams::NewLC();
+                keyParameters->AddL(iHandle.iObjectId, CryptoSpi::KPassedHandleToKeyUid);
+                CryptoSpi::CKey* newKey = CryptoSpi::CKey::NewL(keyProperty, *keyParameters);
+                CleanupStack::PushL(newKey);
+                
+                CryptoSpi::CSignatureFactory::CreateSignerL( *(iClientBuffer.iSigner), CryptoSpi::KEccSignerUid, 
+                                                            *newKey, CryptoSpi::KPaddingModeNoneUid, 
+                                                            NULL );
+                
+                CleanupStack::PopAndDestroy(newKey);
+                CleanupStack::PopAndDestroy(keyParameters);
+			    }
+			else
+                {
+                User::Leave(KErrNotFound);
+                }
+		}
+		break;
+		case ECreateAsymmetricCipher:
+		{
+			if(iCryptoTokenHai->KeyPresent(iHandle.iObjectId) != KErrNotFound)
+                {
+                CryptoSpi::TKeyProperty keyProperty;
+                keyProperty.iAlgorithmUid = CryptoSpi::KEccCipherUid;
+                    
+                CryptoSpi::CCryptoParams* keyParameters = CryptoSpi::CCryptoParams::NewLC();
+                keyParameters->AddL(iHandle.iObjectId, CryptoSpi::KPassedHandleToKeyUid);
+                CryptoSpi::CKey* newKey = CryptoSpi::CKey::NewL(keyProperty, *keyParameters);
+                CleanupStack::PushL(newKey);
+                
+                CryptoSpi::CAsymmetricCipherFactory::CreateAsymmetricCipherL(
+                                    *(iClientBuffer.iAsymmetricCipher), CryptoSpi::KEccCipherUid,
+                                    *newKey, CryptoSpi::KCryptoModeDecryptUid,
+                                    CryptoSpi::KPaddingModeNoneUid, NULL);
+                
+                CleanupStack::PopAndDestroy(newKey);
+                CleanupStack::PopAndDestroy(keyParameters);
+                }
+			else
+			    {
+			    User::Leave(KErrNotFound);
+			    }
+		}
+		break;
+		case EDecryptInHardware:
+        {
+            if(iCryptoTokenHai->KeyPresent(iHandle.iObjectId) != KErrNotFound)
+                {
+                iCryptoTokenHai->DecryptL(iHandle.iObjectId, *iPtr, *(iClientBuffer.decryptedText));
+                }
+            else
+                {
+                User::Leave(KErrNotFound);
+                }
+        }
+        break;
+        case ESignInHardware:
+        	{
+            if(iCryptoTokenHai->KeyPresent(iHandle.iObjectId) != KErrNotFound)
+                {
+                HBufC8* signature;
+                iCryptoTokenHai->SignL(iHandle.iObjectId, *iPtr, signature);
+                CleanupStack::PushL(signature);
+                iClientBuffer.iSignature->AddL(signature->Des(), CryptoSpi::KEccKeyTypeUid);
+                CleanupStack::PopAndDestroy(signature);
+                }
+            else
+                {
+                User::Leave(KErrNotFound);
+                }
+            break;
+        	}
+        		
+		case EExportKey:
+			{
+		    if(iCryptoTokenHai->KeyPresent(iHandle.iObjectId) != KErrNotFound)
+		        {
+		        iCryptoTokenHai->ExportPublicKeyL(iHandle.iObjectId, *iPublicKey);
+		        }
+		    else
+		        {
+		        User::Leave(KErrNotFound);
+		        }
+		    break;
+			}
+		default:
+			User::Leave(KErrArgument);
+		}
+	
+	User::RequestComplete(iClientStatus,KErrNone);	
+	}
+
+void CHardwareKeyStoreClient::DoCancel()
+	{
+	User::RequestComplete(iClientStatus,KErrCancel);	
+	}
+
+TInt CHardwareKeyStoreClient::RunError(TInt aError)
+    {
+    User::RequestComplete(iClientStatus, aError);
+    return KErrNone;
+    }
+
+/*
+ * MKeystore interfaces
+ */	
+	
+void CHardwareKeyStoreClient::List(
+		RMPointerArray<CCTKeyInfo>& aKeys, 
+		const TCTKeyAttributeFilter& aFilter, 
+		TRequestStatus& aStatus)
+	{
+	iClientStatus = &aStatus;
+    *iClientStatus = KRequestPending;
+    TRequestStatus* status = &aStatus;
+    TRAPD(err,iCryptoTokenHai->ListL(aFilter,aKeys));
+    User::RequestComplete(status, err);
+    }
+
+void CHardwareKeyStoreClient::CancelList()
+	{
+	
+	}
+
+void CHardwareKeyStoreClient::GetKeyInfo(TCTTokenObjectHandle /*aHandle*/, CCTKeyInfo*& /*aInfo*/, 
+								   TRequestStatus& aStatus)
+	{	
+	TRequestStatus* status = &aStatus;
+	User::RequestComplete(status, KErrNotSupported);
+	}
+
+void CHardwareKeyStoreClient::CancelGetKeyInfo()
+	{
+	// synchronous, nothing to do
+	}
+
+void CHardwareKeyStoreClient::Open(const TCTTokenObjectHandle& /*aHandle*/, 
+							 MRSASigner*& /*aSigner*/, 
+							 TRequestStatus& aStatus)
+	{
+	TRequestStatus* status = &aStatus;
+	User::RequestComplete(status, KErrNotSupported);
+	}
+
+void CHardwareKeyStoreClient::Open(const TCTTokenObjectHandle& /*aHandle*/, 
+							 MCTSigner<CDSASignature*>*& /*aSigner*/, 
+							 TRequestStatus& aStatus)
+	{
+	TRequestStatus* status = &aStatus;
+	User::RequestComplete(status, KErrNotSupported);
+	}
+
+void CHardwareKeyStoreClient::Open(const TCTTokenObjectHandle& /*aHandle*/, 
+							 MCTDecryptor*& /*aDecryptor*/,
+							 TRequestStatus& aStatus)
+	{
+	TRequestStatus* status = &aStatus;
+	User::RequestComplete(status, KErrNotSupported);
+	}
+
+void CHardwareKeyStoreClient::Open(const TCTTokenObjectHandle& /*aHandle*/, 
+							 MCTDH*& /*aDH*/, TRequestStatus& aStatus)
+	{
+	TRequestStatus* status = &aStatus;
+	User::RequestComplete(status, KErrNotSupported);
+	}
+
+void CHardwareKeyStoreClient::CancelOpen()
+	{
+	// synchronous, nothing to do
+	}
+
+/** Returns the public key in DER-encoded ASN-1 */
+void CHardwareKeyStoreClient::ExportPublic(const TCTTokenObjectHandle& aHandle,
+									 HBufC8*& aPublicKey,
+									 TRequestStatus& aStatus)
+	{
+	//TRequestStatus* status = &aStatus;
+	iClientStatus = &aStatus;
+	
+	iStatus = KRequestPending;
+    *iClientStatus = KRequestPending;
+    iPublicKey = &aPublicKey;
+    iHandle = aHandle;
+    TRequestStatus* status = &iStatus;
+    SetActive();
+    iState = EExportKey;
+    
+    User::RequestComplete(status, KErrNone);
+	}
+
+void CHardwareKeyStoreClient::CancelExportPublic()
+	{
+	// synchronous, nothing to do
+	}
+
+//	*********************************************************************************
+//	MCTKeyStoreManager
+//	*********************************************************************************
+void CHardwareKeyStoreClient::CreateKey(CCTKeyInfo*& /*aReturnedKey*/, TRequestStatus& aStatus)
+	{
+	TRequestStatus* status = &aStatus;
+	User::RequestComplete(status, KErrNotSupported);
+	}
+
+void CHardwareKeyStoreClient::CancelCreateKey()
+	{
+	}
+
+/**
+ * This function is not implemented since in the WMDRM case, device 
+ * are preprovisioned inside the device. Hence implementing this 
+ * function is not required.
+ */
+void CHardwareKeyStoreClient::ImportKey(const TDesC8& /*aKey*/, CCTKeyInfo*& /*aReturnedKey*/, TRequestStatus& aStatus)
+	{
+	TRequestStatus* status = &aStatus;
+	User::RequestComplete(status, KErrNotSupported);
+	}
+
+void CHardwareKeyStoreClient::CancelImportKey()
+	{
+	}
+
+void CHardwareKeyStoreClient::ImportEncryptedKey(const TDesC8& /*aKey*/, CCTKeyInfo*& /*aReturnedKey*/, TRequestStatus& aStatus)
+	{
+	TRequestStatus* status = &aStatus;
+	User::RequestComplete(status, KErrNotSupported);
+	}
+
+void CHardwareKeyStoreClient::CancelImportEncryptedKey()
+	{
+	}
+
+void CHardwareKeyStoreClient::ExportKey(TCTTokenObjectHandle /*aHandle*/, HBufC8*& /*aKey*/, TRequestStatus& aStatus)
+	{
+	TRequestStatus* status = &aStatus;
+	User::RequestComplete(status, KErrNotSupported);
+	}
+
+void CHardwareKeyStoreClient::CancelExportKey()
+	{
+	}
+
+void CHardwareKeyStoreClient::ExportEncryptedKey(TCTTokenObjectHandle /*aHandle*/, const CPBEncryptParms& /*aParams*/,  HBufC8*& /*aKey*/, TRequestStatus& aStatus)
+ 	{
+	TRequestStatus* status = &aStatus;
+	User::RequestComplete(status, KErrNotSupported);
+ 	}
+
+void CHardwareKeyStoreClient::CancelExportEncryptedKey()
+	{
+	}
+
+void CHardwareKeyStoreClient::DeleteKey(TCTTokenObjectHandle /*aHandle*/, TRequestStatus& aStatus)
+	{
+	TRequestStatus* status = &aStatus;
+	User::RequestComplete(status, KErrNotSupported);
+	}
+
+void CHardwareKeyStoreClient::CancelDeleteKey()
+	{
+	// synchronous, nothing to do
+	}
+
+void CHardwareKeyStoreClient::SetUsePolicy(TCTTokenObjectHandle /*aHandle*/, 
+									 const TSecurityPolicy& /*aPolicy*/,
+									 TRequestStatus& aStatus)
+	{
+	TRequestStatus* status = &aStatus;
+	User::RequestComplete(status, KErrNotSupported);
+	}
+
+void CHardwareKeyStoreClient::CancelSetUsePolicy()
+	{
+	// synchronous, nothing to do
+	}
+
+void CHardwareKeyStoreClient::SetManagementPolicy(TCTTokenObjectHandle /*aHandle*/, 
+											const TSecurityPolicy& /*aPolicy*/,
+											TRequestStatus& aStatus)
+	{
+	TRequestStatus* status = &aStatus;
+	User::RequestComplete(status, KErrNotSupported);
+	}
+
+void CHardwareKeyStoreClient::CancelSetManagementPolicy()
+	{
+	// synchronous, nothing to do
+	}
+
+/**
+ * @todo
+ * This interface should return KErrNotSupported but because of the way 
+ * it has been implemented in unifiedkeystore this is returning 
+ * KErrNone. This should be fixed later.
+ */ 
+void CHardwareKeyStoreClient::SetPassphraseTimeout(TInt /*aTimeout*/, TRequestStatus& aStatus)
+	{
+	TRequestStatus* status = &aStatus;
+	User::RequestComplete(status, KErrNone);
+	}
+
+void CHardwareKeyStoreClient::CancelSetPassphraseTimeout()
+	{
+	// No point cancelling, not asynchronous
+	}
+
+/**
+ * @todo
+ * This interface should return KErrNotSupported but because of the way 
+ * it has been implemented in unifiedkeystore this is returning 
+ * KErrNone. This should be fixed later.
+ */ 
+void CHardwareKeyStoreClient::Relock(TRequestStatus& aStatus)
+	{
+	TRequestStatus* status = &aStatus;
+	User::RequestComplete(status, KErrNone);
+	}
+
+void CHardwareKeyStoreClient::CancelRelock()
+	{
+	// No point cancelling, not asynchronous
+	}
+
+
+void CHardwareKeyStoreClient::Open(	const TCTTokenObjectHandle& aHandle,
+									CryptoSpi::CSigner*& aSigner,
+									TRequestStatus& aStatus )
+	{
+	iClientStatus = &aStatus;    
+    iStatus = KRequestPending;
+    *iClientStatus = KRequestPending;
+    iClientBuffer.iSigner = &aSigner;
+    iHandle = aHandle;
+    TRequestStatus* status = &iStatus;
+    SetActive();
+    iState = ECreateSigner;
+    User::RequestComplete(status, KErrNone);
+	}
+
+void CHardwareKeyStoreClient::Open(	const TCTTokenObjectHandle& aHandle,
+									CryptoSpi::CAsymmetricCipher*& aAsymmetricCipher,
+									TRequestStatus& aStatus )
+	{
+    iClientStatus = &aStatus;    
+    iStatus = KRequestPending;
+    *iClientStatus = KRequestPending;
+    iClientBuffer.iAsymmetricCipher = &aAsymmetricCipher;
+    iHandle = aHandle;
+    TRequestStatus* status = &iStatus;
+    SetActive();
+    iState = ECreateAsymmetricCipher;
+    User::RequestComplete(status, KErrNone);
+	}
+
+
+void CHardwareKeyStoreClient::Decrypt(	const TCTTokenObjectHandle& aHandle,
+        const TDesC8& aCiphertext,
+										HBufC8*& aPlaintextPtr,
+										TRequestStatus& aStatus )
+	{
+    iClientStatus = &aStatus;    
+    iStatus = KRequestPending;
+    *iClientStatus = KRequestPending;
+    iHandle = aHandle;
+    iPtr = &aCiphertext;
+    iClientBuffer.decryptedText = &aPlaintextPtr;
+    TRequestStatus* status = &iStatus;
+    SetActive();
+    iState = EDecryptInHardware;
+    User::RequestComplete(status, KErrNone);
+	}
+
+void CHardwareKeyStoreClient::Sign(	const TCTTokenObjectHandle& aHandle,
+        const TDesC8& aPlaintext,
+										CryptoSpi::CCryptoParams*& aSignature,
+										TRequestStatus& aStatus )
+	{
+    iClientStatus = &aStatus;    
+    iStatus = KRequestPending;
+    *iClientStatus = KRequestPending;
+    iHandle = aHandle;
+    iPtr = &aPlaintext;
+    iClientBuffer.iSignature = aSignature;
+    TRequestStatus* status = &iStatus;
+    SetActive();
+    iState = ESignInHardware;
+    User::RequestComplete(status, KErrNone);
+	}
+
+
+void CHardwareKeyStoreClient::ImportKey(	TPtr /* aLabel */, 
+											TPtr8 /* aPrivateKey */, TPtr8 /* aPublicKey */ , 
+											TRequestStatus& aStatus)
+	{
+    TRequestStatus* status = &aStatus;
+    User::RequestComplete(status, KErrNone);
+	}
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/client/thwkeystoreclient.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,175 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Implements the MCTKeyStoreManager interface.
+*
+*/
+
+
+/**
+ * @file
+ * @internalComponent
+ * @released
+ */
+#ifndef CHARDWAREKEYSTORECLIENT_H
+#define CHARDWAREKEYSTORECLIENT_H
+
+#include <mctkeystoremanager.h>
+
+#include "cryptoasymmetriccipherapi.h"
+#include <asymmetric.h>
+#include <cryptospi/cryptoparams.h>
+#include "thwkeystoredefs.h"
+#include "tcryptotokenhai.h"
+
+/**
+ * Implements the MCTKeyStoreManager interface.
+ *
+ * The class implements the keystore manager token interface for the software
+ * keystore.  It will be created and owned by the unified keystore.
+ */
+NONSHARABLE_CLASS(CHardwareKeyStoreClient) : public CActive, public MCTKeyStoreManager
+{
+public:
+	static MCTTokenInterface* NewKeyStoreInterfaceL(MCTToken& aToken);
+
+public:
+	virtual ~CHardwareKeyStoreClient();
+	void AddRef();
+
+public:
+	void RunL();
+	virtual void DoCancel();
+	TInt RunError(TInt aError);
+	
+public:
+//	MKeyStore
+	virtual void List(RMPointerArray<CCTKeyInfo>& aKeys, const TCTKeyAttributeFilter& aFilter, TRequestStatus& aStatus);
+	virtual void CancelList();
+	virtual void GetKeyInfo(TCTTokenObjectHandle aHandle, CCTKeyInfo*& aInfo, TRequestStatus& aStatus);
+	virtual void CancelGetKeyInfo();
+	
+	// Open an RSA key for signing
+	virtual void Open(const TCTTokenObjectHandle& aHandle, 
+					  MRSASigner*& aSigner,
+					  TRequestStatus& aStatus);
+	// Open a DSA key for signing
+	virtual void Open(const TCTTokenObjectHandle& aHandle, 
+					  MDSASigner*& aSigner, 
+					  TRequestStatus& aStatus);
+	// Open a RSA key for private decryption
+	virtual void Open(const TCTTokenObjectHandle& aHandle, 
+					  MCTDecryptor*& aDecryptor,
+					  TRequestStatus& aStatus);
+	// Open a DH key for key agreement
+	virtual void Open(const TCTTokenObjectHandle& aHandle, 
+					  MCTDH*& aDH, TRequestStatus& aStatus);
+
+
+	// Cancels an ongoing open request
+	virtual void CancelOpen();
+	
+	// Returns the public key in DER-encoded ASN-1
+	virtual void ExportPublic(const TCTTokenObjectHandle& aHandle,
+							  HBufC8*& aPublicKey,
+							  TRequestStatus& aStatus);
+	virtual void CancelExportPublic();
+
+	virtual void Open(const TCTTokenObjectHandle& aHandle,
+		                  CryptoSpi::CSigner*& aSigner,
+		                  TRequestStatus& aStatus);
+	
+	virtual void Open(const TCTTokenObjectHandle& aHandle,
+		                  CryptoSpi::CAsymmetricCipher*& asymmetricCipherObj,
+		                  TRequestStatus& aStatus);
+	
+	virtual void Decrypt(const TCTTokenObjectHandle& aHandle,
+                            const TDesC8& aCiphertext,
+		                       HBufC8*& aPlaintextPtr,
+		                       TRequestStatus& aStatus);
+	
+	virtual void Sign(const TCTTokenObjectHandle& aHandle,
+                           const TDesC8& aPlaintext,
+		                    CryptoSpi::CCryptoParams*& aSignature,
+		                    TRequestStatus& aStatus);
+
+public:
+//	MCTKeyStoreManager
+	virtual void CreateKey(CCTKeyInfo*& aReturnedKey, TRequestStatus& aStatus);
+	virtual void CancelCreateKey();
+	virtual void ImportKey(const TDesC8& aKey, CCTKeyInfo*& aReturnedKey, TRequestStatus& aStatus);
+	virtual void CancelImportKey();
+	virtual void ImportEncryptedKey(const TDesC8& aKey, CCTKeyInfo*& aReturnedKey, TRequestStatus& aStatus);
+	virtual void CancelImportEncryptedKey();
+	virtual void ExportKey(TCTTokenObjectHandle aHandle, HBufC8*& aKey, TRequestStatus& aStatus); 
+	virtual void CancelExportKey();
+	virtual void ExportEncryptedKey(TCTTokenObjectHandle aHandle, const CPBEncryptParms& aParams, HBufC8*& aKey, TRequestStatus& aStatus);
+	virtual void CancelExportEncryptedKey();
+	virtual void DeleteKey(TCTTokenObjectHandle aHandle, TRequestStatus& aStatus);
+	virtual void CancelDeleteKey();	
+	virtual void SetUsePolicy(TCTTokenObjectHandle aHandle, const TSecurityPolicy& aPolicy, TRequestStatus& aStatus);
+	virtual void CancelSetUsePolicy();
+	virtual void SetManagementPolicy(TCTTokenObjectHandle aHandle, const TSecurityPolicy& aPolicy, TRequestStatus& aStatus);
+	virtual void CancelSetManagementPolicy();
+	virtual void SetPassphraseTimeout(TInt aTimeout, TRequestStatus& aStatus);
+	virtual void CancelSetPassphraseTimeout();	
+	virtual void Relock(TRequestStatus& aStatus);
+	virtual void CancelRelock();	
+
+	void ReleaseObject(const TCTTokenObjectHandle& aObject);
+
+public:
+	/**
+	 * this method os not a part of the framework, has been added so 
+	 * that addition of keys to the hardware can be simulated for 
+	 * testing purposes.
+	 */ 
+	void ImportKey(	TPtr aLabel, TPtr8 aPrivateKey, 
+					TPtr8 aPublicKey , TRequestStatus& aStatus);
+
+public:	
+//	From MCTTokenInterface
+	virtual MCTToken& Token();
+
+protected:
+//	From MCTTokenInterface
+	virtual void DoRelease();
+
+protected:
+	CHardwareKeyStoreClient(MCTToken& aToken);
+	virtual void ConstructL();
+
+private:
+	TInt iRefCount;
+	MCTToken& iToken;					// The token we belong to
+	THwKeystoreMessages iState;
+	TRequestStatus* iClientStatus;
+	TCTTokenObjectHandle iHandle;
+	RPointerArray<CCTKeyInfo>* iKeys;
+	TBuf8<256> iBuffer;
+	CCryptoTokenHai* iCryptoTokenHai;
+	HBufC8** iPublicKey;
+	const TDesC8* iPtr; 
+	TCTKeyAttributeFilter iFilter;
+	union
+	{
+	CryptoSpi::CSigner** iSigner;
+	CryptoSpi::CAsymmetricCipher** iAsymmetricCipher;
+	CryptoSpi::CCryptoParams* iSignature;
+	HBufC8** decryptedText;
+	}iClientBuffer;
+	
+};
+
+#endif	//	CHARDWAREKEYSTORECLIENT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/client/thwkeystoreclient.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,63 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Reference plugin for simulating crypto token hardware plugin. 
+*
+*/
+
+
+
+target 101faaaa.dll
+targettype plugin
+
+// ECom Dll recognition UID followed by the unique UID for this dll
+UID 0x10009D8D 0x101Faaaa
+VENDORID 0x70000001
+CAPABILITY All -TCB
+
+SOURCEPATH	.
+
+SOURCE thwkeystore.cpp
+SOURCE thwkeystoreclient.cpp
+SOURCE thwtokentypeclient.cpp
+SOURCE thwtokenclient.cpp
+
+start resource 101faaaa.rss
+target 101faaaa.rsc
+end
+
+SYSTEMINCLUDE 	/epoc32/include
+/*
+ * Need to put "/epoc32/include/ecom" as one of the system includes 
+ * as cryptotokenregistryinfo.rh has the line, '#include "registryinfo.rh"'
+ * in place of '#include <ecom/registryinfo.rh>'
+ */
+SYSTEMINCLUDE 	/epoc32/include/ecom
+
+USERINCLUDE .
+USERINCLUDE	../../../../../crypto/weakcryptospi/inc
+USERINCLUDE	../../../../../crypto/weakcryptospi/inc/spi
+USERINCLUDE ../common
+USERINCLUDE ../../tcryptotokenhai
+
+LIBRARY	euser.lib 
+LIBRARY estor.lib
+LIBRARY ctframework.lib
+LIBRARY cryptospi.lib
+LIBRARY scsclient.lib 
+LIBRARY fstokenshared.lib
+LIBRARY tcryptotokenhai.lib
+
+SMPSAFE
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/client/thwtokenclient.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,88 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include "thwtokenclient.h"
+#include "thwkeystoreclient.h"
+
+_LIT(KTokenString, "Hardware plugin implementation");
+
+
+MCTToken* CHardwareTokenClient::NewL(MCTTokenType* aTokenType)
+	{
+	CHardwareTokenClient* self = new (ELeave) CHardwareTokenClient(aTokenType);
+	return static_cast<MCTToken*>(self);
+	}
+
+CHardwareTokenClient::CHardwareTokenClient(MCTTokenType* aTokenType)
+			:	iTokenType(aTokenType),
+				iRefCount(0)
+	{
+	}
+
+MCTTokenType& CHardwareTokenClient::TokenType()
+	{
+	return *iTokenType;
+	}
+
+const TDesC& CHardwareTokenClient::Label()
+	{
+	return KTokenString();
+	}
+
+TCTTokenHandle CHardwareTokenClient::Handle()
+	{
+	return (TCTTokenHandle(iTokenType->Type(), 0));
+	}
+
+TInt& CHardwareTokenClient::ReferenceCount()
+	{
+	return iRefCount;
+	}
+
+void CHardwareTokenClient::DoGetInterface(TUid aRequiredInterface, MCTTokenInterface*& aReturnedInterface, TRequestStatus& aStatus)
+	{
+	// No longer calls server to get the interface - just creates a client object of the appropriate type
+	TUid userUid = {0x101F7334};
+	TUid managerUid = {0x101F7335};
+
+	aReturnedInterface = NULL;
+	TInt err = KErrGeneral;
+	
+	if( userUid == aRequiredInterface || managerUid == aRequiredInterface )
+		{
+		TRAP(err, aReturnedInterface = CHardwareKeyStoreClient::NewKeyStoreInterfaceL(*this));
+		}
+						
+	if (NULL == aReturnedInterface)
+		{
+		Release();
+		}
+	
+	TRequestStatus* status = &aStatus;
+	User::RequestComplete(status, err);		
+	}
+
+TBool CHardwareTokenClient::DoCancelGetInterface()
+	{//	Not an asynchronous call for current file store, so nothing to do
+	return EFalse;
+	}
+
+const TDesC& CHardwareTokenClient::Information(TTokenInformation /*aRequiredInformation*/)
+	{
+	return KNullDesC;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/client/thwtokenclient.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* This class inherits from class MCTToken and implements all the pure 
+* virtual methods exposed by MCTToken. This provides the 
+* MCTTokenInterface and also provides reference counting.
+*
+*/
+
+
+/**
+ * @file
+ * @internalComponent
+ * @released
+ */
+#ifndef CHARDWARETOKENCLIENT_H
+#define	CHARDWARETOKENCLIENT_H
+
+#include <ct.h>
+
+NONSHARABLE_CLASS(CHardwareTokenClient) : public CBase, public MCTToken
+{
+public:
+	static MCTToken* NewL(MCTTokenType* aTokenType);
+
+public:	//	From MCTToken
+	virtual MCTTokenType& TokenType();
+	virtual const TDesC& Label();
+	virtual TCTTokenHandle Handle();
+
+protected:	//	From MCTToken
+	virtual TInt& ReferenceCount();
+	virtual void DoGetInterface(TUid aRequiredInterface, MCTTokenInterface*& aReturnedInterface, TRequestStatus& aStatus);
+	virtual TBool DoCancelGetInterface();
+	virtual const TDesC& Information(TTokenInformation aRequiredInformation);
+
+private:
+	CHardwareTokenClient(MCTTokenType* aTokenType);
+
+private:
+	MCTTokenType* iTokenType;
+	TInt iRefCount;
+};
+
+#endif // CHARDWARETOKENCLIENT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/client/thwtokentypeclient.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,105 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include "thwtokentypeclient.h"
+#include "thwtokenclient.h"
+
+_LIT(KTokenDesc, "Default Token");
+	
+CCTTokenType* CHardwareTokenTypeClient::NewL()
+	{
+	//	Destroyed by call to CCTTokenType::Release (refcounted)
+	CHardwareTokenTypeClient* self = new (ELeave) CHardwareTokenTypeClient();
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+
+	return self;
+	}
+
+CHardwareTokenTypeClient::CHardwareTokenTypeClient()
+	{
+	}
+
+CHardwareTokenTypeClient::~CHardwareTokenTypeClient()
+	{
+	}
+
+void CHardwareTokenTypeClient::ConstructL()
+	{
+	}
+	
+void CHardwareTokenTypeClient::List(RCPointerArray<HBufC>& aTokens, TRequestStatus& aStatus)
+	{
+	HBufC* name = NULL;
+	TRAPD(err, name = KTokenDesc().AllocL());
+	
+	if(KErrNone == err)
+		{
+		err = aTokens.Append(name);
+		}
+
+	if(KErrNone != err)
+		{
+		delete name;
+		}
+	
+	TRequestStatus* status = &aStatus;
+	User::RequestComplete(status, err);
+	}
+
+void CHardwareTokenTypeClient::CancelList()
+	{
+	// implementation not asynchronous
+	}
+
+void CHardwareTokenTypeClient::OpenToken(const TDesC& /*aTokenInfo*/, MCTToken*& aToken, TRequestStatus& aStatus)
+	{
+	// Token Information not used. TokenClient will be created for all tokeninfo
+	aToken = NULL;
+	TRAPD(err, aToken = CHardwareTokenClient::NewL(this));
+
+	//	Token opened, increment our reference count
+	if(err == KErrNone)
+		{
+		IncReferenceCount();
+		}
+
+	TRequestStatus* status = &aStatus;
+	User::RequestComplete(status, err);
+	}
+
+void CHardwareTokenTypeClient::OpenToken(TCTTokenHandle /*aHandle*/, MCTToken*& aToken, TRequestStatus& aStatus)
+	{
+	aToken = NULL;
+	TRAPD(err, aToken = CHardwareTokenClient::NewL(this));
+
+	//	Token opened, increment our reference count
+	if(NULL != aToken)
+		{
+		IncReferenceCount();
+		}
+
+	TRequestStatus* status = &aStatus;
+	User::RequestComplete(status, err);
+	}
+
+void CHardwareTokenTypeClient::CancelOpenToken()
+	{
+	// implementation not asynchronous
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/client/thwtokentypeclient.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,59 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* This class inherits from class CCTTokenType which in turn inherits 
+* from the class MCTTokenType. This class implements all the pure 
+* virtual functions exposed by class MCTTokenType. This defines a new 
+* crypto token type.
+*
+*/
+
+
+/**
+ * @file
+ * @internalComponent
+ * @released
+ */
+#ifndef CHARDWARETOKENTYPECLIENT_H
+#define CHARDWARETOKENTYPECLIENT_H
+
+#include <ct/ccttokentype.h>
+
+NONSHARABLE_CLASS(CHardwareTokenTypeClient) :  public CCTTokenType
+{
+public:
+	/** Creates a representation of the CCTTokenType
+	 *	Called by ECom or directly accessible.
+	 */
+	static CCTTokenType* NewL();
+
+public:
+	virtual ~CHardwareTokenTypeClient();
+
+public:	//	From MCTTokenType
+	virtual void List(RCPointerArray<HBufC>& aTokens, TRequestStatus& aStatus);
+	virtual void CancelList();
+	virtual void OpenToken(const TDesC& aTokenInfo, MCTToken*& aToken, TRequestStatus& aStatus);
+	virtual void OpenToken(TCTTokenHandle aHandle, MCTToken*& aToken, TRequestStatus& aStatus);
+	virtual void CancelOpenToken();
+
+private:
+	void OpenToken(MCTTokenType* aTokenType);
+
+private:
+	CHardwareTokenTypeClient();
+	void ConstructL();
+};
+
+#endif	//	CHARDWARETOKENTYPECLIENT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/common/thwkeystoredefs.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Contains the messages which the ctf plug-in sends to itself. In a 
+* client server model, these messages will be sent to server.
+*
+*/
+
+
+/**
+ @file 
+ @internalTechnology
+*/
+
+#ifndef HWKEYSTOREDEFS_H
+#define HWKEYSTOREDEFS_H
+
+#include <e32base.h>
+
+const TInt KHwKeystoreMajorVersion = 1;
+const TInt KHwKeystoreMinorVersion = 0;
+const TInt KHwKeystoreBuildVersion = 0;
+
+/**	
+ * Request message enumeration within the client. This is needed since 
+ * unified key store calls are asynchronous in nature. Hence client 
+ * needs to send messages to itself.
+ */
+enum THwKeystoreMessages
+	{
+	ERequireNoCapabilities=0x00,
+	EIdle,
+	ECancel,
+	EImportKey,
+	EExportKey,
+	EKeyPresent,
+	ECreateSigner,
+	ECreateAsymmetricCipher,
+	ESignInHardware,
+	EDecryptInHardware
+	};
+
+
+
+#endif	//	HWKEYSTOREDEFS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/common/tkeydetails.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,130 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Defines the class which represents the structure of the key on 
+* which Crypto Token HAI internally operates. It contains the key 
+* information relevant to Crypto Token HAI.
+*
+*/
+
+
+#include "tkeydetails.h"
+#include <mctkeystore.h>
+
+CKeyDetails::CKeyDetails()
+	{}
+
+CKeyDetails::~CKeyDetails()
+	{
+	delete iPrivateKey;
+	delete iPublicKey;
+	}
+
+TInt CKeyDetails::Handle() const
+	{
+	return iHandle;
+	}
+
+HBufC8* CKeyDetails::PrivateKey() const
+	{
+	return iPrivateKey;
+	}
+
+HBufC8* CKeyDetails::PublicKey() const
+    {
+    return iPublicKey;
+    }
+
+CKeyDetails* CKeyDetails::NewL(	TInt aHandle, 
+								const TDesC& aLabel, 
+								const TDesC8& aPrivateKey, 
+								const TDesC8& aPublicKey )
+	{
+	CKeyDetails* keyDetails = new (ELeave) CKeyDetails();
+	CleanupStack::PushL(keyDetails);
+	keyDetails->ConstructL(aHandle, aLabel, aPrivateKey, aPublicKey);
+	CleanupStack::Pop(keyDetails);
+	return keyDetails;
+	}
+
+
+CKeyDetails* CKeyDetails::NewL(RStoreReadStream& aReadStream)
+    {
+    CKeyDetails* self = new (ELeave) CKeyDetails();
+    CleanupStack::PushL(self);
+    self->InternalizeL(aReadStream);
+    CleanupStack::Pop(self);
+    return (self);
+    }
+
+void CKeyDetails::ConstructL(	TInt aHandle, const TDesC& aLabel, 
+								const TDesC8& aPrivateKey, const TDesC8& aPublicKey )
+	{
+	CKeyInfoBase::ConstructL();
+	iHandle = aHandle;
+	iLabel = aLabel.AllocL();
+	iPrivateKey = aPrivateKey.AllocL();
+	iPublicKey = aPublicKey.AllocL();
+	    
+	// set the access type to never extractable
+	iAccessType |= CKeyInfoBase::ENeverExtractable;
+	iAccessType |= CKeyInfoBase::ELocal;
+			
+	}
+
+void CKeyDetails::ExternalizeL(RWriteStream& aWriteStream) const
+    {
+    aWriteStream.WriteInt32L(iHandle);
+
+    TInt stringLen = iLabel->Length();
+    aWriteStream.WriteInt32L(stringLen);
+    TPtr stringPtr = iLabel->Des();
+    stringPtr.SetLength(stringLen);
+    aWriteStream.WriteL(stringPtr);
+    
+    stringLen = iPrivateKey->Length();
+    aWriteStream.WriteInt32L(stringLen);
+    TPtr8 keyPtr = iPrivateKey->Des();
+    keyPtr.SetLength(stringLen);
+    aWriteStream.WriteL(keyPtr);
+        
+    stringLen = iPublicKey->Length();
+    aWriteStream.WriteInt32L(stringLen);
+    keyPtr = iPublicKey->Des();
+    keyPtr.SetLength(stringLen);
+    aWriteStream.WriteL(keyPtr);
+    }
+
+void CKeyDetails::InternalizeL(RReadStream& aReadStream)
+    {
+    iHandle = aReadStream.ReadInt32L();
+
+    TInt stringLen = aReadStream.ReadInt32L();
+    iLabel = HBufC::NewMaxL(stringLen);
+    TPtr labelPtr((TUint16*)iLabel->Ptr(), stringLen, stringLen);
+    labelPtr.FillZ(stringLen);
+    aReadStream.ReadL(labelPtr);
+    
+    stringLen = aReadStream.ReadInt32L();
+    iPrivateKey = HBufC8::NewMaxL(stringLen);
+    TPtr8 privateKeyPtr((TUint8*)iPrivateKey->Ptr(), stringLen, stringLen);
+    privateKeyPtr.FillZ(stringLen);
+    aReadStream.ReadL(privateKeyPtr);
+        
+    stringLen = aReadStream.ReadInt32L();
+    iPublicKey = HBufC8::NewMaxL(stringLen);
+    TPtr8 publicKeyPtr((TUint8*)iPublicKey->Ptr(), stringLen, stringLen);
+    publicKeyPtr.FillZ(stringLen);
+    aReadStream.ReadL(publicKeyPtr);
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/common/tkeydetails.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,60 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Defines the class which represents the structure of the key on 
+* which Crypto Token HAI internally operates. It contains the key 
+* information relevant to Crypto Token HAI.
+*
+*/
+
+
+/**
+ @file
+ @internalComponent
+ @released
+*/
+
+#ifndef TKEYDETAILS_H
+#define TKEYDETAILS_H
+
+#include <e32base.h>
+#include <mctkeystore.h>
+
+class CKeyDetails : public CKeyInfoBase
+	{
+public:
+
+	static CKeyDetails* NewL(	TInt aHandle, const TDesC& aLabel, 
+								const TDesC8& aPrivateKey, const TDesC8& aPublicKey );
+	static CKeyDetails* NewL(RStoreReadStream& aReadStream);
+	~CKeyDetails();
+
+public:
+	/** Get the handle of the key. */
+	TInt Handle() const;
+	HBufC8* PrivateKey() const;
+	HBufC8* PublicKey() const;
+	void ExternalizeL(RWriteStream&) const;
+	
+private:
+	void ConstructL(TInt aHandle, const TDesC& aLabel,const TDesC8& aPrivateKey, const TDesC8& aPublicKey );
+	CKeyDetails();
+	void InternalizeL(RReadStream& aReadStream);
+	
+private:
+	HBufC8* iPrivateKey;
+	HBufC8* iPublicKey;
+	};
+
+#endif // TKEYDETAILS_H
Binary file cryptoservices/filebasedcertificateandkeystores/test/tkeystore/data/hwkeys.dat has changed
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/authenticate_useauth.ini	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/authenticate_useauth.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -1,83 +1,164 @@
-[SEC-AUTHENTICATE_USEAUTH-0001-002]
-<actionbody>
-	<mode>manager</mode>
-</actionbody>
-
-[SEC-AUTHENTICATE_USEAUTH-0001-003]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>cheeku</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keystore>0</keystore>
-</actionbody>
-
-[SEC-AUTHENTICATE_USEAUTH-0001-004]
-<actionbody>
-	<listcount>1</listcount>
-	<foundkey>cheeku</foundkey>
-		<authenticate>1</authenticate>
-</actionbody>
-
-[SEC-AUTHENTICATE_USEAUTH-0001-005]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>cheeku</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<authenticate>1</authenticate>
-</actionbody>
-
-[SEC-AUTHENTICATE_USEAUTH-0001-006]
-<actionbody>
-	<authmode>set</authmode>
-	<keylabel>cheeku</keylabel>
-	<authexpression>medium</authexpression>
-	<freshness>21</freshness>
-	<authenticate>1</authenticate>
-</actionbody>
-
-[SEC-AUTHENTICATE_USEAUTH-0001-007]
-<actionbody>
-	<authmode>get</authmode>
-	<keylabel>cheeku</keylabel>
-	<expectedexpression>medium</expectedexpression>
-	<expectedfreshness>21</expectedfreshness>
-	<authenticate>1</authenticate>
-</actionbody>
-
-[SEC-AUTHENTICATE_USEAUTH-0001-008]
-<actionbody>
-	<keylabel>cheeku</keylabel>
-	<policy>
-	<secureid>0x101FFFFF</secureid>
-	<capability>DRM</capability>
-	<capability>ReadUserData</capability>
-	</policy>
-	<authenticate>1</authenticate>
-</actionbody>
-
-[SEC-AUTHENTICATE_USEAUTH-0001-009]
-<actionbody>
-	<keylabel>cheeku</keylabel>
-	<policy>
-	<capability>DRM</capability>
-	<capability>ReadUserData</capability>
-	<capability>WriteUserData</capability>
-	</policy>
-	<authenticate>1</authenticate>
-</actionbody>
-
-[SEC-AUTHENTICATE_USEAUTH-0001-010]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-AUTHENTICATE_USEAUTH-0001-012]
-<actionbody>
-	<seconds>5</seconds>
-</actionbody>
-
+[SEC-AUTHENTICATE_USEAUTH-0001-002]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+</actionbody>
+
+
+
+[SEC-AUTHENTICATE_USEAUTH-0001-003]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>cheeku</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keystore>0</keystore>
+
+</actionbody>
+
+
+
+[SEC-AUTHENTICATE_USEAUTH-0001-004]
+
+<actionbody>
+
+	<foundkey>cheeku</foundkey>
+
+		<authenticate>1</authenticate>
+
+</actionbody>
+
+
+
+[SEC-AUTHENTICATE_USEAUTH-0001-005]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>cheeku</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<authenticate>1</authenticate>
+
+</actionbody>
+
+
+
+[SEC-AUTHENTICATE_USEAUTH-0001-006]
+
+<actionbody>
+
+	<authmode>set</authmode>
+
+	<keylabel>cheeku</keylabel>
+
+	<authexpression>medium</authexpression>
+
+	<freshness>21</freshness>
+
+	<authenticate>1</authenticate>
+
+</actionbody>
+
+
+
+[SEC-AUTHENTICATE_USEAUTH-0001-007]
+
+<actionbody>
+
+	<authmode>get</authmode>
+
+	<keylabel>cheeku</keylabel>
+
+	<expectedexpression>medium</expectedexpression>
+
+	<expectedfreshness>21</expectedfreshness>
+
+	<authenticate>1</authenticate>
+
+</actionbody>
+
+
+
+[SEC-AUTHENTICATE_USEAUTH-0001-008]
+
+<actionbody>
+
+	<keylabel>cheeku</keylabel>
+
+	<policy>
+
+	<secureid>0x101FFFFF</secureid>
+
+	<capability>DRM</capability>
+
+	<capability>ReadUserData</capability>
+
+	</policy>
+
+	<authenticate>1</authenticate>
+
+</actionbody>
+
+
+
+[SEC-AUTHENTICATE_USEAUTH-0001-009]
+
+<actionbody>
+
+	<keylabel>cheeku</keylabel>
+
+	<policy>
+
+	<capability>DRM</capability>
+
+	<capability>ReadUserData</capability>
+
+	<capability>WriteUserData</capability>
+
+	</policy>
+
+	<authenticate>1</authenticate>
+
+</actionbody>
+
+
+
+[SEC-AUTHENTICATE_USEAUTH-0001-010]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-AUTHENTICATE_USEAUTH-0001-012]
+
+<actionbody>
+
+	<seconds>5</seconds>
+
+</actionbody>
+
+
+
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/authobjects_v2.ini	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/authobjects_v2.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -1,1855 +1,3704 @@
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0001-002]
-<actionbody>
-	<mode>manager</mode>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0002-001]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create flyingelephant</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0002-002]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>30</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0002-003]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>30</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0002-004]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0002-005]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>mango</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0002-006]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>tomato</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0002-007]
-<actionbody>
-	<listcount>3</listcount>
-	<foundkey>banana</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>tomato</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0002-008]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>0</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0003-001]
-<actionbody>
-	<timeout>5</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0003-002]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>5</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0003-003]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<timeout>5</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0003-004]
-<actionbody>
-	<keylabel>tomato</keylabel>
-	<timeout>5</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0004-001]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>10</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0004-002]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>10</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0004-003]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<timeout>10</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0004-004]
-<actionbody>
-	<keylabel>tomato</keylabel>
-	<timeout>10</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0005-001]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>0</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0005-002]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>flyingelephant</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0005-003]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>10</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0005-004]
-<actionbody>
-	<seconds>5</seconds>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0005-005]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>5</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0005-006]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0005-007]
-<actionbody>
-	<seconds>5</seconds>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0005-008]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>0</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0005-009]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>flyingelephant</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0006-001]
-<actionbody>
-	<keylabel>banana</keylabel>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0006-002]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>flyingelephant</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0006-003]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0006-004]
-<actionbody>
-	<keylabel>banana</keylabel>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0006-005]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<passphrase>flyingelephant</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0006-006]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0007-001]
-<actionbody>
-	<keylabel>mango</keylabel>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0007-002]
-<actionbody>
-	<keylabel>banana</keylabel>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0007-003]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<passphrase>flyingelephant</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0007-004]
-<actionbody>
-	<keylabel>banana</keylabel>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0008-001]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<passphrase>wrong</passphrase>
-	<passphrase>wrong</passphrase>
-	<passphrase>wrong</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0008-002]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<passphrase>wrong</passphrase>
-	<passphrase>flyingelephant</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0008-003]
-<actionbody>
-	<keylabel>banana</keylabel>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0008-004]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<passphrase>wrong</passphrase>
-	<passphrase>wrong</passphrase>
-	<passphrase>flyingelephant</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0009-001]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<foundkey>banana</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>tomato</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0009-002]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<foundkey>banana</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>tomato</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0009-003]
-<actionbody>
-	<keylabel>tomato</keylabel>
-	<foundkey>banana</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>tomato</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0010-001]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>30</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0010-002]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>flyingelephant</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0010-003]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<passphrase>change wrong1 redfox</passphrase>
-	<passphrase>change wrong2 redfox</passphrase>
-	<passphrase>change wrong3 redfox</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0010-004]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0010-005]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<passphrase>change flyingelephant redfox</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0010-006]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>flyingelephant</passphrase>
-	<passphrase>flyingelephant</passphrase>
-	<passphrase>flyingelephant</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0010-007]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>redfox</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0010-008]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>0</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0011-001]
-<actionbody>
-	<mode>manager</mode>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0011-002]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>30</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0011-003]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>redfox</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0011-004]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<keystore>1</keystore>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0011-005]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0011-006]
-<actionbody>
-	<keystore>1</keystore>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0011-007]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>redfox</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0011-009]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>0</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0012-001]
-<actionbody>
-	<keylabel>banana</keylabel>
-</actionbody>
-<actionresult>
-	<policy>
-			<secureid>0x101F7E95</secureid>
-		</policy>
-</actionresult>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0012-002]
-<actionbody>
-	<keylabel>banana</keylabel>
-</actionbody>
-<actionresult>
-	<policy>
-			<secureid>0x101F7E95</secureid>
-		</policy>
-</actionresult>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-001]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<policy>
-	<secureid>0x101FFFFF</secureid>
-	<capability>DRM</capability>
-	<capability>ReadUserData</capability>
-	</policy>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-002]
-<actionbody>
-	<keylabel>banana</keylabel>
-</actionbody>
-<actionresult>
-	<policy>
-			<secureid>0x101FFFFF</secureid>
-			<capability>DRM</capability>
-			<capability>ReadUserData</capability>
-		</policy>
-</actionresult>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-003]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<policy>
-	<vendorid>0x70000007</vendorid>
-	<capability>DRM</capability>
-	<capability>ReadUserData</capability>
-	</policy>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-004]
-<actionbody>
-	<keylabel>mango</keylabel>
-</actionbody>
-<actionresult>
-	<policy>
-			<vendorid>0x70000007</vendorid>
-			<capability>DRM</capability>
-			<capability>ReadUserData</capability>
-		</policy>
-</actionresult>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-005]
-<actionbody>
-	<keylabel>tomato</keylabel>
-	<policy>
-	<capability>DRM</capability>
-	<capability>ReadUserData</capability>
-	<capability>WriteUserData</capability>
-	<capability>ReadDeviceData</capability>
-	<capability>WriteDeviceData</capability>
-	</policy>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-006]
-<actionbody>
-	<keylabel>tomato</keylabel>
-</actionbody>
-<actionresult>
-	<policy>
-			<capability>DRM</capability>
-			<capability>ReadUserData</capability>
-			<capability>WriteUserData</capability>
-			<capability>ReadDeviceData</capability>
-			<capability>WriteDeviceData</capability>
-		</policy>
-</actionresult>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-007]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<policy>
-	<capability>DRM</capability>
-	<capability>ReadUserData</capability>
-	<capability>WriteUserData</capability>
-	<capability>NetworkControl</capability>
-	</policy>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-008]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<policy>
-	<secureid>0x101F7E96</secureid>
-	<capability>DRM</capability>
-	<capability>ReadUserData</capability>
-	<capability>WriteUserData</capability>
-	</policy>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-009]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<policy>
-	<vendorid>0x70000002</vendorid>
-	<capability>DRM</capability>
-	<capability>ReadUserData</capability>
-	<capability>WriteUserData</capability>
-	</policy>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-010]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<policy>
-	<capability>DRM</capability>
-	<capability>ReadUserData</capability>
-	<capability>WriteUserData</capability>
-	</policy>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-011]
-<actionbody>
-	<keylabel>banana</keylabel>
-</actionbody>
-<actionresult>
-	<policy>
-			<capability>DRM</capability>
-			<capability>ReadUserData</capability>
-			<capability>WriteUserData</capability>
-		</policy>
-</actionresult>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-012]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<policy>
-	<secureid>0x101F7E95</secureid>
-	<capability>ReadUserData</capability>
-	<capability>DRM</capability>
-	<capability>ReadDeviceData</capability>
-	</policy>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-013]
-<actionbody>
-	<keylabel>mango</keylabel>
-</actionbody>
-<actionresult>
-	<policy>
-			<secureid>0x101F7E95</secureid>
-			<capability>ReadUserData</capability>
-			<capability>DRM</capability>
-			<capability>ReadDeviceData</capability>
-		</policy>
-</actionresult>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-014]
-<actionbody>
-	<keylabel>tomato</keylabel>
-	<policy>
-	<vendorid>0x70000001</vendorid>
-	<capability>ReadUserData</capability>
-	<capability>DRM</capability>
-	<capability>WriteDeviceData</capability>
-	</policy>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-015]
-<actionbody>
-	<keylabel>tomato</keylabel>
-</actionbody>
-<actionresult>
-	<policy>
-			<vendorid>0x70000001</vendorid>
-			<capability>ReadUserData</capability>
-			<capability>DRM</capability>
-			<capability>WriteDeviceData</capability>
-		</policy>
-</actionresult>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0014-001]
-<actionbody>
-	<testexe>t_keystore.exe</testexe>
-	<excludedcapabilities>
-	<capability>TCB</capability>
-	</excludedcapabilities>
-	<policy>
-	<secureid>0x101FFFFF</secureid>
-	<capability>DRM</capability>
-	<capability>ReadUserData</capability>
-	</policy>
-
-	<preactions>
-	<action>
-		<actionname>1, Open key store in manager mode</actionname>
-		<actiontype>init</actiontype>
-		<actionbody>
-			<mode>manager</mode>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</preactions>
-
-	<passactions>
-	<action>
-		<actionname>2, Get key info</actionname>
-		<actiontype>getkeyinfo</actiontype>
-		<actionbody>
-			<keylabel>banana</keylabel>
-			<keyusage>allusagesbutNR</keyusage>
-			<keysize>512</keysize>
-			<keyalgorithm>RSA</keyalgorithm>
-			<keyaccesstype>Extractable</keyaccesstype>
-			<keyaccesstype>Local</keyaccesstype>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>3, Sign</actionname>
-		<actiontype>sign</actiontype>
-		<actionbody>
-			<keylabel>banana</keylabel>
-			<open>RSA</open>
-			<text>This is text of 20 .</text>
-			<passphrase>redfox</passphrase>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>4, Decrypt</actionname>
-		<actiontype>decrypt</actiontype>
-		<actionbody>
-			<keylabel>banana</keylabel>
-			<text>Ook!</text>
-			<passphrase>redfox</passphrase>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</passactions>
-
-	<failactions>
-	<action>
-		<actionname>2, Get key info</actionname>
-		<actiontype>getkeyinfo</actiontype>
-		<actionbody>
-			<keylabel>banana</keylabel>
-			<keyusage>allusagesbutNR</keyusage>
-			<keysize>512</keysize>
-			<keyalgorithm>RSA</keyalgorithm>
-			<keyaccesstype>Extractable</keyaccesstype>
-			<keyaccesstype>Local</keyaccesstype>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>3, Sign</actionname>
-		<actiontype>sign</actiontype>
-		<actionbody>
-			<keylabel>banana</keylabel>
-			<open>RSA</open>
-			<text>This is text of 20 .</text>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>4, Decrypt</actionname>
-		<actiontype>decrypt</actiontype>
-		<actionbody>
-			<keylabel>banana</keylabel>
-			<text>Ook!</text>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-	</failactions>
-
-	<postactions>
-	<action>
-		<actionname>5, Close key store</actionname>
-		<actiontype>delete</actiontype>
-		<actionbody></actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</postactions>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0014-002]
-<actionbody>
-	<testexe>t_keystore.exe</testexe>
-	<excludedcapabilities>
-	<capability>TCB</capability>
-	</excludedcapabilities>
-	<policy>
-	<vendorid>0x70000007</vendorid>
-	<capability>DRM</capability>
-	<capability>ReadUserData</capability>
-	</policy>
-
-	<preactions>
-	<action>
-		<actionname>1, Open key store in manager mode</actionname>
-		<actiontype>init</actiontype>
-		<actionbody>
-			<mode>manager</mode>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</preactions>
-
-	<passactions>
-	<action>
-		<actionname>2, Get key info</actionname>
-		<actiontype>getkeyinfo</actiontype>
-		<actionbody>
-			<keylabel>mango</keylabel>
-			<keyusage>allusagesbutNR</keyusage>
-			<keysize>512</keysize>
-			<keyalgorithm>DSA</keyalgorithm>
-			<keyaccesstype>Extractable</keyaccesstype>
-			<keyaccesstype>Local</keyaccesstype>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>3, Sign</actionname>
-		<actiontype>sign</actiontype>
-		<actionbody>
-			<keylabel>mango</keylabel>
-			<open>DSA</open>
-			<text>This is text of 20 .</text>
-			<passphrase>redfox</passphrase>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</passactions>
-
-	<failactions>
-	<action>
-		<actionname>2, Get key info</actionname>
-		<actiontype>getkeyinfo</actiontype>
-		<actionbody>
-			<keylabel>mango</keylabel>
-			<keyusage>allusagesbutNR</keyusage>
-			<keysize>512</keysize>
-			<keyalgorithm>DSA</keyalgorithm>
-			<keyaccesstype>Extractable</keyaccesstype>
-			<keyaccesstype>Local</keyaccesstype>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>3, Sign</actionname>
-		<actiontype>sign</actiontype>
-		<actionbody>
-			<keylabel>mango</keylabel>
-			<open>DSA</open>
-			<text>This is text of 20 .</text>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-	</failactions>
-
-	<postactions>
-	<action>
-		<actionname>4, Close key store</actionname>
-		<actiontype>delete</actiontype>
-		<actionbody></actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</postactions>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0014-003]
-<actionbody>
-	<testexe>t_keystore.exe</testexe>
-	<excludedcapabilities>
-	<capability>TCB</capability>
-	</excludedcapabilities>
-	<policy>
-	<capability>DRM</capability>
-	<capability>ReadUserData</capability>
-	<capability>WriteUserData</capability>
-	<capability>ReadDeviceData</capability>
-	<capability>WriteDeviceData</capability>
-	</policy>
-
-	<preactions>
-	<action>
-		<actionname>1, Open key store in manager mode</actionname>
-		<actiontype>init</actiontype>
-		<actionbody>
-			<mode>manager</mode>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</preactions>
-
-	<passactions>
-	<action>
-		<actionname>2, Get key info</actionname>
-		<actiontype>getkeyinfo</actiontype>
-		<actionbody>
-			<keylabel>tomato</keylabel>
-			<keyusage>allusagesbutNR</keyusage>
-			<keysize>512</keysize>
-			<keyalgorithm>DH</keyalgorithm>
-			<keyaccesstype>Extractable</keyaccesstype>
-			<keyaccesstype>Local</keyaccesstype>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>2, Test derive</actionname>
-		<actiontype>derive</actiontype>
-		<actionbody>
-			<keylabel>tomato</keylabel>
-			<n>DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F</n>
-			<g>02</g>
-			<passphrase>redfox</passphrase>
-			<passphrase>redfox</passphrase>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</passactions>
-
-	<failactions>
-	<action>
-		<actionname>2, Get key info</actionname>
-		<actiontype>getkeyinfo</actiontype>
-		<actionbody>
-			<keylabel>tomato</keylabel>
-			<keyusage>allusagesbutNR</keyusage>
-			<keysize>512</keysize>
-			<keyalgorithm>DH</keyalgorithm>
-			<keyaccesstype>Extractable</keyaccesstype>
-			<keyaccesstype>Local</keyaccesstype>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>2, Test derive</actionname>
-		<actiontype>derive</actiontype>
-		<actionbody>
-			<keylabel>tomato</keylabel>
-			<n>DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F</n>
-			<g>02</g>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-	</failactions>
-
-	<postactions>
-	<action>
-		<actionname>3, Close key store</actionname>
-		<actiontype>delete</actiontype>
-		<actionbody></actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</postactions>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0014-004]
-<actionbody>
-	<testexe>t_keystore.exe</testexe>
-	<excludedcapabilities>
-	<capability>TCB</capability>
-	</excludedcapabilities>
-	<policy>
-	<capability>DRM</capability>
-	<capability>ReadUserData</capability>
-	<capability>WriteUserData</capability>
-	</policy>
-
-	<preactions>
-	<action>
-		<actionname>1, Open key store in manager mode</actionname>
-		<actiontype>init</actiontype>
-		<actionbody>
-			<mode>manager</mode>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</preactions>
-
-	<passactions>
-
-	<action>
-		<actionname>1, Export</actionname>
-		<actiontype>exportkey</actiontype>
-		<actionbody>
-			<ExportFile>exported_banana.der</ExportFile>
-			<keyusage>allusagesbutNR</keyusage>
-			<keylabel>banana</keylabel>
-			<keyalgorithm>RSA</keyalgorithm>
-			<encrypted>0</encrypted>
-			<passphrase>redfox</passphrase>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>2, Export encrypted</actionname>
-		<actiontype>exportkey</actiontype>
-		<actionbody>
-			<ExportFile>exported_encrypted_banana.der</ExportFile>
-			<keyusage>allusagesbutNR</keyusage>
-			<keylabel>banana</keylabel>
-			<keyalgorithm>RSA</keyalgorithm>
-			<encrypted>1</encrypted>
-			<passphrase>redfox</passphrase>
-			<passphrase>export clanger</passphrase>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>3, Check use policy</actionname>
-		<actiontype>getusepolicy</actiontype>
-		<actionbody>
-			<keylabel>banana</keylabel>
-		</actionbody>
-		<actionresult>
-			<policy>
-				<secureid>0x101FFFFF</secureid>
-				<capability>DRM</capability>
-				<capability>ReadUserData</capability>
-			</policy>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>4, Set use policy</actionname>
-		<actiontype>setusepolicy</actiontype>
-		<actionbody>
-			<keylabel>banana</keylabel>
-			<policy>
-				<capability>ReadUserData</capability>
-				<capability>WriteUserData</capability>
-			</policy>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>5, Check use policy</actionname>
-		<actiontype>getusepolicy</actiontype>
-		<actionbody>
-			<keylabel>banana</keylabel>
-		</actionbody>
-		<actionresult>
-			<policy>
-				<capability>ReadUserData</capability>
-				<capability>WriteUserData</capability>
-			</policy>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>6, Check management policy</actionname>
-		<actiontype>getmanagementpolicy</actiontype>
-		<actionbody>
-			<keylabel>banana</keylabel>
-		</actionbody>
-		<actionresult>
-			<policy>
-				<capability>DRM</capability>
-				<capability>ReadUserData</capability>
-				<capability>WriteUserData</capability>
-			</policy>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>7, Set management policy</actionname>
-		<actiontype>setmanagementpolicy</actiontype>
-		<actionbody>
-			<keylabel>banana</keylabel>
-			<policy>
-				<capability>ReadUserData</capability>
-				<capability>WriteUserData</capability>
-			</policy>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>8, Check management policy</actionname>
-		<actiontype>getmanagementpolicy</actiontype>
-		<actionbody>
-			<keylabel>banana</keylabel>
-		</actionbody>
-		<actionresult>
-			<policy>
-				<capability>ReadUserData</capability>
-				<capability>WriteUserData</capability>
-			</policy>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>9, Delete key</actionname>
-		<actiontype>deletekeys</actiontype>
-		<actionbody>
-			<keylabel>banana</keylabel>
-			<deletecount>1</deletecount>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	</passactions>
-
-	<failactions>
-
-	<action>
-		<actionname>1, Export</actionname>
-		<actiontype>exportkey</actiontype>
-		<actionbody>
-			<ExportFile>exported_banana.der</ExportFile>
-			<keyusage>allusagesbutNR</keyusage>
-			<keylabel>banana</keylabel>
-			<keyalgorithm>RSA</keyalgorithm>
-			<encrypted>0</encrypted>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>2, Export encrypted</actionname>
-		<actiontype>exportkey</actiontype>
-		<actionbody>
-			<ExportFile>exported_encrypted_banana.der</ExportFile>
-			<keyusage>allusagesbutNR</keyusage>
-			<keylabel>banana</keylabel>
-			<keyalgorithm>RSA</keyalgorithm>
-			<encrypted>1</encrypted>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>3, Set use policy</actionname>
-		<actiontype>setusepolicy</actiontype>
-		<actionbody>
-			<keylabel>banana</keylabel>
-			<policy>
-				<capability>ReadUserData</capability>
-				<capability>WriteUserData</capability>
-			</policy>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>5, Set management policy</actionname>
-		<actiontype>setmanagementpolicy</actiontype>
-		<actionbody>
-			<keylabel>banana</keylabel>
-			<policy>
-				<capability>ReadUserData</capability>
-				<capability>WriteUserData</capability>
-			</policy>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>7, Delete key</actionname>
-		<actiontype>deletekeys</actiontype>
-		<actionbody>
-			<keylabel>banana</keylabel>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-
-	</failactions>
-
-	<postactions>
-	<action>
-		<actionname>4, Close key store</actionname>
-		<actiontype>delete</actiontype>
-		<actionbody></actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</postactions>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0014-005]
-<actionbody>
-	<testexe>t_keystore.exe</testexe>
-	<excludedcapabilities>
-	<capability>TCB</capability>
-	</excludedcapabilities>
-	<policy>
-	<secureid>0x101F7E95</secureid>
-	<capability>ReadUserData</capability>
-	<capability>DRM</capability>
-	<capability>ReadDeviceData</capability>
-	</policy>
-
-	<preactions>
-	<action>
-		<actionname>1, Open key store in manager mode</actionname>
-		<actiontype>init</actiontype>
-		<actionbody>
-			<mode>manager</mode>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</preactions>
-
-	<passactions>
-
-	<action>
-		<actionname>2, Export</actionname>
-		<actiontype>exportkey</actiontype>
-		<actionbody>
-			<ExportFile>exported_mango.der</ExportFile>
-			<keyusage>DSAUsage</keyusage>
-			<keylabel>mango</keylabel>
-			<keyalgorithm>DSA</keyalgorithm>
-			<encrypted>0</encrypted>
-			<passphrase>redfox</passphrase>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>3, Export encrypted</actionname>
-		<actiontype>exportkey</actiontype>
-		<actionbody>
-			<ExportFile>exported_encrypted_mango.der</ExportFile>
-			<keyusage>DSAUsage</keyusage>
-			<keylabel>mango</keylabel>
-			<keyalgorithm>DSA</keyalgorithm>
-			<encrypted>1</encrypted>
-			<passphrase>redfox</passphrase>
-			<passphrase>export clanger</passphrase>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>4, Check use policy</actionname>
-		<actiontype>getusepolicy</actiontype>
-		<actionbody>
-			<keylabel>mango</keylabel>
-		</actionbody>
-		<actionresult>
-			<policy>
-				<vendorid>0x70000007</vendorid>
-				<capability>DRM</capability>
-				<capability>ReadUserData</capability>
-			</policy>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>5, Set use policy</actionname>
-		<actiontype>setusepolicy</actiontype>
-		<actionbody>
-			<keylabel>mango</keylabel>
-			<policy>
-				<capability>ReadUserData</capability>
-				<capability>WriteUserData</capability>
-			</policy>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>6, Check use policy</actionname>
-		<actiontype>getusepolicy</actiontype>
-		<actionbody>
-			<keylabel>mango</keylabel>
-		</actionbody>
-		<actionresult>
-			<policy>
-				<capability>ReadUserData</capability>
-				<capability>WriteUserData</capability>
-			</policy>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>7, Check management policy</actionname>
-		<actiontype>getmanagementpolicy</actiontype>
-		<actionbody>
-			<keylabel>mango</keylabel>
-		</actionbody>
-		<actionresult>
-			<policy>
-				<secureid>0x101F7E95</secureid>
-				<capability>ReadUserData</capability>
-				<capability>DRM</capability>
-				<capability>ReadDeviceData</capability>
-			</policy>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>8, Set management policy</actionname>
-		<actiontype>setmanagementpolicy</actiontype>
-		<actionbody>
-			<keylabel>mango</keylabel>
-			<policy>
-				<capability>DRM</capability>
-				<capability>ReadDeviceData</capability>
-			</policy>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>9, Check management policy</actionname>
-		<actiontype>getmanagementpolicy</actiontype>
-		<actionbody>
-			<keylabel>mango</keylabel>
-		</actionbody>
-		<actionresult>
-			<policy>
-				<capability>DRM</capability>
-				<capability>ReadDeviceData</capability>
-			</policy>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>10, Delete key</actionname>
-		<actiontype>deletekeys</actiontype>
-		<actionbody>
-			<keylabel>mango</keylabel>
-			<deletecount>1</deletecount>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	</passactions>
-
-	<failactions>
-
-	<action>
-		<actionname>2, Export</actionname>
-		<actiontype>exportkey</actiontype>
-		<actionbody>
-			<ExportFile>exported_mango.der</ExportFile>
-			<keyusage>DSAUsage</keyusage>
-			<keylabel>mango</keylabel>
-			<keyalgorithm>DSA</keyalgorithm>
-			<encrypted>0</encrypted>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>3, Export encrypted</actionname>
-		<actiontype>exportkey</actiontype>
-		<actionbody>
-			<ExportFile>exported_encrypted_mango.der</ExportFile>
-			<keyusage>DSAUsage</keyusage>
-			<keylabel>mango</keylabel>
-			<keyalgorithm>DSA</keyalgorithm>
-			<encrypted>1</encrypted>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>4, Set use policy</actionname>
-		<actiontype>setusepolicy</actiontype>
-		<actionbody>
-			<keylabel>mango</keylabel>
-			<policy>
-				<capability>ReadUserData</capability>
-				<capability>WriteUserData</capability>
-			</policy>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>5, Set management policy</actionname>
-		<actiontype>setmanagementpolicy</actiontype>
-		<actionbody>
-			<keylabel>mango</keylabel>
-			<policy>
-				<capability>DRM</capability>
-				<capability>ReadDeviceData</capability>
-			</policy>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>6, Delete key</actionname>
-		<actiontype>deletekeys</actiontype>
-		<actionbody>
-			<keylabel>mango</keylabel>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-
-	</failactions>
-
-	<postactions>
-	<action>
-		<actionname>11, Close key store</actionname>
-		<actiontype>delete</actiontype>
-		<actionbody></actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</postactions>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0014-006]
-<actionbody>
-	<testexe>t_keystore.exe</testexe>
-	<excludedcapabilities>
-	<capability>TCB</capability>
-	</excludedcapabilities>
-	<policy>
-	<vendorid>0x70000001</vendorid>
-	<capability>ReadUserData</capability>
-	<capability>DRM</capability>
-	<capability>WriteDeviceData</capability>
-	</policy>
-
-	<preactions>
-	<action>
-		<actionname>1, Open key store in manager mode</actionname>
-		<actiontype>init</actiontype>
-		<actionbody>
-			<mode>manager</mode>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</preactions>
-
-	<passactions>
-
-	<action>
-		<actionname>2, Check use policy</actionname>
-		<actiontype>getusepolicy</actiontype>
-		<actionbody>
-			<keylabel>tomato</keylabel>
-		</actionbody>
-		<actionresult>
-			<policy>
-				<capability>DRM</capability>
-				<capability>ReadUserData</capability>
-				<capability>WriteUserData</capability>
-				<capability>ReadDeviceData</capability>
-				<capability>WriteDeviceData</capability>
-			</policy>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>3, Set use policy</actionname>
-		<actiontype>setusepolicy</actiontype>
-		<actionbody>
-			<keylabel>tomato</keylabel>
-			<policy>
-				<capability>ReadUserData</capability>
-				<capability>WriteUserData</capability>
-			</policy>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>4, Check use policy</actionname>
-		<actiontype>getusepolicy</actiontype>
-		<actionbody>
-			<keylabel>tomato</keylabel>
-		</actionbody>
-		<actionresult>
-			<policy>
-				<capability>ReadUserData</capability>
-				<capability>WriteUserData</capability>
-			</policy>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>5, Check management policy</actionname>
-		<actiontype>getmanagementpolicy</actiontype>
-		<actionbody>
-			<keylabel>tomato</keylabel>
-		</actionbody>
-		<actionresult>
-			<policy>
-				<vendorid>0x70000001</vendorid>
-				<capability>ReadUserData</capability>
-				<capability>DRM</capability>
-				<capability>WriteDeviceData</capability>
-			</policy>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>6, Set management policy</actionname>
-		<actiontype>setmanagementpolicy</actiontype>
-		<actionbody>
-			<keylabel>tomato</keylabel>
-			<policy>
-				<capability>DRM</capability>
-				<capability>WriteDeviceData</capability>
-			</policy>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>7, Check management policy</actionname>
-		<actiontype>getmanagementpolicy</actiontype>
-		<actionbody>
-			<keylabel>tomato</keylabel>
-		</actionbody>
-		<actionresult>
-			<policy>
-				<capability>DRM</capability>
-				<capability>WriteDeviceData</capability>
-			</policy>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>8, Delete key</actionname>
-		<actiontype>deletekeys</actiontype>
-		<actionbody>
-			<keylabel>tomato</keylabel>
-			<deletecount>1</deletecount>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	</passactions>
-
-	<failactions>
-
-	<action>
-		<actionname>2, Set use policy</actionname>
-		<actiontype>setusepolicy</actiontype>
-		<actionbody>
-			<keylabel>tomato</keylabel>
-			<policy>
-				<capability>ReadUserData</capability>
-				<capability>WriteUserData</capability>
-			</policy>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>3, Set management policy</actionname>
-		<actiontype>setmanagementpolicy</actiontype>
-		<actionbody>
-			<keylabel>tomato</keylabel>
-			<policy>
-				<capability>DRM</capability>
-				<capability>WriteDeviceData</capability>
-			</policy>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>4, Delete key</actionname>
-		<actiontype>deletekeys</actiontype>
-		<actionbody>
-			<keylabel>tomato</keylabel>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-
-	</failactions>
-
-	<postactions>
-	<action>
-		<actionname>9, Close key store</actionname>
-		<actiontype>delete</actiontype>
-		<actionbody></actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</postactions>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0015-001]
-<actionbody>
-	<testexe>t_keystore.exe</testexe>
-	<excludedcapabilities>
-	<capability>TCB</capability>
-	</excludedcapabilities>
-	<policy>
-	<capability>WriteDeviceData</capability>
-	</policy>
-
-	<preactions>
-	<action>
-		<actionname>Open key store in manager mode</actionname>
-		<actiontype>init</actiontype>
-		<actionbody>
-			<mode>manager</mode>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</preactions>
-
-	<passactions>
-	<action>
-		<actionname>0.7.2, Set passphrase timeout to "don't cache"</actionname>
-		<actiontype>settimeout</actiontype>
-		<actionbody>
-			<timeout>0</timeout>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</passactions>
-
-	<failactions>
-	<action>
-		<actionname>0.7.2, Set passphrase timeout to "don't cache"</actionname>
-		<actiontype>settimeout</actiontype>
-		<actionbody>
-			<timeout>0</timeout>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-	</failactions>
-
-	<postactions>
-	<action>
-		<actionname>Close key store</actionname>
-		<actiontype>delete</actiontype>
-		<actionbody></actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</postactions>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0015-002]
-<actionbody>
-	<testexe>t_keystore.exe</testexe>
-	<excludedcapabilities>
-	<capability>TCB</capability>
-	</excludedcapabilities>
-	<policy>
-	<capability>WriteUserData</capability>
-	</policy>
-
-	<preactions>
-	<action>
-		<actionname>1, Open key store</actionname>
-		<actiontype>init</actiontype>
-		<actionbody>
-			<mode>manager</mode>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</preactions>
-
-	<passactions>
-	<action>
-		<actionname>2, Create key</actionname>
-		<actiontype>addkey</actiontype>
-		<actionbody>
-			<keyusage>allusagesbutNR</keyusage>
-			<keysize>512</keysize>
-			<keylabel>raspberry</keylabel>
-			<keyalgorithm>RSA</keyalgorithm>
-			<keyaccesstype>Extractable</keyaccesstype>
-			<keystore>0</keystore>
-			<passphrase>create pinkcloud</passphrase>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>3, Import key</actionname>
-		<actiontype>importkey</actiontype>
-		<actionbody>
-			<ImportData>pkcs8rsa.001</ImportData>
-			<keyusage>allusagesbutNR</keyusage>
-			<keylabel>blueberry</keylabel>
-			<keyaccesstype>Extractable</keyaccesstype>
-			<passphrase>pinkcloud</passphrase>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</passactions>
-
-	<failactions>
-	<action>
-		<actionname>2, Create key</actionname>
-		<actiontype>addkey</actiontype>
-		<actionbody>
-			<keyusage>allusagesbutNR</keyusage>
-			<keysize>512</keysize>
-			<keylabel>raspberry</keylabel>
-			<keyalgorithm>RSA</keyalgorithm>
-			<keyaccesstype>Extractable</keyaccesstype>
-			<keystore>0</keystore>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-
-	<action>
-		<actionname>3, Import key</actionname>
-		<actiontype>importkey</actiontype>
-		<actionbody>
-			<ImportData>pkcs8rsa.001</ImportData>
-			<keyusage>allusagesbutNR</keyusage>
-			<keylabel>blueberry</keylabel>
-			<keyaccesstype>Extractable</keyaccesstype>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-	</failactions>
-
-	<postactions>
-	<action>
-		<actionname>5, Close key store</actionname>
-		<actiontype>delete</actiontype>
-		<actionbody></actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</postactions>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0015-003]
-<actionbody>
-	<testexe>t_keystore.exe</testexe>
-	<excludedcapabilities>
-	<capability>TCB</capability>
-	</excludedcapabilities>
-	<policy>
-	<capability>ReadUserData</capability>
-	</policy>
-
-	<preactions>
-	<action>
-		<actionname>1, Open key store</actionname>
-		<actiontype>init</actiontype>
-		<actionbody>
-			<mode>manager</mode>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</preactions>
-
-	<passactions>
-	<action>
-		<actionname>2, List keys</actionname>
-		<actiontype>listkeys</actiontype>
-		<actionbody>
-			<listcount>2</listcount>
-			<foundkey>raspberry</foundkey>
-			<foundkey>blueberry</foundkey>
-		</actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</passactions>
-
-	<failactions>
-	<action>
-		<actionname>2, List keys</actionname>
-		<actiontype>listkeys</actiontype>
-		<actionbody>
-		</actionbody>
-		<actionresult>
-			<return>KErrPermissionDenied</return>
-		</actionresult>
-	</action>
-	</failactions>
-
-	<postactions>
-	<action>
-		<actionname>4, Close key store</actionname>
-		<actiontype>delete</actiontype>
-		<actionbody></actionbody>
-		<actionresult>
-			<return>KErrNone</return>
-		</actionresult>
-	</action>
-	</postactions>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0016-001]
-<actionbody>
-	<listcount>2</listcount>
-	<foundkey>raspberry</foundkey>
-	<foundkey>blueberry</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0016-002]
-<actionbody>
-	<deletecount>2</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-AUTHOBJECTS_V2-0016-004]
-<actionbody>
-	<seconds>5</seconds>
-</actionbody>
-
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0001-002]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0002-001]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create flyingelephant</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0002-002]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>30</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0002-003]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>30</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0002-004]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0002-005]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>mango</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0002-006]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>tomato</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0002-007]
+
+<actionbody>
+
+	<foundkey>banana</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>tomato</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0002-008]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>0</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0003-001]
+
+<actionbody>
+
+	<timeout>5</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0003-002]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>5</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0003-003]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<timeout>5</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0003-004]
+
+<actionbody>
+
+	<keylabel>tomato</keylabel>
+
+	<timeout>5</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0004-001]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>10</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0004-002]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>10</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0004-003]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<timeout>10</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0004-004]
+
+<actionbody>
+
+	<keylabel>tomato</keylabel>
+
+	<timeout>10</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0005-001]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>0</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0005-002]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>flyingelephant</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0005-003]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>10</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0005-004]
+
+<actionbody>
+
+	<seconds>5</seconds>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0005-005]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>5</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0005-006]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0005-007]
+
+<actionbody>
+
+	<seconds>5</seconds>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0005-008]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>0</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0005-009]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>flyingelephant</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0006-001]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0006-002]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>flyingelephant</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0006-003]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0006-004]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0006-005]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<passphrase>flyingelephant</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0006-006]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0007-001]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0007-002]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0007-003]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<passphrase>flyingelephant</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0007-004]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0008-001]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<passphrase>wrong</passphrase>
+
+	<passphrase>wrong</passphrase>
+
+	<passphrase>wrong</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0008-002]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<passphrase>wrong</passphrase>
+
+	<passphrase>flyingelephant</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0008-003]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0008-004]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<passphrase>wrong</passphrase>
+
+	<passphrase>wrong</passphrase>
+
+	<passphrase>flyingelephant</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0009-001]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<foundkey>banana</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>tomato</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0009-002]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<foundkey>banana</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>tomato</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0009-003]
+
+<actionbody>
+
+	<keylabel>tomato</keylabel>
+
+	<foundkey>banana</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>tomato</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0010-001]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>30</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0010-002]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>flyingelephant</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0010-003]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<passphrase>change wrong1 redfox</passphrase>
+
+	<passphrase>change wrong2 redfox</passphrase>
+
+	<passphrase>change wrong3 redfox</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0010-004]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0010-005]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<passphrase>change flyingelephant redfox</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0010-006]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>flyingelephant</passphrase>
+
+	<passphrase>flyingelephant</passphrase>
+
+	<passphrase>flyingelephant</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0010-007]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>redfox</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0010-008]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>0</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0011-001]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0011-002]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>30</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0011-003]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>redfox</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0011-004]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<keystore>1</keystore>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0011-005]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0011-006]
+
+<actionbody>
+
+	<keystore>1</keystore>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0011-007]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>redfox</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0011-009]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>0</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0012-001]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+</actionbody>
+
+<actionresult>
+
+	<policy>
+
+			<secureid>0x101F7E95</secureid>
+
+		</policy>
+
+</actionresult>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0012-002]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+</actionbody>
+
+<actionresult>
+
+	<policy>
+
+			<secureid>0x101F7E95</secureid>
+
+		</policy>
+
+</actionresult>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-001]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<policy>
+
+	<secureid>0x101FFFFF</secureid>
+
+	<capability>DRM</capability>
+
+	<capability>ReadUserData</capability>
+
+	</policy>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-002]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+</actionbody>
+
+<actionresult>
+
+	<policy>
+
+			<secureid>0x101FFFFF</secureid>
+
+			<capability>DRM</capability>
+
+			<capability>ReadUserData</capability>
+
+		</policy>
+
+</actionresult>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-003]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<policy>
+
+	<vendorid>0x70000007</vendorid>
+
+	<capability>DRM</capability>
+
+	<capability>ReadUserData</capability>
+
+	</policy>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-004]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+</actionbody>
+
+<actionresult>
+
+	<policy>
+
+			<vendorid>0x70000007</vendorid>
+
+			<capability>DRM</capability>
+
+			<capability>ReadUserData</capability>
+
+		</policy>
+
+</actionresult>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-005]
+
+<actionbody>
+
+	<keylabel>tomato</keylabel>
+
+	<policy>
+
+	<capability>DRM</capability>
+
+	<capability>ReadUserData</capability>
+
+	<capability>WriteUserData</capability>
+
+	<capability>ReadDeviceData</capability>
+
+	<capability>WriteDeviceData</capability>
+
+	</policy>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-006]
+
+<actionbody>
+
+	<keylabel>tomato</keylabel>
+
+</actionbody>
+
+<actionresult>
+
+	<policy>
+
+			<capability>DRM</capability>
+
+			<capability>ReadUserData</capability>
+
+			<capability>WriteUserData</capability>
+
+			<capability>ReadDeviceData</capability>
+
+			<capability>WriteDeviceData</capability>
+
+		</policy>
+
+</actionresult>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-007]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<policy>
+
+	<capability>DRM</capability>
+
+	<capability>ReadUserData</capability>
+
+	<capability>WriteUserData</capability>
+
+	<capability>NetworkControl</capability>
+
+	</policy>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-008]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<policy>
+
+	<secureid>0x101F7E96</secureid>
+
+	<capability>DRM</capability>
+
+	<capability>ReadUserData</capability>
+
+	<capability>WriteUserData</capability>
+
+	</policy>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-009]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<policy>
+
+	<vendorid>0x70000002</vendorid>
+
+	<capability>DRM</capability>
+
+	<capability>ReadUserData</capability>
+
+	<capability>WriteUserData</capability>
+
+	</policy>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-010]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<policy>
+
+	<capability>DRM</capability>
+
+	<capability>ReadUserData</capability>
+
+	<capability>WriteUserData</capability>
+
+	</policy>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-011]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+</actionbody>
+
+<actionresult>
+
+	<policy>
+
+			<capability>DRM</capability>
+
+			<capability>ReadUserData</capability>
+
+			<capability>WriteUserData</capability>
+
+		</policy>
+
+</actionresult>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-012]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<policy>
+
+	<secureid>0x101F7E95</secureid>
+
+	<capability>ReadUserData</capability>
+
+	<capability>DRM</capability>
+
+	<capability>ReadDeviceData</capability>
+
+	</policy>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-013]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+</actionbody>
+
+<actionresult>
+
+	<policy>
+
+			<secureid>0x101F7E95</secureid>
+
+			<capability>ReadUserData</capability>
+
+			<capability>DRM</capability>
+
+			<capability>ReadDeviceData</capability>
+
+		</policy>
+
+</actionresult>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-014]
+
+<actionbody>
+
+	<keylabel>tomato</keylabel>
+
+	<policy>
+
+	<vendorid>0x70000001</vendorid>
+
+	<capability>ReadUserData</capability>
+
+	<capability>DRM</capability>
+
+	<capability>WriteDeviceData</capability>
+
+	</policy>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0013-015]
+
+<actionbody>
+
+	<keylabel>tomato</keylabel>
+
+</actionbody>
+
+<actionresult>
+
+	<policy>
+
+			<vendorid>0x70000001</vendorid>
+
+			<capability>ReadUserData</capability>
+
+			<capability>DRM</capability>
+
+			<capability>WriteDeviceData</capability>
+
+		</policy>
+
+</actionresult>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0014-001]
+
+<actionbody>
+
+	<testexe>t_keystore.exe</testexe>
+
+	<excludedcapabilities>
+
+	<capability>TCB</capability>
+
+	</excludedcapabilities>
+
+	<policy>
+
+	<secureid>0x101FFFFF</secureid>
+
+	<capability>DRM</capability>
+
+	<capability>ReadUserData</capability>
+
+	</policy>
+
+
+
+	<preactions>
+
+	<action>
+
+		<actionname>1, Open key store in manager mode</actionname>
+
+		<actiontype>init</actiontype>
+
+		<actionbody>
+
+			<mode>manager</mode>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</preactions>
+
+
+
+	<passactions>
+
+	<action>
+
+		<actionname>2, Get key info</actionname>
+
+		<actiontype>getkeyinfo</actiontype>
+
+		<actionbody>
+
+			<keylabel>banana</keylabel>
+
+			<keyusage>allusagesbutNR</keyusage>
+
+			<keysize>512</keysize>
+
+			<keyalgorithm>RSA</keyalgorithm>
+
+			<keyaccesstype>Extractable</keyaccesstype>
+
+			<keyaccesstype>Local</keyaccesstype>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>3, Sign</actionname>
+
+		<actiontype>sign</actiontype>
+
+		<actionbody>
+
+			<keylabel>banana</keylabel>
+
+			<open>RSA</open>
+
+			<text>This is text of 20 .</text>
+
+			<passphrase>redfox</passphrase>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>4, Decrypt</actionname>
+
+		<actiontype>decrypt</actiontype>
+
+		<actionbody>
+
+			<keylabel>banana</keylabel>
+
+			<text>Ook!</text>
+
+			<passphrase>redfox</passphrase>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</passactions>
+
+
+
+	<failactions>
+
+	<action>
+
+		<actionname>2, Get key info</actionname>
+
+		<actiontype>getkeyinfo</actiontype>
+
+		<actionbody>
+
+			<keylabel>banana</keylabel>
+
+			<keyusage>allusagesbutNR</keyusage>
+
+			<keysize>512</keysize>
+
+			<keyalgorithm>RSA</keyalgorithm>
+
+			<keyaccesstype>Extractable</keyaccesstype>
+
+			<keyaccesstype>Local</keyaccesstype>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>3, Sign</actionname>
+
+		<actiontype>sign</actiontype>
+
+		<actionbody>
+
+			<keylabel>banana</keylabel>
+
+			<open>RSA</open>
+
+			<text>This is text of 20 .</text>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>4, Decrypt</actionname>
+
+		<actiontype>decrypt</actiontype>
+
+		<actionbody>
+
+			<keylabel>banana</keylabel>
+
+			<text>Ook!</text>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+	</failactions>
+
+
+
+	<postactions>
+
+	<action>
+
+		<actionname>5, Close key store</actionname>
+
+		<actiontype>delete</actiontype>
+
+		<actionbody></actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</postactions>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0014-002]
+
+<actionbody>
+
+	<testexe>t_keystore.exe</testexe>
+
+	<excludedcapabilities>
+
+	<capability>TCB</capability>
+
+	</excludedcapabilities>
+
+	<policy>
+
+	<vendorid>0x70000007</vendorid>
+
+	<capability>DRM</capability>
+
+	<capability>ReadUserData</capability>
+
+	</policy>
+
+
+
+	<preactions>
+
+	<action>
+
+		<actionname>1, Open key store in manager mode</actionname>
+
+		<actiontype>init</actiontype>
+
+		<actionbody>
+
+			<mode>manager</mode>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</preactions>
+
+
+
+	<passactions>
+
+	<action>
+
+		<actionname>2, Get key info</actionname>
+
+		<actiontype>getkeyinfo</actiontype>
+
+		<actionbody>
+
+			<keylabel>mango</keylabel>
+
+			<keyusage>allusagesbutNR</keyusage>
+
+			<keysize>512</keysize>
+
+			<keyalgorithm>DSA</keyalgorithm>
+
+			<keyaccesstype>Extractable</keyaccesstype>
+
+			<keyaccesstype>Local</keyaccesstype>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>3, Sign</actionname>
+
+		<actiontype>sign</actiontype>
+
+		<actionbody>
+
+			<keylabel>mango</keylabel>
+
+			<open>DSA</open>
+
+			<text>This is text of 20 .</text>
+
+			<passphrase>redfox</passphrase>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</passactions>
+
+
+
+	<failactions>
+
+	<action>
+
+		<actionname>2, Get key info</actionname>
+
+		<actiontype>getkeyinfo</actiontype>
+
+		<actionbody>
+
+			<keylabel>mango</keylabel>
+
+			<keyusage>allusagesbutNR</keyusage>
+
+			<keysize>512</keysize>
+
+			<keyalgorithm>DSA</keyalgorithm>
+
+			<keyaccesstype>Extractable</keyaccesstype>
+
+			<keyaccesstype>Local</keyaccesstype>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>3, Sign</actionname>
+
+		<actiontype>sign</actiontype>
+
+		<actionbody>
+
+			<keylabel>mango</keylabel>
+
+			<open>DSA</open>
+
+			<text>This is text of 20 .</text>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+	</failactions>
+
+
+
+	<postactions>
+
+	<action>
+
+		<actionname>4, Close key store</actionname>
+
+		<actiontype>delete</actiontype>
+
+		<actionbody></actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</postactions>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0014-003]
+
+<actionbody>
+
+	<testexe>t_keystore.exe</testexe>
+
+	<excludedcapabilities>
+
+	<capability>TCB</capability>
+
+	</excludedcapabilities>
+
+	<policy>
+
+	<capability>DRM</capability>
+
+	<capability>ReadUserData</capability>
+
+	<capability>WriteUserData</capability>
+
+	<capability>ReadDeviceData</capability>
+
+	<capability>WriteDeviceData</capability>
+
+	</policy>
+
+
+
+	<preactions>
+
+	<action>
+
+		<actionname>1, Open key store in manager mode</actionname>
+
+		<actiontype>init</actiontype>
+
+		<actionbody>
+
+			<mode>manager</mode>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</preactions>
+
+
+
+	<passactions>
+
+	<action>
+
+		<actionname>2, Get key info</actionname>
+
+		<actiontype>getkeyinfo</actiontype>
+
+		<actionbody>
+
+			<keylabel>tomato</keylabel>
+
+			<keyusage>allusagesbutNR</keyusage>
+
+			<keysize>512</keysize>
+
+			<keyalgorithm>DH</keyalgorithm>
+
+			<keyaccesstype>Extractable</keyaccesstype>
+
+			<keyaccesstype>Local</keyaccesstype>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>2, Test derive</actionname>
+
+		<actiontype>derive</actiontype>
+
+		<actionbody>
+
+			<keylabel>tomato</keylabel>
+
+			<n>DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F</n>
+
+			<g>02</g>
+
+			<passphrase>redfox</passphrase>
+
+			<passphrase>redfox</passphrase>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</passactions>
+
+
+
+	<failactions>
+
+	<action>
+
+		<actionname>2, Get key info</actionname>
+
+		<actiontype>getkeyinfo</actiontype>
+
+		<actionbody>
+
+			<keylabel>tomato</keylabel>
+
+			<keyusage>allusagesbutNR</keyusage>
+
+			<keysize>512</keysize>
+
+			<keyalgorithm>DH</keyalgorithm>
+
+			<keyaccesstype>Extractable</keyaccesstype>
+
+			<keyaccesstype>Local</keyaccesstype>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>2, Test derive</actionname>
+
+		<actiontype>derive</actiontype>
+
+		<actionbody>
+
+			<keylabel>tomato</keylabel>
+
+			<n>DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F</n>
+
+			<g>02</g>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+	</failactions>
+
+
+
+	<postactions>
+
+	<action>
+
+		<actionname>3, Close key store</actionname>
+
+		<actiontype>delete</actiontype>
+
+		<actionbody></actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</postactions>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0014-004]
+
+<actionbody>
+
+	<testexe>t_keystore.exe</testexe>
+
+	<excludedcapabilities>
+
+	<capability>TCB</capability>
+
+	</excludedcapabilities>
+
+	<policy>
+
+	<capability>DRM</capability>
+
+	<capability>ReadUserData</capability>
+
+	<capability>WriteUserData</capability>
+
+	</policy>
+
+
+
+	<preactions>
+
+	<action>
+
+		<actionname>1, Open key store in manager mode</actionname>
+
+		<actiontype>init</actiontype>
+
+		<actionbody>
+
+			<mode>manager</mode>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</preactions>
+
+
+
+	<passactions>
+
+
+
+	<action>
+
+		<actionname>1, Export</actionname>
+
+		<actiontype>exportkey</actiontype>
+
+		<actionbody>
+
+			<ExportFile>exported_banana.der</ExportFile>
+
+			<keyusage>allusagesbutNR</keyusage>
+
+			<keylabel>banana</keylabel>
+
+			<keyalgorithm>RSA</keyalgorithm>
+
+			<encrypted>0</encrypted>
+
+			<passphrase>redfox</passphrase>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>2, Export encrypted</actionname>
+
+		<actiontype>exportkey</actiontype>
+
+		<actionbody>
+
+			<ExportFile>exported_encrypted_banana.der</ExportFile>
+
+			<keyusage>allusagesbutNR</keyusage>
+
+			<keylabel>banana</keylabel>
+
+			<keyalgorithm>RSA</keyalgorithm>
+
+			<encrypted>1</encrypted>
+
+			<passphrase>redfox</passphrase>
+
+			<passphrase>export clanger</passphrase>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>3, Check use policy</actionname>
+
+		<actiontype>getusepolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>banana</keylabel>
+
+		</actionbody>
+
+		<actionresult>
+
+			<policy>
+
+				<secureid>0x101FFFFF</secureid>
+
+				<capability>DRM</capability>
+
+				<capability>ReadUserData</capability>
+
+			</policy>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>4, Set use policy</actionname>
+
+		<actiontype>setusepolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>banana</keylabel>
+
+			<policy>
+
+				<capability>ReadUserData</capability>
+
+				<capability>WriteUserData</capability>
+
+			</policy>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>5, Check use policy</actionname>
+
+		<actiontype>getusepolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>banana</keylabel>
+
+		</actionbody>
+
+		<actionresult>
+
+			<policy>
+
+				<capability>ReadUserData</capability>
+
+				<capability>WriteUserData</capability>
+
+			</policy>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>6, Check management policy</actionname>
+
+		<actiontype>getmanagementpolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>banana</keylabel>
+
+		</actionbody>
+
+		<actionresult>
+
+			<policy>
+
+				<capability>DRM</capability>
+
+				<capability>ReadUserData</capability>
+
+				<capability>WriteUserData</capability>
+
+			</policy>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>7, Set management policy</actionname>
+
+		<actiontype>setmanagementpolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>banana</keylabel>
+
+			<policy>
+
+				<capability>ReadUserData</capability>
+
+				<capability>WriteUserData</capability>
+
+			</policy>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>8, Check management policy</actionname>
+
+		<actiontype>getmanagementpolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>banana</keylabel>
+
+		</actionbody>
+
+		<actionresult>
+
+			<policy>
+
+				<capability>ReadUserData</capability>
+
+				<capability>WriteUserData</capability>
+
+			</policy>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>9, Delete key</actionname>
+
+		<actiontype>deletekeys</actiontype>
+
+		<actionbody>
+
+			<keylabel>banana</keylabel>
+
+			<deletecount>1</deletecount>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	</passactions>
+
+
+
+	<failactions>
+
+
+
+	<action>
+
+		<actionname>1, Export</actionname>
+
+		<actiontype>exportkey</actiontype>
+
+		<actionbody>
+
+			<ExportFile>exported_banana.der</ExportFile>
+
+			<keyusage>allusagesbutNR</keyusage>
+
+			<keylabel>banana</keylabel>
+
+			<keyalgorithm>RSA</keyalgorithm>
+
+			<encrypted>0</encrypted>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>2, Export encrypted</actionname>
+
+		<actiontype>exportkey</actiontype>
+
+		<actionbody>
+
+			<ExportFile>exported_encrypted_banana.der</ExportFile>
+
+			<keyusage>allusagesbutNR</keyusage>
+
+			<keylabel>banana</keylabel>
+
+			<keyalgorithm>RSA</keyalgorithm>
+
+			<encrypted>1</encrypted>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>3, Set use policy</actionname>
+
+		<actiontype>setusepolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>banana</keylabel>
+
+			<policy>
+
+				<capability>ReadUserData</capability>
+
+				<capability>WriteUserData</capability>
+
+			</policy>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>5, Set management policy</actionname>
+
+		<actiontype>setmanagementpolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>banana</keylabel>
+
+			<policy>
+
+				<capability>ReadUserData</capability>
+
+				<capability>WriteUserData</capability>
+
+			</policy>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>7, Delete key</actionname>
+
+		<actiontype>deletekeys</actiontype>
+
+		<actionbody>
+
+			<keylabel>banana</keylabel>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	</failactions>
+
+
+
+	<postactions>
+
+	<action>
+
+		<actionname>4, Close key store</actionname>
+
+		<actiontype>delete</actiontype>
+
+		<actionbody></actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</postactions>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0014-005]
+
+<actionbody>
+
+	<testexe>t_keystore.exe</testexe>
+
+	<excludedcapabilities>
+
+	<capability>TCB</capability>
+
+	</excludedcapabilities>
+
+	<policy>
+
+	<secureid>0x101F7E95</secureid>
+
+	<capability>ReadUserData</capability>
+
+	<capability>DRM</capability>
+
+	<capability>ReadDeviceData</capability>
+
+	</policy>
+
+
+
+	<preactions>
+
+	<action>
+
+		<actionname>1, Open key store in manager mode</actionname>
+
+		<actiontype>init</actiontype>
+
+		<actionbody>
+
+			<mode>manager</mode>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</preactions>
+
+
+
+	<passactions>
+
+
+
+	<action>
+
+		<actionname>2, Export</actionname>
+
+		<actiontype>exportkey</actiontype>
+
+		<actionbody>
+
+			<ExportFile>exported_mango.der</ExportFile>
+
+			<keyusage>DSAUsage</keyusage>
+
+			<keylabel>mango</keylabel>
+
+			<keyalgorithm>DSA</keyalgorithm>
+
+			<encrypted>0</encrypted>
+
+			<passphrase>redfox</passphrase>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>3, Export encrypted</actionname>
+
+		<actiontype>exportkey</actiontype>
+
+		<actionbody>
+
+			<ExportFile>exported_encrypted_mango.der</ExportFile>
+
+			<keyusage>DSAUsage</keyusage>
+
+			<keylabel>mango</keylabel>
+
+			<keyalgorithm>DSA</keyalgorithm>
+
+			<encrypted>1</encrypted>
+
+			<passphrase>redfox</passphrase>
+
+			<passphrase>export clanger</passphrase>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>4, Check use policy</actionname>
+
+		<actiontype>getusepolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>mango</keylabel>
+
+		</actionbody>
+
+		<actionresult>
+
+			<policy>
+
+				<vendorid>0x70000007</vendorid>
+
+				<capability>DRM</capability>
+
+				<capability>ReadUserData</capability>
+
+			</policy>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>5, Set use policy</actionname>
+
+		<actiontype>setusepolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>mango</keylabel>
+
+			<policy>
+
+				<capability>ReadUserData</capability>
+
+				<capability>WriteUserData</capability>
+
+			</policy>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>6, Check use policy</actionname>
+
+		<actiontype>getusepolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>mango</keylabel>
+
+		</actionbody>
+
+		<actionresult>
+
+			<policy>
+
+				<capability>ReadUserData</capability>
+
+				<capability>WriteUserData</capability>
+
+			</policy>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>7, Check management policy</actionname>
+
+		<actiontype>getmanagementpolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>mango</keylabel>
+
+		</actionbody>
+
+		<actionresult>
+
+			<policy>
+
+				<secureid>0x101F7E95</secureid>
+
+				<capability>ReadUserData</capability>
+
+				<capability>DRM</capability>
+
+				<capability>ReadDeviceData</capability>
+
+			</policy>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>8, Set management policy</actionname>
+
+		<actiontype>setmanagementpolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>mango</keylabel>
+
+			<policy>
+
+				<capability>DRM</capability>
+
+				<capability>ReadDeviceData</capability>
+
+			</policy>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>9, Check management policy</actionname>
+
+		<actiontype>getmanagementpolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>mango</keylabel>
+
+		</actionbody>
+
+		<actionresult>
+
+			<policy>
+
+				<capability>DRM</capability>
+
+				<capability>ReadDeviceData</capability>
+
+			</policy>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>10, Delete key</actionname>
+
+		<actiontype>deletekeys</actiontype>
+
+		<actionbody>
+
+			<keylabel>mango</keylabel>
+
+			<deletecount>1</deletecount>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	</passactions>
+
+
+
+	<failactions>
+
+
+
+	<action>
+
+		<actionname>2, Export</actionname>
+
+		<actiontype>exportkey</actiontype>
+
+		<actionbody>
+
+			<ExportFile>exported_mango.der</ExportFile>
+
+			<keyusage>DSAUsage</keyusage>
+
+			<keylabel>mango</keylabel>
+
+			<keyalgorithm>DSA</keyalgorithm>
+
+			<encrypted>0</encrypted>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>3, Export encrypted</actionname>
+
+		<actiontype>exportkey</actiontype>
+
+		<actionbody>
+
+			<ExportFile>exported_encrypted_mango.der</ExportFile>
+
+			<keyusage>DSAUsage</keyusage>
+
+			<keylabel>mango</keylabel>
+
+			<keyalgorithm>DSA</keyalgorithm>
+
+			<encrypted>1</encrypted>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>4, Set use policy</actionname>
+
+		<actiontype>setusepolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>mango</keylabel>
+
+			<policy>
+
+				<capability>ReadUserData</capability>
+
+				<capability>WriteUserData</capability>
+
+			</policy>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>5, Set management policy</actionname>
+
+		<actiontype>setmanagementpolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>mango</keylabel>
+
+			<policy>
+
+				<capability>DRM</capability>
+
+				<capability>ReadDeviceData</capability>
+
+			</policy>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>6, Delete key</actionname>
+
+		<actiontype>deletekeys</actiontype>
+
+		<actionbody>
+
+			<keylabel>mango</keylabel>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	</failactions>
+
+
+
+	<postactions>
+
+	<action>
+
+		<actionname>11, Close key store</actionname>
+
+		<actiontype>delete</actiontype>
+
+		<actionbody></actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</postactions>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0014-006]
+
+<actionbody>
+
+	<testexe>t_keystore.exe</testexe>
+
+	<excludedcapabilities>
+
+	<capability>TCB</capability>
+
+	</excludedcapabilities>
+
+	<policy>
+
+	<vendorid>0x70000001</vendorid>
+
+	<capability>ReadUserData</capability>
+
+	<capability>DRM</capability>
+
+	<capability>WriteDeviceData</capability>
+
+	</policy>
+
+
+
+	<preactions>
+
+	<action>
+
+		<actionname>1, Open key store in manager mode</actionname>
+
+		<actiontype>init</actiontype>
+
+		<actionbody>
+
+			<mode>manager</mode>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</preactions>
+
+
+
+	<passactions>
+
+
+
+	<action>
+
+		<actionname>2, Check use policy</actionname>
+
+		<actiontype>getusepolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>tomato</keylabel>
+
+		</actionbody>
+
+		<actionresult>
+
+			<policy>
+
+				<capability>DRM</capability>
+
+				<capability>ReadUserData</capability>
+
+				<capability>WriteUserData</capability>
+
+				<capability>ReadDeviceData</capability>
+
+				<capability>WriteDeviceData</capability>
+
+			</policy>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>3, Set use policy</actionname>
+
+		<actiontype>setusepolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>tomato</keylabel>
+
+			<policy>
+
+				<capability>ReadUserData</capability>
+
+				<capability>WriteUserData</capability>
+
+			</policy>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>4, Check use policy</actionname>
+
+		<actiontype>getusepolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>tomato</keylabel>
+
+		</actionbody>
+
+		<actionresult>
+
+			<policy>
+
+				<capability>ReadUserData</capability>
+
+				<capability>WriteUserData</capability>
+
+			</policy>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>5, Check management policy</actionname>
+
+		<actiontype>getmanagementpolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>tomato</keylabel>
+
+		</actionbody>
+
+		<actionresult>
+
+			<policy>
+
+				<vendorid>0x70000001</vendorid>
+
+				<capability>ReadUserData</capability>
+
+				<capability>DRM</capability>
+
+				<capability>WriteDeviceData</capability>
+
+			</policy>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>6, Set management policy</actionname>
+
+		<actiontype>setmanagementpolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>tomato</keylabel>
+
+			<policy>
+
+				<capability>DRM</capability>
+
+				<capability>WriteDeviceData</capability>
+
+			</policy>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>7, Check management policy</actionname>
+
+		<actiontype>getmanagementpolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>tomato</keylabel>
+
+		</actionbody>
+
+		<actionresult>
+
+			<policy>
+
+				<capability>DRM</capability>
+
+				<capability>WriteDeviceData</capability>
+
+			</policy>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>8, Delete key</actionname>
+
+		<actiontype>deletekeys</actiontype>
+
+		<actionbody>
+
+			<keylabel>tomato</keylabel>
+
+			<deletecount>1</deletecount>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	</passactions>
+
+
+
+	<failactions>
+
+
+
+	<action>
+
+		<actionname>2, Set use policy</actionname>
+
+		<actiontype>setusepolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>tomato</keylabel>
+
+			<policy>
+
+				<capability>ReadUserData</capability>
+
+				<capability>WriteUserData</capability>
+
+			</policy>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>3, Set management policy</actionname>
+
+		<actiontype>setmanagementpolicy</actiontype>
+
+		<actionbody>
+
+			<keylabel>tomato</keylabel>
+
+			<policy>
+
+				<capability>DRM</capability>
+
+				<capability>WriteDeviceData</capability>
+
+			</policy>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>4, Delete key</actionname>
+
+		<actiontype>deletekeys</actiontype>
+
+		<actionbody>
+
+			<keylabel>tomato</keylabel>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	</failactions>
+
+
+
+	<postactions>
+
+	<action>
+
+		<actionname>9, Close key store</actionname>
+
+		<actiontype>delete</actiontype>
+
+		<actionbody></actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</postactions>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0015-001]
+
+<actionbody>
+
+	<testexe>t_keystore.exe</testexe>
+
+	<excludedcapabilities>
+
+	<capability>TCB</capability>
+
+	</excludedcapabilities>
+
+	<policy>
+
+	<capability>WriteDeviceData</capability>
+
+	</policy>
+
+
+
+	<preactions>
+
+	<action>
+
+		<actionname>Open key store in manager mode</actionname>
+
+		<actiontype>init</actiontype>
+
+		<actionbody>
+
+			<mode>manager</mode>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</preactions>
+
+
+
+	<passactions>
+
+	<action>
+
+		<actionname>0.7.2, Set passphrase timeout to "don't cache"</actionname>
+
+		<actiontype>settimeout</actiontype>
+
+		<actionbody>
+
+			<timeout>0</timeout>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</passactions>
+
+
+
+	<failactions>
+
+	<action>
+
+		<actionname>0.7.2, Set passphrase timeout to "don't cache"</actionname>
+
+		<actiontype>settimeout</actiontype>
+
+		<actionbody>
+
+			<timeout>0</timeout>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+	</failactions>
+
+
+
+	<postactions>
+
+	<action>
+
+		<actionname>Close key store</actionname>
+
+		<actiontype>delete</actiontype>
+
+		<actionbody></actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</postactions>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0015-002]
+
+<actionbody>
+
+	<testexe>t_keystore.exe</testexe>
+
+	<excludedcapabilities>
+
+	<capability>TCB</capability>
+
+	</excludedcapabilities>
+
+	<policy>
+
+	<capability>WriteUserData</capability>
+
+	</policy>
+
+
+
+	<preactions>
+
+	<action>
+
+		<actionname>1, Open key store</actionname>
+
+		<actiontype>init</actiontype>
+
+		<actionbody>
+
+			<mode>manager</mode>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</preactions>
+
+
+
+	<passactions>
+
+	<action>
+
+		<actionname>2, Create key</actionname>
+
+		<actiontype>addkey</actiontype>
+
+		<actionbody>
+
+			<keyusage>allusagesbutNR</keyusage>
+
+			<keysize>512</keysize>
+
+			<keylabel>raspberry</keylabel>
+
+			<keyalgorithm>RSA</keyalgorithm>
+
+			<keyaccesstype>Extractable</keyaccesstype>
+
+			<keystore>0</keystore>
+
+			<passphrase>create pinkcloud</passphrase>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>3, Import key</actionname>
+
+		<actiontype>importkey</actiontype>
+
+		<actionbody>
+
+			<ImportData>pkcs8rsa.001</ImportData>
+
+			<keyusage>allusagesbutNR</keyusage>
+
+			<keylabel>blueberry</keylabel>
+
+			<keyaccesstype>Extractable</keyaccesstype>
+
+			<passphrase>pinkcloud</passphrase>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</passactions>
+
+
+
+	<failactions>
+
+	<action>
+
+		<actionname>2, Create key</actionname>
+
+		<actiontype>addkey</actiontype>
+
+		<actionbody>
+
+			<keyusage>allusagesbutNR</keyusage>
+
+			<keysize>512</keysize>
+
+			<keylabel>raspberry</keylabel>
+
+			<keyalgorithm>RSA</keyalgorithm>
+
+			<keyaccesstype>Extractable</keyaccesstype>
+
+			<keystore>0</keystore>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+
+
+	<action>
+
+		<actionname>3, Import key</actionname>
+
+		<actiontype>importkey</actiontype>
+
+		<actionbody>
+
+			<ImportData>pkcs8rsa.001</ImportData>
+
+			<keyusage>allusagesbutNR</keyusage>
+
+			<keylabel>blueberry</keylabel>
+
+			<keyaccesstype>Extractable</keyaccesstype>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+	</failactions>
+
+
+
+	<postactions>
+
+	<action>
+
+		<actionname>5, Close key store</actionname>
+
+		<actiontype>delete</actiontype>
+
+		<actionbody></actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</postactions>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0015-003]
+
+<actionbody>
+
+	<testexe>t_keystore.exe</testexe>
+
+	<excludedcapabilities>
+
+	<capability>TCB</capability>
+
+	</excludedcapabilities>
+
+	<policy>
+
+	<capability>ReadUserData</capability>
+
+	</policy>
+
+
+
+	<preactions>
+
+	<action>
+
+		<actionname>1, Open key store</actionname>
+
+		<actiontype>init</actiontype>
+
+		<actionbody>
+
+			<mode>manager</mode>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</preactions>
+
+
+
+	<passactions>
+
+	<action>
+
+		<actionname>2, List keys</actionname>
+
+		<actiontype>listkeys</actiontype>
+
+		<actionbody>
+
+			<foundkey>raspberry</foundkey>
+
+			<foundkey>blueberry</foundkey>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</passactions>
+
+
+
+	<failactions>
+
+	<action>
+
+		<actionname>2, List keys</actionname>
+
+		<actiontype>listkeys</actiontype>
+
+		<actionbody>
+
+		</actionbody>
+
+		<actionresult>
+
+			<return>KErrPermissionDenied</return>
+
+		</actionresult>
+
+	</action>
+
+	</failactions>
+
+
+
+	<postactions>
+
+	<action>
+
+		<actionname>4, Close key store</actionname>
+
+		<actiontype>delete</actiontype>
+
+		<actionbody></actionbody>
+
+		<actionresult>
+
+			<return>KErrNone</return>
+
+		</actionresult>
+
+	</action>
+
+	</postactions>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0016-001]
+
+<actionbody>
+
+	<foundkey>raspberry</foundkey>
+
+	<foundkey>blueberry</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0016-002]
+
+<actionbody>
+
+	<deletecount>2</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-AUTHOBJECTS_V2-0016-004]
+
+<actionbody>
+
+	<seconds>5</seconds>
+
+</actionbody>
+
+
+
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/authobjects_v2.txt	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/authobjects_v2.txt	Mon Oct 12 10:17:04 2009 +0300
@@ -132,7 +132,6 @@
 	<actionname>1.1.7, Check everything added ok</actionname>
 	<actiontype>listkeys</actiontype>
 	<actionbody>
-		<listcount>3</listcount>
 		<foundkey>banana</foundkey>
 		<foundkey>mango</foundkey>
 		<foundkey>tomato</foundkey>
@@ -2387,7 +2386,6 @@
 				<actionname>2, List keys</actionname>
 				<actiontype>listkeys</actiontype>
 				<actionbody>
-					<listcount>2</listcount>
 					<foundkey>raspberry</foundkey>
 					<foundkey>blueberry</foundkey>
 				</actionbody>
@@ -2434,7 +2432,6 @@
 	<actionname>8.0, List keys</actionname>
 	<actiontype>listkeys</actiontype>
 	<actionbody>
-		<listcount>2</listcount>
 		<foundkey>raspberry</foundkey>
 		<foundkey>blueberry</foundkey>
 	</actionbody>
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/authobjects_v2_useauth.txt	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/authobjects_v2_useauth.txt	Mon Oct 12 10:17:04 2009 +0300
@@ -97,7 +97,6 @@
 	<actionname>1.1.7, Check everything added ok</actionname>
 	<actiontype>listkeys</actiontype>
 	<actionbody>
-		<listcount>3</listcount>
 		<foundkey>banana</foundkey>
 		<foundkey>mango</foundkey>
 		<foundkey>tomato</foundkey>
@@ -1605,7 +1604,6 @@
 				<actionname>2, List keys</actionname>
 				<actiontype>listkeys</actiontype>
 				<actionbody>
-					<listcount>2</listcount>
 					<foundkey>raspberry</foundkey>
 					<foundkey>blueberry</foundkey>
 				</actionbody>
@@ -1652,7 +1650,6 @@
 	<actionname>8.0, List keys</actionname>
 	<actiontype>listkeys</actiontype>
 	<actionbody>
-		<listcount>2</listcount>
 		<foundkey>raspberry</foundkey>
 		<foundkey>blueberry</foundkey>
 	</actionbody>
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/cancel.ini	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/cancel.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -1,673 +1,1322 @@
-[SEC-FILETOKENS-CANCEL-0002-001]
-<actionbody>
-	<mode>manager</mode>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0002-003]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyexportable>IsExportable</keyexportable>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0003-001]
-<actionbody>
-	<listcount>1</listcount>
-	<foundkey>banana</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0003-002]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0003-003]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>0</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0003-004]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0003-005]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0003-006]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0003-007]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<signdigest>1</signdigest>
-	<text>digested!</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0003-008]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<text>Ook!</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0004-001]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-001]
-<actionbody>
-	<listcount>0</listcount>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-002]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>bigbanana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyexportable>IsExportable</keyexportable>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-003]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-004]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-005]
-<actionbody>
-	<keylabel>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</keylabel>
-	<open>RSA</open>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-006]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>carrot</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-007]
-<actionbody>
-	<keylabel>carrot</keylabel>
-	<open>DSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-008]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>mango</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-009]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-010]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<n>DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F</n>
-	<g>02</g>
-	<passphrase>pinkcloud</passphrase>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-011]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>jackfruit</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-012]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>custard apple</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-013]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keyusage>NR</keyusage>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>grape</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-014]
-<actionbody>
-	<listcount>7</listcount>
-   		<foundkey>bigbanana</foundkey>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>	
-   		<foundkey>jackfruit</foundkey>
-   		<foundkey>custard apple</foundkey>
-   		<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-015]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-   		<listcount>3</listcount>
-   		<foundkey>carrot</foundkey>
-   		<foundkey>custard apple</foundkey>
-   		<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-016]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-   		<listcount>5</listcount>
-   		<foundkey>bigbanana</foundkey>
-   		<foundkey>carrot</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>
-   		<foundkey>jackfruit</foundkey>
-   		<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-017]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<listcount>5</listcount>
-   		<foundkey>jackfruit</foundkey>
-	<foundkey>carrot</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>	
-   		<foundkey>jackfruit</foundkey>
-   		<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-018]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>2</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-019]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>0</listcount>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-020]
-<actionbody>
-	<listcount>5</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-   		<foundkey>jackfruit</foundkey>
-   		<foundkey>custard apple</foundkey>
-   		<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-021]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-022]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>1</listcount>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-023]
-<actionbody>
-	<listcount>6</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>banana</foundkey>
-   		<foundkey>jackfruit</foundkey>
-   		<foundkey>custard apple</foundkey>
-   		<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-024]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-025]
-<actionbody>
-	<deletecount>5</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0005-026]
-<actionbody>
-	<listcount>0</listcount>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0006-001]
-<actionbody>
-	<ImportData>encryptPK8dsa4DER.txt</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED* encrypted purple plum</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<encrypted>1</encrypted>
-	<passphrase>import clanger</passphrase>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0006-002]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-	<listcount>1</listcount>
-	<foundkey>*IMPORTED* encrypted purple plum</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0006-003]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0007-001]
-<actionbody>
-	<ImportData>pkcs8rsa.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0RSA</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<encrypted>0</encrypted>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0007-002]
-<actionbody>
-	<keylabel>gm0</keylabel>
-	<timeout>0</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0007-003]
-<actionbody>
-	<ExportFile>oom_export_pkcs8rsa_0.001</ExportFile>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0RSA</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<encrypted>0</encrypted>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0007-004]
-<actionbody>
-	<ImportData>pkcs8dsa.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm0DSA</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<encrypted>0</encrypted>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0007-005]
-<actionbody>
-	<ExportFile>oom_export_pkcs8dsa_0.001</ExportFile>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm0DSA</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<encrypted>0</encrypted>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0007-006]
-<actionbody>
-	<ExportFile>oom_encrypted_export_pkcs8rsa.001</ExportFile>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0RSA</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<encrypted>1</encrypted>
-	<passphrase>pinkcloud</passphrase>
-	<passphrase>export clanger</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0007-007]
-<actionbody>
-	<ExportFile>oom_encrypted_export_pkcs8dsa.001</ExportFile>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm0DSA</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<encrypted>1</encrypted>
-	<passphrase>pinkcloud</passphrase>
-	<passphrase>export clanger</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0008-001]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create flyingelephant</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0008-002]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<foundkey>banana</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0008-003]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<passphrase>change flyingelephant redfox</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0008-004]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>15</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0008-005]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>15</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0008-006]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<passphrase>redfox</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0008-007]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>15</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0008-008]
-<actionbody>
-	<keylabel>banana</keylabel>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0008-009]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-CANCEL-0009-003]
-<actionbody>
-	<seconds>5</seconds>
-</actionbody>
-
+[SEC-FILETOKENS-CANCEL-0002-001]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0002-003]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyexportable>IsExportable</keyexportable>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0003-001]
+
+<actionbody>
+
+	<foundkey>banana</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0003-002]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0003-003]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>0</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0003-004]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0003-005]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0003-006]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0003-007]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>digested!</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0003-008]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<text>Ook!</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0004-001]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-001]
+
+<actionbody>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-002]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>bigbanana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyexportable>IsExportable</keyexportable>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-003]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-004]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-005]
+
+<actionbody>
+
+	<keylabel>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</keylabel>
+
+	<open>RSA</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-006]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>carrot</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-007]
+
+<actionbody>
+
+	<keylabel>carrot</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-008]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>mango</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-009]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-010]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<n>DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F</n>
+
+	<g>02</g>
+
+	<passphrase>pinkcloud</passphrase>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-011]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>jackfruit</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-012]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>custard apple</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-013]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keyusage>NR</keyusage>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>grape</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-014]
+
+<actionbody>
+
+   		<foundkey>bigbanana</foundkey>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>	
+
+   		<foundkey>jackfruit</foundkey>
+
+   		<foundkey>custard apple</foundkey>
+
+   		<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-015]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+   		<foundkey>carrot</foundkey>
+
+   		<foundkey>custard apple</foundkey>
+
+   		<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-016]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+   		<foundkey>bigbanana</foundkey>
+
+   		<foundkey>carrot</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>
+
+   		<foundkey>jackfruit</foundkey>
+
+   		<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-017]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+   		<foundkey>jackfruit</foundkey>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>	
+
+   		<foundkey>jackfruit</foundkey>
+
+   		<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-018]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>2</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-019]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-020]
+
+<actionbody>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+   		<foundkey>jackfruit</foundkey>
+
+   		<foundkey>custard apple</foundkey>
+
+   		<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-021]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-022]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-023]
+
+<actionbody>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>banana</foundkey>
+
+   		<foundkey>jackfruit</foundkey>
+
+   		<foundkey>custard apple</foundkey>
+
+   		<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-024]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-025]
+
+<actionbody>
+
+	<deletecount>5</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0005-026]
+
+<actionbody>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0006-001]
+
+<actionbody>
+
+	<ImportData>encryptPK8dsa4DER.txt</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED* encrypted purple plum</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<encrypted>1</encrypted>
+
+	<passphrase>import clanger</passphrase>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0006-002]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<foundkey>*IMPORTED* encrypted purple plum</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0006-003]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0007-001]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0RSA</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<encrypted>0</encrypted>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0007-002]
+
+<actionbody>
+
+	<keylabel>gm0</keylabel>
+
+	<timeout>0</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0007-003]
+
+<actionbody>
+
+	<ExportFile>oom_export_pkcs8rsa_0.001</ExportFile>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0RSA</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<encrypted>0</encrypted>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0007-004]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm0DSA</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<encrypted>0</encrypted>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0007-005]
+
+<actionbody>
+
+	<ExportFile>oom_export_pkcs8dsa_0.001</ExportFile>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm0DSA</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<encrypted>0</encrypted>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0007-006]
+
+<actionbody>
+
+	<ExportFile>oom_encrypted_export_pkcs8rsa.001</ExportFile>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0RSA</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<encrypted>1</encrypted>
+
+	<passphrase>pinkcloud</passphrase>
+
+	<passphrase>export clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0007-007]
+
+<actionbody>
+
+	<ExportFile>oom_encrypted_export_pkcs8dsa.001</ExportFile>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm0DSA</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<encrypted>1</encrypted>
+
+	<passphrase>pinkcloud</passphrase>
+
+	<passphrase>export clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0008-001]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create flyingelephant</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0008-002]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<foundkey>banana</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0008-003]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<passphrase>change flyingelephant redfox</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0008-004]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>15</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0008-005]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>15</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0008-006]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<passphrase>redfox</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0008-007]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>15</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0008-008]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0008-009]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-CANCEL-0009-003]
+
+<actionbody>
+
+	<seconds>5</seconds>
+
+</actionbody>
+
+
+
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/cancel_useauth.ini	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/cancel_useauth.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -1,633 +1,1242 @@
-[SEC-CANCEL_USEAUTH-0002-001]
-<actionbody>
-	<mode>manager</mode>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0002-003]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyexportable>IsExportable</keyexportable>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0003-001]
-<actionbody>
-	<listcount>1</listcount>
-	<foundkey>banana</foundkey>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0003-002]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0003-003]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0003-004]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0003-005]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0003-006]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<signdigest>1</signdigest>
-	<text>digested!</text>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0003-007]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<text>Ook!</text>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0004-001]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-001]
-<actionbody>
-	<listcount>0</listcount>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-002]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>bigbanana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyexportable>IsExportable</keyexportable>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-003]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-004]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-005]
-<actionbody>
-	<keylabel>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</keylabel>
-	<open>RSA</open>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-006]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>carrot</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-007]
-<actionbody>
-	<keylabel>carrot</keylabel>
-	<open>DSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-008]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>mango</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-009]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-010]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<n>DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F</n>
-	<g>02</g>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-011]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>jackfruit</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-012]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>custard apple</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-013]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keyusage>NR</keyusage>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>grape</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-014]
-<actionbody>
-	<listcount>7</listcount>
-   		<foundkey>bigbanana</foundkey>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>	
-   		<foundkey>jackfruit</foundkey>
-   		<foundkey>custard apple</foundkey>
-   		<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-015]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-   		<listcount>3</listcount>
-   		<foundkey>carrot</foundkey>
-   		<foundkey>custard apple</foundkey>
-   		<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-016]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-   		<listcount>5</listcount>
-   		<foundkey>bigbanana</foundkey>
-   		<foundkey>carrot</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>
-   		<foundkey>jackfruit</foundkey>
-   		<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-017]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<listcount>5</listcount>
-   		<foundkey>jackfruit</foundkey>
-	<foundkey>carrot</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>	
-   		<foundkey>jackfruit</foundkey>
-   		<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-018]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>2</deletecount>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-019]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>0</listcount>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-020]
-<actionbody>
-	<listcount>5</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-   		<foundkey>jackfruit</foundkey>
-   		<foundkey>custard apple</foundkey>
-   		<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-021]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-022]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>1</listcount>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-023]
-<actionbody>
-	<listcount>6</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>banana</foundkey>
-   		<foundkey>jackfruit</foundkey>
-   		<foundkey>custard apple</foundkey>
-   		<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-024]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-025]
-<actionbody>
-	<deletecount>5</deletecount>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0005-026]
-<actionbody>
-	<listcount>0</listcount>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0006-001]
-<actionbody>
-	<ImportData>encryptPK8dsa4DER.txt</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED* encrypted purple plum</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<encrypted>1</encrypted>
-	<passphrase>import clanger</passphrase>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0006-002]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-	<listcount>1</listcount>
-	<foundkey>*IMPORTED* encrypted purple plum</foundkey>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0006-003]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0007-001]
-<actionbody>
-	<ImportData>pkcs8rsa.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0RSA</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<encrypted>0</encrypted>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0007-002]
-<actionbody>
-	<ExportFile>oom_export_pkcs8rsa_0.001</ExportFile>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0RSA</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<encrypted>0</encrypted>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0007-003]
-<actionbody>
-	<ImportData>pkcs8dsa.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm0DSA</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<encrypted>0</encrypted>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0007-004]
-<actionbody>
-	<ExportFile>oom_export_pkcs8dsa_0.001</ExportFile>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm0DSA</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<encrypted>0</encrypted>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0007-005]
-<actionbody>
-	<ExportFile>oom_encrypted_export_pkcs8rsa.001</ExportFile>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0RSA</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<encrypted>1</encrypted>
-
-	<passphrase>export clanger</passphrase>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0007-006]
-<actionbody>
-	<ExportFile>oom_encrypted_export_pkcs8dsa.001</ExportFile>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm0DSA</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<encrypted>1</encrypted>
-
-	<passphrase>export clanger</passphrase>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0008-001]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0008-002]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<foundkey>banana</foundkey>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0008-003]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>15</timeout>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0008-004]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>15</timeout>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0008-005]
-<actionbody>
-	<keylabel>banana</keylabel>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0008-006]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>15</timeout>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0008-007]
-<actionbody>
-	<keylabel>banana</keylabel>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0008-008]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-CANCEL_USEAUTH-0009-003]
-<actionbody>
-	<seconds>5</seconds>
-</actionbody>
-
+[SEC-CANCEL_USEAUTH-0002-001]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0002-003]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyexportable>IsExportable</keyexportable>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0003-001]
+
+<actionbody>
+
+	<foundkey>banana</foundkey>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0003-002]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0003-003]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0003-004]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0003-005]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0003-006]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>digested!</text>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0003-007]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<text>Ook!</text>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0004-001]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-001]
+
+<actionbody>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-002]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>bigbanana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyexportable>IsExportable</keyexportable>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-003]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-004]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-005]
+
+<actionbody>
+
+	<keylabel>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</keylabel>
+
+	<open>RSA</open>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-006]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>carrot</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-007]
+
+<actionbody>
+
+	<keylabel>carrot</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-008]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>mango</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-009]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-010]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<n>DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F</n>
+
+	<g>02</g>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-011]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>jackfruit</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-012]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>custard apple</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-013]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keyusage>NR</keyusage>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>grape</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-014]
+
+<actionbody>
+
+   		<foundkey>bigbanana</foundkey>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>	
+
+   		<foundkey>jackfruit</foundkey>
+
+   		<foundkey>custard apple</foundkey>
+
+   		<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-015]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+   		<foundkey>carrot</foundkey>
+
+   		<foundkey>custard apple</foundkey>
+
+   		<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-016]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+   		<foundkey>bigbanana</foundkey>
+
+   		<foundkey>carrot</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>
+
+   		<foundkey>jackfruit</foundkey>
+
+   		<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-017]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+   		<foundkey>jackfruit</foundkey>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>	
+
+   		<foundkey>jackfruit</foundkey>
+
+   		<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-018]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>2</deletecount>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-019]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-020]
+
+<actionbody>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+   		<foundkey>jackfruit</foundkey>
+
+   		<foundkey>custard apple</foundkey>
+
+   		<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-021]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-022]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-023]
+
+<actionbody>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>banana</foundkey>
+
+   		<foundkey>jackfruit</foundkey>
+
+   		<foundkey>custard apple</foundkey>
+
+   		<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-024]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-025]
+
+<actionbody>
+
+	<deletecount>5</deletecount>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0005-026]
+
+<actionbody>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0006-001]
+
+<actionbody>
+
+	<ImportData>encryptPK8dsa4DER.txt</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED* encrypted purple plum</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<encrypted>1</encrypted>
+
+	<passphrase>import clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0006-002]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<foundkey>*IMPORTED* encrypted purple plum</foundkey>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0006-003]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0007-001]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0RSA</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<encrypted>0</encrypted>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0007-002]
+
+<actionbody>
+
+	<ExportFile>oom_export_pkcs8rsa_0.001</ExportFile>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0RSA</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<encrypted>0</encrypted>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0007-003]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm0DSA</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<encrypted>0</encrypted>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0007-004]
+
+<actionbody>
+
+	<ExportFile>oom_export_pkcs8dsa_0.001</ExportFile>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm0DSA</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<encrypted>0</encrypted>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0007-005]
+
+<actionbody>
+
+	<ExportFile>oom_encrypted_export_pkcs8rsa.001</ExportFile>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0RSA</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<encrypted>1</encrypted>
+
+
+
+	<passphrase>export clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0007-006]
+
+<actionbody>
+
+	<ExportFile>oom_encrypted_export_pkcs8dsa.001</ExportFile>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm0DSA</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<encrypted>1</encrypted>
+
+
+
+	<passphrase>export clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0008-001]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0008-002]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<foundkey>banana</foundkey>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0008-003]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>15</timeout>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0008-004]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>15</timeout>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0008-005]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0008-006]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>15</timeout>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0008-007]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0008-008]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-CANCEL_USEAUTH-0009-003]
+
+<actionbody>
+
+	<seconds>5</seconds>
+
+</actionbody>
+
+
+
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/createoldkeystore.txt	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/createoldkeystore.txt	Mon Oct 12 10:17:04 2009 +0300
@@ -17,9 +17,6 @@
 	<actiontype>init</actiontype>
 	<actionbody>
 		<mode>manager</mode>
-		<CheckStoreCount>1</CheckStoreCount>
-		<KeyStoreCount>4</KeyStoreCount>
-		<KeyStoreManagerCount>3</KeyStoreManagerCount>
 	</actionbody>
 	<actionresult>
 		<return>KErrNone</return>
@@ -89,7 +86,6 @@
    	<actionname>List all keys</actionname>
  	<actiontype>listallkeys</actiontype>
    	<actionbody>
-   		<listcount>3</listcount>
    		<foundkey>dhkey</foundkey>
 		<foundkey>rsakey</foundkey>
 		<foundkey>dsakey</foundkey>
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/oldserver_newfeature.ini	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/oldserver_newfeature.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -17,9 +17,6 @@
 [SEC-OLDSERVER_NEWFEATURE-0001-006]
 <actionbody>
 	<mode>manager</mode>
-	<CheckStoreCount>1</CheckStoreCount>
-	<KeyStoreCount>4</KeyStoreCount>
-	<KeyStoreManagerCount>3</KeyStoreManagerCount>
 </actionbody>
 
 [SEC-OLDSERVER_NEWFEATURE-0001-007]
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/oom.ini	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/oom.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -1,671 +1,1318 @@
-[SEC-FILETOKENS-OOM-0002-001]
-<actionbody>
-	<mode>manager</mode>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0002-003]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyexportable>IsExportable</keyexportable>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0003-001]
-<actionbody>
-	<listcount>1</listcount>
-	<foundkey>banana</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0003-002]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0003-003]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>0</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0003-004]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0003-005]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0003-006]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0003-007]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<signdigest>1</signdigest>
-	<text>digested!</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0003-008]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<text>Ook!</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0004-001]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-001]
-<actionbody>
-	<listcount>0</listcount>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-002]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>bigbanana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyexportable>IsExportable</keyexportable>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-003]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-004]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-005]
-<actionbody>
-	<keylabel>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</keylabel>
-	<open>RSA</open>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-006]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>carrot</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-007]
-<actionbody>
-	<keylabel>carrot</keylabel>
-	<open>DSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-008]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>mango</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-009]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-010]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<n>DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F</n>
-	<g>02</g>
-	<passphrase>pinkcloud</passphrase>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-011]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>jackfruit</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-012]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>custard apple</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-013]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keyusage>NR</keyusage>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>grape</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-014]
-<actionbody>
-	<listcount>7</listcount>
-	<foundkey>bigbanana</foundkey>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>	
-	<foundkey>jackfruit</foundkey>
-	<foundkey>custard apple</foundkey>
-	<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-015]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-   		<listcount>3</listcount>
-   		<foundkey>carrot</foundkey>
-	<foundkey>custard apple</foundkey>
-	<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-016]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-   		<listcount>5</listcount>
-   		<foundkey>carrot</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>
-	<foundkey>jackfruit</foundkey>
-	<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-017]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<listcount>5</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>	
-	<foundkey>jackfruit</foundkey>
-	<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-018]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>2</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-019]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>0</listcount>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-020]
-<actionbody>
-	<listcount>5</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>jackfruit</foundkey>
-	<foundkey>custard apple</foundkey>
-	<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-021]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-022]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>1</listcount>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-023]
-<actionbody>
-	<listcount>6</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>banana</foundkey>
-	<foundkey>jackfruit</foundkey>
-	<foundkey>custard apple</foundkey>
-	<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-024]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-025]
-<actionbody>
-	<deletecount>5</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0005-026]
-<actionbody>
-	<listcount>0</listcount>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0006-001]
-<actionbody>
-	<ImportData>encryptPK8dsa4DER.txt</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED* encrypted purple plum</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<encrypted>1</encrypted>
-	<passphrase>import clanger</passphrase>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0006-002]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-	<listcount>1</listcount>
-	<foundkey>*IMPORTED* encrypted purple plum</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0006-003]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0007-001]
-<actionbody>
-	<ImportData>pkcs8rsa.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0RSA</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<encrypted>0</encrypted>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0007-002]
-<actionbody>
-	<keylabel>gm0</keylabel>
-	<timeout>0</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0007-003]
-<actionbody>
-	<ExportFile>oom_export_pkcs8rsa_0.001</ExportFile>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0RSA</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<encrypted>0</encrypted>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0007-004]
-<actionbody>
-	<ImportData>pkcs8dsa.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm0DSA</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<encrypted>0</encrypted>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0007-005]
-<actionbody>
-	<ExportFile>oom_export_pkcs8dsa_0.001</ExportFile>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm0DSA</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<encrypted>0</encrypted>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0007-006]
-<actionbody>
-	<ExportFile>oom_encrypted_export_pkcs8rsa.001</ExportFile>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0RSA</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<encrypted>1</encrypted>
-	<passphrase>pinkcloud</passphrase>
-	<passphrase>export clanger</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0007-007]
-<actionbody>
-	<ExportFile>oom_encrypted_export_pkcs8dsa.001</ExportFile>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm0DSA</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<encrypted>1</encrypted>
-	<passphrase>pinkcloud</passphrase>
-	<passphrase>export clanger</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0008-001]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create flyingelephant</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0008-002]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<foundkey>banana</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0008-003]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<passphrase>change flyingelephant redfox</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0008-004]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>15</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0008-005]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>15</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0008-006]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<passphrase>redfox</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0008-007]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>15</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0008-008]
-<actionbody>
-	<keylabel>banana</keylabel>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0008-009]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-OOM-0009-003]
-<actionbody>
-	<seconds>5</seconds>
-</actionbody>
-
+[SEC-FILETOKENS-OOM-0002-001]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0002-003]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyexportable>IsExportable</keyexportable>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0003-001]
+
+<actionbody>
+
+	<foundkey>banana</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0003-002]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0003-003]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>0</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0003-004]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0003-005]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0003-006]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0003-007]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>digested!</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0003-008]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<text>Ook!</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0004-001]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-001]
+
+<actionbody>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-002]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>bigbanana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyexportable>IsExportable</keyexportable>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-003]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-004]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-005]
+
+<actionbody>
+
+	<keylabel>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</keylabel>
+
+	<open>RSA</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-006]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>carrot</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-007]
+
+<actionbody>
+
+	<keylabel>carrot</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-008]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>mango</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-009]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-010]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<n>DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F</n>
+
+	<g>02</g>
+
+	<passphrase>pinkcloud</passphrase>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-011]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>jackfruit</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-012]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>custard apple</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-013]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keyusage>NR</keyusage>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>grape</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-014]
+
+<actionbody>
+
+	<foundkey>bigbanana</foundkey>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>	
+
+	<foundkey>jackfruit</foundkey>
+
+	<foundkey>custard apple</foundkey>
+
+	<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-015]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+   		<foundkey>carrot</foundkey>
+
+	<foundkey>custard apple</foundkey>
+
+	<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-016]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+   		<foundkey>carrot</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>
+
+	<foundkey>jackfruit</foundkey>
+
+	<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-017]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>	
+
+	<foundkey>jackfruit</foundkey>
+
+	<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-018]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>2</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-019]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-020]
+
+<actionbody>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>jackfruit</foundkey>
+
+	<foundkey>custard apple</foundkey>
+
+	<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-021]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-022]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-023]
+
+<actionbody>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>banana</foundkey>
+
+	<foundkey>jackfruit</foundkey>
+
+	<foundkey>custard apple</foundkey>
+
+	<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-024]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-025]
+
+<actionbody>
+
+	<deletecount>5</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0005-026]
+
+<actionbody>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0006-001]
+
+<actionbody>
+
+	<ImportData>encryptPK8dsa4DER.txt</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED* encrypted purple plum</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<encrypted>1</encrypted>
+
+	<passphrase>import clanger</passphrase>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0006-002]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<foundkey>*IMPORTED* encrypted purple plum</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0006-003]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0007-001]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0RSA</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<encrypted>0</encrypted>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0007-002]
+
+<actionbody>
+
+	<keylabel>gm0</keylabel>
+
+	<timeout>0</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0007-003]
+
+<actionbody>
+
+	<ExportFile>oom_export_pkcs8rsa_0.001</ExportFile>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0RSA</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<encrypted>0</encrypted>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0007-004]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm0DSA</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<encrypted>0</encrypted>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0007-005]
+
+<actionbody>
+
+	<ExportFile>oom_export_pkcs8dsa_0.001</ExportFile>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm0DSA</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<encrypted>0</encrypted>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0007-006]
+
+<actionbody>
+
+	<ExportFile>oom_encrypted_export_pkcs8rsa.001</ExportFile>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0RSA</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<encrypted>1</encrypted>
+
+	<passphrase>pinkcloud</passphrase>
+
+	<passphrase>export clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0007-007]
+
+<actionbody>
+
+	<ExportFile>oom_encrypted_export_pkcs8dsa.001</ExportFile>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm0DSA</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<encrypted>1</encrypted>
+
+	<passphrase>pinkcloud</passphrase>
+
+	<passphrase>export clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0008-001]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create flyingelephant</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0008-002]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<foundkey>banana</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0008-003]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<passphrase>change flyingelephant redfox</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0008-004]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>15</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0008-005]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>15</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0008-006]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<passphrase>redfox</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0008-007]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>15</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0008-008]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0008-009]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-OOM-0009-003]
+
+<actionbody>
+
+	<seconds>5</seconds>
+
+</actionbody>
+
+
+
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/oom_useauth.ini	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/oom_useauth.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -1,653 +1,1282 @@
-[SEC-OOM_USEAUTH-0002-001]
-<actionbody>
-	<mode>manager</mode>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0002-003]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyexportable>IsExportable</keyexportable>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0003-001]
-<actionbody>
-	<listcount>1</listcount>
-	<foundkey>banana</foundkey>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0003-002]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0003-003]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0003-004]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0003-005]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0003-006]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<signdigest>1</signdigest>
-	<text>digested!</text>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0003-007]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<text>Ook!</text>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0004-001]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-001]
-<actionbody>
-	<listcount>0</listcount>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-002]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>bigbanana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyexportable>IsExportable</keyexportable>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-003]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-004]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-005]
-<actionbody>
-	<keylabel>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</keylabel>
-	<open>RSA</open>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-006]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>carrot</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-007]
-<actionbody>
-	<keylabel>carrot</keylabel>
-	<open>DSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-008]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>mango</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-009]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-010]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<n>DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F</n>
-	<g>02</g>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-011]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>jackfruit</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-012]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>custard apple</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-013]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keyusage>NR</keyusage>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>grape</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-014]
-<actionbody>
-	<listcount>7</listcount>
-	<foundkey>bigbanana</foundkey>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>	
-	<foundkey>jackfruit</foundkey>
-	<foundkey>custard apple</foundkey>
-	<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-015]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-   		<listcount>3</listcount>
-   		<foundkey>carrot</foundkey>
-	<foundkey>custard apple</foundkey>
-	<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-016]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-   		<listcount>5</listcount>
-   		<foundkey>carrot</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>
-	<foundkey>jackfruit</foundkey>
-	<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-017]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<listcount>5</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>	
-	<foundkey>jackfruit</foundkey>
-	<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-018]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>2</deletecount>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-019]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>0</listcount>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-020]
-<actionbody>
-	<listcount>5</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>jackfruit</foundkey>
-	<foundkey>custard apple</foundkey>
-	<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-021]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-022]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>1</listcount>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-023]
-<actionbody>
-	<listcount>6</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>banana</foundkey>
-	<foundkey>jackfruit</foundkey>
-	<foundkey>custard apple</foundkey>
-	<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-024]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-025]
-<actionbody>
-	<deletecount>5</deletecount>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0005-026]
-<actionbody>
-	<listcount>0</listcount>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0006-001]
-<actionbody>
-	<ImportData>encryptPK8dsa4DER.txt</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED* encrypted purple plum</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<encrypted>1</encrypted>
-	<passphrase>import clanger</passphrase>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0006-002]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-	<listcount>1</listcount>
-	<foundkey>*IMPORTED* encrypted purple plum</foundkey>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0006-003]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0007-001]
-<actionbody>
-	<ImportData>pkcs8rsa.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0RSA</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<encrypted>0</encrypted>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0007-002]
-<actionbody>
-	<ExportFile>oom_export_pkcs8rsa_0.001</ExportFile>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0RSA</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<encrypted>0</encrypted>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0007-003]
-<actionbody>
-	<ImportData>pkcs8dsa.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm0DSA</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<encrypted>0</encrypted>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0007-004]
-<actionbody>
-	<ExportFile>oom_export_pkcs8dsa_0.001</ExportFile>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm0DSA</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<encrypted>0</encrypted>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0007-005]
-<actionbody>
-	<ExportFile>oom_encrypted_export_pkcs8rsa.001</ExportFile>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0RSA</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<encrypted>1</encrypted>
-
-	<passphrase>export clanger</passphrase>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0007-006]
-<actionbody>
-	<ExportFile>oom_encrypted_export_pkcs8dsa.001</ExportFile>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm0DSA</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<encrypted>1</encrypted>
-
-	<passphrase>export clanger</passphrase>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0008-001]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>cheeku</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keystore>0</keystore>
-	<authexpression>strong</authexpression>
-	<freshness>0</freshness>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0008-002]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>cheeku</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0008-003]
-<actionbody>
-	<authmode>set</authmode>
-	<keylabel>cheeku</keylabel>
-	<authexpression>medium</authexpression>
-	<freshness>21</freshness>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0008-004]
-<actionbody>
-	<authmode>get</authmode>
-	<keylabel>cheeku</keylabel>
-	<expectedexpression>medium</expectedexpression>
-	<expectedfreshness>21</expectedfreshness>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0008-005]
-<actionbody>
-	<ImportData>pkcs8rsa.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<authexpression>strong</authexpression>
-	<freshness>25</freshness>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0008-006]
-<actionbody>
-	<ExportFile>export_pkcs8rsa_0.001</ExportFile>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<encrypted>0</encrypted>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0008-007]
-<actionbody>
-	<ImportData>export_pkcs8rsa_0_3DES_CBC.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm_export_pkcs8rsa_0_3DES_CBC.001</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<encrypted>0</encrypted>
-	<passphrase>import clanger</passphrase>
-	<authexpression>strong</authexpression>
-	<freshness>50</freshness>
-</actionbody>
-
-[SEC-OOM_USEAUTH-0009-003]
-<actionbody>
-	<seconds>5</seconds>
-</actionbody>
-
+[SEC-OOM_USEAUTH-0002-001]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0002-003]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyexportable>IsExportable</keyexportable>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0003-001]
+
+<actionbody>
+
+	<foundkey>banana</foundkey>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0003-002]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0003-003]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0003-004]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0003-005]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0003-006]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>digested!</text>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0003-007]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<text>Ook!</text>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0004-001]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-001]
+
+<actionbody>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-002]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>bigbanana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyexportable>IsExportable</keyexportable>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-003]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-004]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-005]
+
+<actionbody>
+
+	<keylabel>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</keylabel>
+
+	<open>RSA</open>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-006]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>carrot</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-007]
+
+<actionbody>
+
+	<keylabel>carrot</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-008]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>mango</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-009]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-010]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<n>DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F</n>
+
+	<g>02</g>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-011]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>jackfruit</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-012]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>custard apple</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-013]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keyusage>NR</keyusage>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>grape</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-014]
+
+<actionbody>
+
+	<foundkey>bigbanana</foundkey>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>	
+
+	<foundkey>jackfruit</foundkey>
+
+	<foundkey>custard apple</foundkey>
+
+	<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-015]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+   		<foundkey>carrot</foundkey>
+
+	<foundkey>custard apple</foundkey>
+
+	<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-016]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+   		<foundkey>carrot</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>
+
+	<foundkey>jackfruit</foundkey>
+
+	<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-017]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>	
+
+	<foundkey>jackfruit</foundkey>
+
+	<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-018]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>2</deletecount>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-019]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-020]
+
+<actionbody>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>jackfruit</foundkey>
+
+	<foundkey>custard apple</foundkey>
+
+	<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-021]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-022]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-023]
+
+<actionbody>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>banana</foundkey>
+
+	<foundkey>jackfruit</foundkey>
+
+	<foundkey>custard apple</foundkey>
+
+	<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-024]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-025]
+
+<actionbody>
+
+	<deletecount>5</deletecount>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0005-026]
+
+<actionbody>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0006-001]
+
+<actionbody>
+
+	<ImportData>encryptPK8dsa4DER.txt</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED* encrypted purple plum</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<encrypted>1</encrypted>
+
+	<passphrase>import clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0006-002]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<foundkey>*IMPORTED* encrypted purple plum</foundkey>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0006-003]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0007-001]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0RSA</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<encrypted>0</encrypted>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0007-002]
+
+<actionbody>
+
+	<ExportFile>oom_export_pkcs8rsa_0.001</ExportFile>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0RSA</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<encrypted>0</encrypted>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0007-003]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm0DSA</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<encrypted>0</encrypted>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0007-004]
+
+<actionbody>
+
+	<ExportFile>oom_export_pkcs8dsa_0.001</ExportFile>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm0DSA</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<encrypted>0</encrypted>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0007-005]
+
+<actionbody>
+
+	<ExportFile>oom_encrypted_export_pkcs8rsa.001</ExportFile>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0RSA</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<encrypted>1</encrypted>
+
+
+
+	<passphrase>export clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0007-006]
+
+<actionbody>
+
+	<ExportFile>oom_encrypted_export_pkcs8dsa.001</ExportFile>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm0DSA</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<encrypted>1</encrypted>
+
+
+
+	<passphrase>export clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0008-001]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>cheeku</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keystore>0</keystore>
+
+	<authexpression>strong</authexpression>
+
+	<freshness>0</freshness>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0008-002]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>cheeku</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0008-003]
+
+<actionbody>
+
+	<authmode>set</authmode>
+
+	<keylabel>cheeku</keylabel>
+
+	<authexpression>medium</authexpression>
+
+	<freshness>21</freshness>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0008-004]
+
+<actionbody>
+
+	<authmode>get</authmode>
+
+	<keylabel>cheeku</keylabel>
+
+	<expectedexpression>medium</expectedexpression>
+
+	<expectedfreshness>21</expectedfreshness>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0008-005]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<authexpression>strong</authexpression>
+
+	<freshness>25</freshness>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0008-006]
+
+<actionbody>
+
+	<ExportFile>export_pkcs8rsa_0.001</ExportFile>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<encrypted>0</encrypted>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0008-007]
+
+<actionbody>
+
+	<ImportData>export_pkcs8rsa_0_3DES_CBC.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm_export_pkcs8rsa_0_3DES_CBC.001</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<encrypted>0</encrypted>
+
+	<passphrase>import clanger</passphrase>
+
+	<authexpression>strong</authexpression>
+
+	<freshness>50</freshness>
+
+</actionbody>
+
+
+
+[SEC-OOM_USEAUTH-0009-003]
+
+<actionbody>
+
+	<seconds>5</seconds>
+
+</actionbody>
+
+
+
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/reload.ini	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/reload.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -1,339 +1,666 @@
-[SEC-FILETOKENS-RELOAD-0001-001]
-<actionbody>
-	<mode>manager</mode>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0001-003]
-<actionbody>
-	<ImportData>pkcs8rsa.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0_rsa</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0001-004]
-<actionbody>
-	<keylabel>gm0_rsa</keylabel>
-	<timeout>0</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0001-005]
-<actionbody>
-	<ImportData>pkcs8dsa1.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm1_dsa</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0001-006]
-<actionbody>
-	<listcount>2</listcount>
-	<foundkey>gm0_rsa</foundkey>
-	<foundkey>gm1_dsa</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0001-008]
-<actionbody>
-	<seconds>5</seconds>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0001-009]
-<actionbody>
-	<mode>manager</mode>
-	<serveroom>0</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0001-010]
-<actionbody>
-	<listcount>2</listcount>
-	<foundkey>gm0_rsa</foundkey>
-	<foundkey>gm1_dsa</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0002-001]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>gm0_rsa</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0002-002]
-<actionbody>
-	<keylabel>gm0_rsa</keylabel>
-	<open>RSA</open>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0002-003]
-<actionbody>
-	<keylabel>gm0_rsa</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0002-004]
-<actionbody>
-	<keylabel>gm0_rsa</keylabel>
-	<text>Ook!</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0002-005]
-<actionbody>
-	<keylabel>gm0_rsa</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0002-006]
-<actionbody>
-	<keylabel>gm0_rsa</keylabel>
-	<open>RSA</open>
-	<text>This is text of thirty-two chars</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0002-007]
-<actionbody>
-	<keylabel>gm0_rsa</keylabel>
-	<open>RSA</open>
-	<signdigest>1</signdigest>
-	<text>digested!</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0002-008]
-<actionbody>
-	<keylabel>gm0_rsa</keylabel>
-	<open>RSA</open>
-	<signdigest>2</signdigest>
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0002-009]
-<actionbody>
-	<keylabel>gm0_rsa</keylabel>
-	<open>DSA</open>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0002-010]
-<actionbody>
-	<keylabel>gm0_rsa</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0002-011]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>gm1_dsa</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0002-012]
-<actionbody>
-	<keylabel>gm1_dsa</keylabel>
-	<open>DSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0002-013]
-<actionbody>
-	<keylabel>gm1_dsa</keylabel>
-	<open>DSA</open>
-	<text>This is a text of 21.</text>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0002-014]
-<actionbody>
-	<keylabel>gm1_dsa</keylabel>
-	<open>DSA</open>
-	<signdigest>1</signdigest>
-	<passphrase>pinkcloud</passphrase>
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0002-015]
-<actionbody>
-	<keylabel>gm1_dsa</keylabel>
-	<open>DSA</open>
-	<signdigest>2</signdigest>
-	<text>digest!</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0003-003]
-<actionbody>
-	<seconds>5</seconds>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0003-005]
-<actionbody>
-	<mode>manager</mode>
-	<serveroom>0</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0003-006]
-<actionbody>
-	<listcount>2</listcount>
-	<foundkey>gm0</foundkey>
-	<foundkey>gm1</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0003-007]
-<actionbody>
-	<ImportData>pkcs8dsa1.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm1_dsa</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0003-008]
-<actionbody>
-	<listcount>3</listcount>
-	<foundkey>gm0</foundkey>
-	<foundkey>gm1</foundkey>
-	<foundkey>gm1_dsa</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0003-009]
-<actionbody>
-	<corruption>Once upon a time...</corruption>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0003-010]
-<actionbody>
-	<listcount>3</listcount>
-	<foundkey>gm0</foundkey>
-	<foundkey>gm1</foundkey>
-	<foundkey>gm1_dsa</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0003-012]
-<actionbody>
-	<seconds>5</seconds>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0003-013]
-<actionbody>
-	<corruption> CERT has been criticized in the past for being frugal with vulnerability information.  They don't publish exploits, for one, which means k1ddi3z prefer FD. </corruption>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0003-014]
-<actionbody>
-	<mode>manager</mode>
-	<serveroom>0</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0003-015]
-<actionbody>
-	<listcount>2</listcount>
-	<foundkey>gm0</foundkey>
-	<foundkey>gm1</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-RELOAD-0003-018]
-<actionbody>
-	<seconds>5</seconds>
-</actionbody>
-
+[SEC-FILETOKENS-RELOAD-0001-001]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0001-003]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0001-004]
+
+<actionbody>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<timeout>0</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0001-005]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa1.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm1_dsa</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0001-006]
+
+<actionbody>
+
+	<foundkey>gm0_rsa</foundkey>
+
+	<foundkey>gm1_dsa</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0001-008]
+
+<actionbody>
+
+	<seconds>5</seconds>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0001-009]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+	<serveroom>0</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0001-010]
+
+<actionbody>
+
+	<foundkey>gm0_rsa</foundkey>
+
+	<foundkey>gm1_dsa</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0002-001]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0002-002]
+
+<actionbody>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<open>RSA</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0002-003]
+
+<actionbody>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0002-004]
+
+<actionbody>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<text>Ook!</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0002-005]
+
+<actionbody>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0002-006]
+
+<actionbody>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of thirty-two chars</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0002-007]
+
+<actionbody>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>digested!</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0002-008]
+
+<actionbody>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>2</signdigest>
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0002-009]
+
+<actionbody>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<open>DSA</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0002-010]
+
+<actionbody>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0002-011]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>gm1_dsa</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0002-012]
+
+<actionbody>
+
+	<keylabel>gm1_dsa</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0002-013]
+
+<actionbody>
+
+	<keylabel>gm1_dsa</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is a text of 21.</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0002-014]
+
+<actionbody>
+
+	<keylabel>gm1_dsa</keylabel>
+
+	<open>DSA</open>
+
+	<signdigest>1</signdigest>
+
+	<passphrase>pinkcloud</passphrase>
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0002-015]
+
+<actionbody>
+
+	<keylabel>gm1_dsa</keylabel>
+
+	<open>DSA</open>
+
+	<signdigest>2</signdigest>
+
+	<text>digest!</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0003-003]
+
+<actionbody>
+
+	<seconds>5</seconds>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0003-005]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+	<serveroom>0</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0003-006]
+
+<actionbody>
+
+	<foundkey>gm0</foundkey>
+
+	<foundkey>gm1</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0003-007]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa1.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm1_dsa</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0003-008]
+
+<actionbody>
+
+	<foundkey>gm0</foundkey>
+
+	<foundkey>gm1</foundkey>
+
+	<foundkey>gm1_dsa</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0003-009]
+
+<actionbody>
+
+	<corruption>Once upon a time...</corruption>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0003-010]
+
+<actionbody>
+
+	<foundkey>gm0</foundkey>
+
+	<foundkey>gm1</foundkey>
+
+	<foundkey>gm1_dsa</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0003-012]
+
+<actionbody>
+
+	<seconds>5</seconds>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0003-013]
+
+<actionbody>
+
+	<corruption> CERT has been criticized in the past for being frugal with vulnerability information.  They don't publish exploits, for one, which means k1ddi3z prefer FD. </corruption>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0003-014]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+	<serveroom>0</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0003-015]
+
+<actionbody>
+
+	<foundkey>gm0</foundkey>
+
+	<foundkey>gm1</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-RELOAD-0003-018]
+
+<actionbody>
+
+	<seconds>5</seconds>
+
+</actionbody>
+
+
+
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/reload_useauth.ini	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/reload_useauth.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -1,311 +1,612 @@
-[SEC-RELOAD_USEAUTH-0001-001]
-<actionbody>
-	<mode>manager</mode>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0001-003]
-<actionbody>
-	<ImportData>pkcs8rsa.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0_rsa</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0001-004]
-<actionbody>
-	<ImportData>pkcs8dsa1.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm1_dsa</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0001-005]
-<actionbody>
-	<listcount>2</listcount>
-	<foundkey>gm0_rsa</foundkey>
-	<foundkey>gm1_dsa</foundkey>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0001-007]
-<actionbody>
-	<seconds>5</seconds>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0001-008]
-<actionbody>
-	<mode>manager</mode>
-	<serveroom>0</serveroom>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0001-009]
-<actionbody>
-	<listcount>2</listcount>
-	<foundkey>gm0_rsa</foundkey>
-	<foundkey>gm1_dsa</foundkey>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0002-001]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>gm0_rsa</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0002-002]
-<actionbody>
-	<keylabel>gm0_rsa</keylabel>
-	<open>RSA</open>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0002-003]
-<actionbody>
-	<keylabel>gm0_rsa</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0002-004]
-<actionbody>
-	<keylabel>gm0_rsa</keylabel>
-	<text>Ook!</text>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0002-005]
-<actionbody>
-	<keylabel>gm0_rsa</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0002-006]
-<actionbody>
-	<keylabel>gm0_rsa</keylabel>
-	<open>RSA</open>
-	<text>This is text of thirty-two chars</text>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0002-007]
-<actionbody>
-	<keylabel>gm0_rsa</keylabel>
-	<open>RSA</open>
-	<signdigest>1</signdigest>
-	<text>digested!</text>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0002-008]
-<actionbody>
-	<keylabel>gm0_rsa</keylabel>
-	<open>RSA</open>
-	<signdigest>2</signdigest>
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0002-009]
-<actionbody>
-	<keylabel>gm0_rsa</keylabel>
-	<open>DSA</open>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0002-010]
-<actionbody>
-	<keylabel>gm0_rsa</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0002-011]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>gm1_dsa</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0002-012]
-<actionbody>
-	<keylabel>gm1_dsa</keylabel>
-	<open>DSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0002-013]
-<actionbody>
-	<keylabel>gm1_dsa</keylabel>
-	<open>DSA</open>
-	<text>This is a text of 21.</text>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0002-014]
-<actionbody>
-	<keylabel>gm1_dsa</keylabel>
-	<open>DSA</open>
-	<signdigest>1</signdigest>
-
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0002-015]
-<actionbody>
-	<keylabel>gm1_dsa</keylabel>
-	<open>DSA</open>
-	<signdigest>2</signdigest>
-	<text>digest!</text>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0003-003]
-<actionbody>
-	<seconds>5</seconds>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0003-005]
-<actionbody>
-	<mode>manager</mode>
-	<serveroom>0</serveroom>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0003-006]
-<actionbody>
-	<ImportData>pkcs8dsa1.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm1_dsa</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0003-007]
-<actionbody>
-	<listcount>1</listcount>
-	<foundkey>gm1_dsa</foundkey>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0003-008]
-<actionbody>
-	<corruption>Once upon a time...</corruption>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0003-009]
-<actionbody>
-	<listcount>1</listcount>
-	<foundkey>gm1_dsa</foundkey>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0003-011]
-<actionbody>
-	<seconds>5</seconds>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0003-012]
-<actionbody>
-	<corruption> CERT has been criticized in the past for being frugal with vulnerability information.  They don't publish exploits, for one, which means k1ddi3z prefer FD. </corruption>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0003-013]
-<actionbody>
-	<mode>manager</mode>
-	<serveroom>0</serveroom>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0003-014]
-<actionbody>
-	<listcount>0</listcount>
-</actionbody>
-
-[SEC-RELOAD_USEAUTH-0003-017]
-<actionbody>
-	<seconds>5</seconds>
-</actionbody>
-
+[SEC-RELOAD_USEAUTH-0001-001]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0001-003]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0001-004]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa1.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm1_dsa</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0001-005]
+
+<actionbody>
+
+	<foundkey>gm0_rsa</foundkey>
+
+	<foundkey>gm1_dsa</foundkey>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0001-007]
+
+<actionbody>
+
+	<seconds>5</seconds>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0001-008]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+	<serveroom>0</serveroom>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0001-009]
+
+<actionbody>
+
+	<foundkey>gm0_rsa</foundkey>
+
+	<foundkey>gm1_dsa</foundkey>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0002-001]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0002-002]
+
+<actionbody>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<open>RSA</open>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0002-003]
+
+<actionbody>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0002-004]
+
+<actionbody>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<text>Ook!</text>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0002-005]
+
+<actionbody>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0002-006]
+
+<actionbody>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of thirty-two chars</text>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0002-007]
+
+<actionbody>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>digested!</text>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0002-008]
+
+<actionbody>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>2</signdigest>
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0002-009]
+
+<actionbody>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<open>DSA</open>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0002-010]
+
+<actionbody>
+
+	<keylabel>gm0_rsa</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0002-011]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>gm1_dsa</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0002-012]
+
+<actionbody>
+
+	<keylabel>gm1_dsa</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0002-013]
+
+<actionbody>
+
+	<keylabel>gm1_dsa</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is a text of 21.</text>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0002-014]
+
+<actionbody>
+
+	<keylabel>gm1_dsa</keylabel>
+
+	<open>DSA</open>
+
+	<signdigest>1</signdigest>
+
+
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0002-015]
+
+<actionbody>
+
+	<keylabel>gm1_dsa</keylabel>
+
+	<open>DSA</open>
+
+	<signdigest>2</signdigest>
+
+	<text>digest!</text>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0003-003]
+
+<actionbody>
+
+	<seconds>5</seconds>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0003-005]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+	<serveroom>0</serveroom>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0003-006]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa1.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm1_dsa</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0003-007]
+
+<actionbody>
+
+	<foundkey>gm1_dsa</foundkey>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0003-008]
+
+<actionbody>
+
+	<corruption>Once upon a time...</corruption>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0003-009]
+
+<actionbody>
+
+	<foundkey>gm1_dsa</foundkey>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0003-011]
+
+<actionbody>
+
+	<seconds>5</seconds>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0003-012]
+
+<actionbody>
+
+	<corruption> CERT has been criticized in the past for being frugal with vulnerability information.  They don't publish exploits, for one, which means k1ddi3z prefer FD. </corruption>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0003-013]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+	<serveroom>0</serveroom>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0003-014]
+
+<actionbody>
+
+</actionbody>
+
+
+
+[SEC-RELOAD_USEAUTH-0003-017]
+
+<actionbody>
+
+	<seconds>5</seconds>
+
+</actionbody>
+
+
+
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/servoom.ini	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/servoom.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -1,716 +1,1406 @@
-[SEC-FILETOKENS-SERVOOM-0001-003]
-<actionbody>
-	<mode>manager</mode>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0002-001]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyexportable>IsExportable</keyexportable>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<serveroom>1</serveroom>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0002-002]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>0</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0003-001]
-<actionbody>
-	<listcount>1</listcount>
-	<foundkey>banana</foundkey>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0004-001]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>1</deletecount>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0005-001]
-<actionbody>
-	<listcount>0</listcount>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0005-002]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>bigbanana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyexportable>IsExportable</keyexportable>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<serveroom>0</serveroom>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0005-003]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<serveroom>0</serveroom>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0005-004]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>carrot</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<serveroom>1</serveroom>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0005-005]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>mango</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<serveroom>1</serveroom>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0005-006]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<open>DH</open>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0005-007]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<n>DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F</n>
-	<g>02</g>
-	<serveroom>1</serveroom>
-	<passphrase>pinkcloud</passphrase>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0005-008]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>jackfruit</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0005-009]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>custard apple</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0005-010]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keyusage>NR</keyusage>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>grape</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0005-011]
-<actionbody>
-	<listcount>7</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>
-	<foundkey>jackfruit</foundkey>
-	<foundkey>custard apple</foundkey>
-	<foundkey>grape</foundkey>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0005-012]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-	<listcount>3</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>custard apple</foundkey>
-	<foundkey>grape</foundkey>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0005-013]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<listcount>5</listcount>
-	<foundkey>bigbanana</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>
-	<foundkey>carrot</foundkey>
-	<foundkey>jackfruit</foundkey>
-	<foundkey>grape</foundkey>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0005-014]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<listcount>5</listcount>
-	<foundkey>bigbanana</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>
-	<foundkey>carrot</foundkey>
-	<foundkey>jackfruit</foundkey>
-	<foundkey>grape</foundkey>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0005-015]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>2</deletecount>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0005-016]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>0</listcount>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0005-017]
-<actionbody>
-	<listcount>5</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>jackfruit</foundkey>
-	<foundkey>custard apple</foundkey>
-	<foundkey>grape</foundkey>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0005-018]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<serveroom>0</serveroom>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0005-019]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>1</listcount>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0005-020]
-<actionbody>
-	<listcount>6</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>banana</foundkey>
-	<foundkey>jackfruit</foundkey>
-	<foundkey>custard apple</foundkey>
-	<foundkey>grape</foundkey>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0006-001]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0006-002]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>Decrypt</open>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0006-003]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<text>Ook!</text>
-	<serveroom>1</serveroom>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0006-004]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<serveroom>1</serveroom>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0006-005]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of thirty-two chars</text>
-	<serveroom>1</serveroom>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0006-006]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<signdigest>1</signdigest>
-	<text>digested!</text>
-	<serveroom>1</serveroom>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0006-007]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>1</deletecount>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0007-001]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>carrot</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0007-002]
-<actionbody>
-	<keylabel>carrot</keylabel>
-	<open>DSA</open>
-	<text>This is text of 20 .</text>
-	<serveroom>1</serveroom>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0007-003]
-<actionbody>
-	<keylabel>carrot</keylabel>
-	<open>DSA</open>
-	<text>This is a text of 21.</text>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0007-004]
-<actionbody>
-	<keylabel>carrot</keylabel>
-	<open>DSA</open>
-	<signdigest>1</signdigest>
-	<passphrase>pinkcloud</passphrase>
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0007-005]
-<actionbody>
-	<keylabel>carrot</keylabel>
-	<open>DSA</open>
-	<signdigest>2</signdigest>
-	<text>digest!</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0007-006]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-	<deletecount>3</deletecount>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0007-007]
-<actionbody>
-	<listcount>2</listcount>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0007-008]
-<actionbody>
-	<deletecount>2</deletecount>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0007-009]
-<actionbody>
-	<listcount>0</listcount>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0008-001]
-<actionbody>
-	<ImportData>encryptPK8dsa4DER.txt</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED* encrypted purple plum</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-	<passphrase>create pinkcloud</passphrase>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0008-002]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-	<listcount>1</listcount>
-	<foundkey>*IMPORTED* encrypted purple plum</foundkey>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0008-003]
-<actionbody>
-	<deletecount>1</deletecount>		
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0009-001]
-<actionbody>
-	<ImportData>pkcs8rsa.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0RSA</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0009-002]
-<actionbody>
-	<keylabel>gm0</keylabel>
-	<timeout>0</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0009-003]
-<actionbody>
-	<ExportFile>oom_export_pkcs8rsa_0.001</ExportFile>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0RSA</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<encrypted>0</encrypted>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0009-004]
-<actionbody>
-	<ImportData>pkcs8dsa.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm0DSA</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0009-005]
-<actionbody>
-	<ExportFile>oom_export_pkcs8dsa_0.001</ExportFile>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm0DSA</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<encrypted>0</encrypted>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0009-006]
-<actionbody>
-	<ExportFile>oom_encrypted_export_pkcs8rsa.001</ExportFile>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0RSA</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<encrypted>1</encrypted>
-	<passphrase>pinkcloud</passphrase>
-	<passphrase>export clanger</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0009-007]
-<actionbody>
-	<ExportFile>oom_encrypted_export_pkcs8dsa.001</ExportFile>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm0DSA</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<encrypted>1</encrypted>
-	<passphrase>pinkcloud</passphrase>
-	<passphrase>export clanger</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0010-001]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create flyingelephant</passphrase>
-	<serveroom>0</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0010-002]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<foundkey>banana</foundkey>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0010-003]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<passphrase>change flyingelephant redfox</passphrase>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0010-004]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>15</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0010-005]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>15</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0010-006]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<passphrase>redfox</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0010-007]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<timeout>15</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0010-008]
-<actionbody>
-	<keylabel>banana</keylabel>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0010-009]
-<actionbody>
-	<deletecount>1</deletecount>
-	<serveroom>0</serveroom>
-</actionbody>
-
-[SEC-FILETOKENS-SERVOOM-0011-003]
-<actionbody>
-	<seconds>5</seconds>
-</actionbody>
-
+[SEC-FILETOKENS-SERVOOM-0001-003]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0002-001]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyexportable>IsExportable</keyexportable>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<serveroom>1</serveroom>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0002-002]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>0</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0003-001]
+
+<actionbody>
+
+	<foundkey>banana</foundkey>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0004-001]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>1</deletecount>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0005-001]
+
+<actionbody>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0005-002]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>bigbanana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyexportable>IsExportable</keyexportable>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<serveroom>0</serveroom>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0005-003]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<serveroom>0</serveroom>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0005-004]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>carrot</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<serveroom>1</serveroom>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0005-005]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>mango</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<serveroom>1</serveroom>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0005-006]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<open>DH</open>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0005-007]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<n>DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F</n>
+
+	<g>02</g>
+
+	<serveroom>1</serveroom>
+
+	<passphrase>pinkcloud</passphrase>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0005-008]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>jackfruit</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0005-009]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>custard apple</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0005-010]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keyusage>NR</keyusage>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>grape</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0005-011]
+
+<actionbody>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>
+
+	<foundkey>jackfruit</foundkey>
+
+	<foundkey>custard apple</foundkey>
+
+	<foundkey>grape</foundkey>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0005-012]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>custard apple</foundkey>
+
+	<foundkey>grape</foundkey>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0005-013]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<foundkey>bigbanana</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>jackfruit</foundkey>
+
+	<foundkey>grape</foundkey>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0005-014]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<foundkey>bigbanana</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>jackfruit</foundkey>
+
+	<foundkey>grape</foundkey>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0005-015]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>2</deletecount>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0005-016]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0005-017]
+
+<actionbody>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>jackfruit</foundkey>
+
+	<foundkey>custard apple</foundkey>
+
+	<foundkey>grape</foundkey>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0005-018]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<serveroom>0</serveroom>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0005-019]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0005-020]
+
+<actionbody>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>banana</foundkey>
+
+	<foundkey>jackfruit</foundkey>
+
+	<foundkey>custard apple</foundkey>
+
+	<foundkey>grape</foundkey>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0006-001]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0006-002]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>Decrypt</open>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0006-003]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<text>Ook!</text>
+
+	<serveroom>1</serveroom>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0006-004]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<serveroom>1</serveroom>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0006-005]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of thirty-two chars</text>
+
+	<serveroom>1</serveroom>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0006-006]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>digested!</text>
+
+	<serveroom>1</serveroom>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0006-007]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>1</deletecount>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0007-001]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>carrot</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0007-002]
+
+<actionbody>
+
+	<keylabel>carrot</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<serveroom>1</serveroom>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0007-003]
+
+<actionbody>
+
+	<keylabel>carrot</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is a text of 21.</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0007-004]
+
+<actionbody>
+
+	<keylabel>carrot</keylabel>
+
+	<open>DSA</open>
+
+	<signdigest>1</signdigest>
+
+	<passphrase>pinkcloud</passphrase>
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0007-005]
+
+<actionbody>
+
+	<keylabel>carrot</keylabel>
+
+	<open>DSA</open>
+
+	<signdigest>2</signdigest>
+
+	<text>digest!</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0007-006]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<deletecount>3</deletecount>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0007-007]
+
+<actionbody>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0007-008]
+
+<actionbody>
+
+	<deletecount>2</deletecount>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0007-009]
+
+<actionbody>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0008-001]
+
+<actionbody>
+
+	<ImportData>encryptPK8dsa4DER.txt</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED* encrypted purple plum</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+	<passphrase>create pinkcloud</passphrase>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0008-002]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<foundkey>*IMPORTED* encrypted purple plum</foundkey>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0008-003]
+
+<actionbody>
+
+	<deletecount>1</deletecount>		
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0009-001]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0RSA</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0009-002]
+
+<actionbody>
+
+	<keylabel>gm0</keylabel>
+
+	<timeout>0</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0009-003]
+
+<actionbody>
+
+	<ExportFile>oom_export_pkcs8rsa_0.001</ExportFile>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0RSA</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<encrypted>0</encrypted>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0009-004]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm0DSA</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0009-005]
+
+<actionbody>
+
+	<ExportFile>oom_export_pkcs8dsa_0.001</ExportFile>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm0DSA</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<encrypted>0</encrypted>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0009-006]
+
+<actionbody>
+
+	<ExportFile>oom_encrypted_export_pkcs8rsa.001</ExportFile>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0RSA</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<encrypted>1</encrypted>
+
+	<passphrase>pinkcloud</passphrase>
+
+	<passphrase>export clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0009-007]
+
+<actionbody>
+
+	<ExportFile>oom_encrypted_export_pkcs8dsa.001</ExportFile>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm0DSA</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<encrypted>1</encrypted>
+
+	<passphrase>pinkcloud</passphrase>
+
+	<passphrase>export clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0010-001]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create flyingelephant</passphrase>
+
+	<serveroom>0</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0010-002]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<foundkey>banana</foundkey>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0010-003]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<passphrase>change flyingelephant redfox</passphrase>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0010-004]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>15</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0010-005]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>15</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0010-006]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<passphrase>redfox</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0010-007]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<timeout>15</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0010-008]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0010-009]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+	<serveroom>0</serveroom>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-SERVOOM-0011-003]
+
+<actionbody>
+
+	<seconds>5</seconds>
+
+</actionbody>
+
+
+
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/servoom_useauth.ini	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/servoom_useauth.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -1,693 +1,1360 @@
-[SEC-SERVOOM_USEAUTH-0001-003]
-<actionbody>
-	<mode>manager</mode>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0002-001]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyexportable>IsExportable</keyexportable>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0003-001]
-<actionbody>
-	<listcount>1</listcount>
-	<foundkey>banana</foundkey>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0004-001]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>1</deletecount>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0005-001]
-<actionbody>
-	<listcount>0</listcount>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0005-002]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>bigbanana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyexportable>IsExportable</keyexportable>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<serveroom>0</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0005-003]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<serveroom>0</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0005-004]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>carrot</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0005-005]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>mango</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0005-006]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<open>DH</open>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0005-007]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<n>DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F</n>
-	<g>02</g>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0005-008]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>jackfruit</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0005-009]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>custard apple</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0005-010]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keyusage>NR</keyusage>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>grape</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0005-011]
-<actionbody>
-	<listcount>7</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>
-	<foundkey>jackfruit</foundkey>
-	<foundkey>custard apple</foundkey>
-	<foundkey>grape</foundkey>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0005-012]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-	<listcount>3</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>custard apple</foundkey>
-	<foundkey>grape</foundkey>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0005-013]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<listcount>5</listcount>
-	<foundkey>bigbanana</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>
-	<foundkey>carrot</foundkey>
-	<foundkey>jackfruit</foundkey>
-	<foundkey>grape</foundkey>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0005-014]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<listcount>5</listcount>
-	<foundkey>bigbanana</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>
-	<foundkey>carrot</foundkey>
-	<foundkey>jackfruit</foundkey>
-	<foundkey>grape</foundkey>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0005-015]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>2</deletecount>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0005-016]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>0</listcount>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0005-017]
-<actionbody>
-	<listcount>5</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>jackfruit</foundkey>
-	<foundkey>custard apple</foundkey>
-	<foundkey>grape</foundkey>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0005-018]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<serveroom>0</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0005-019]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>1</listcount>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0005-020]
-<actionbody>
-	<listcount>6</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>banana</foundkey>
-	<foundkey>jackfruit</foundkey>
-	<foundkey>custard apple</foundkey>
-	<foundkey>grape</foundkey>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0006-001]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0006-002]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>Decrypt</open>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0006-003]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<text>Ook!</text>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0006-004]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0006-005]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of thirty-two chars</text>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0006-006]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<signdigest>1</signdigest>
-	<text>digested!</text>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0006-007]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>1</deletecount>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0007-001]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>carrot</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0007-002]
-<actionbody>
-	<keylabel>carrot</keylabel>
-	<open>DSA</open>
-	<text>This is text of 20 .</text>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0007-003]
-<actionbody>
-	<keylabel>carrot</keylabel>
-	<open>DSA</open>
-	<text>This is a text of 21.</text>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0007-004]
-<actionbody>
-	<keylabel>carrot</keylabel>
-	<open>DSA</open>
-	<signdigest>1</signdigest>
-
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0007-005]
-<actionbody>
-	<keylabel>carrot</keylabel>
-	<open>DSA</open>
-	<signdigest>2</signdigest>
-	<text>digest!</text>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0007-006]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-	<deletecount>3</deletecount>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0007-007]
-<actionbody>
-	<listcount>2</listcount>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0007-008]
-<actionbody>
-	<deletecount>2</deletecount>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0007-009]
-<actionbody>
-	<listcount>0</listcount>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0008-001]
-<actionbody>
-	<ImportData>encryptPK8dsa4DER.txt</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED* encrypted purple plum</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-	<serveroom>1</serveroom>
-	<disabledialogcheck>1</disabledialogcheck>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0008-002]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-	<listcount>1</listcount>
-	<foundkey>*IMPORTED* encrypted purple plum</foundkey>
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0008-003]
-<actionbody>
-	<deletecount>1</deletecount>		
-	<serveroom>1</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0009-001]
-<actionbody>
-	<ImportData>pkcs8rsa.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0RSA</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0009-002]
-<actionbody>
-	<ExportFile>oom_export_pkcs8rsa_0.001</ExportFile>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0RSA</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<encrypted>0</encrypted>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0009-003]
-<actionbody>
-	<ImportData>pkcs8dsa.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm0DSA</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0009-004]
-<actionbody>
-	<ExportFile>oom_export_pkcs8dsa_0.001</ExportFile>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm0DSA</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<encrypted>0</encrypted>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0009-005]
-<actionbody>
-	<ExportFile>oom_encrypted_export_pkcs8rsa.001</ExportFile>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0RSA</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<encrypted>1</encrypted>
-
-	<passphrase>export clanger</passphrase>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0009-006]
-<actionbody>
-	<ExportFile>oom_encrypted_export_pkcs8dsa.001</ExportFile>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm0DSA</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<encrypted>1</encrypted>
-
-	<passphrase>export clanger</passphrase>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0010-001]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>cheeku</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keystore>0</keystore>
-	<authexpression>strong</authexpression>
-	<freshness>0</freshness>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0010-002]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>cheeku</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0010-003]
-<actionbody>
-	<authmode>set</authmode>
-	<keylabel>cheeku</keylabel>
-	<authexpression>medium</authexpression>
-	<freshness>21</freshness>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0010-004]
-<actionbody>
-	<authmode>get</authmode>
-	<keylabel>cheeku</keylabel>
-	<expectedexpression>medium</expectedexpression>
-	<expectedfreshness>21</expectedfreshness>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0010-005]
-<actionbody>
-	<ImportData>pkcs8dsa.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>gm0DSA</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<authexpression>strong</authexpression>
-	<freshness>50</freshness>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0010-006]
-<actionbody>
-	<ImportData>export_pkcs8rsa_0_3DES_CBC.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm_export_pkcs8rsa_0_3DES_CBC.001</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<encrypted>0</encrypted>
-	<passphrase>import clanger</passphrase>
-	<authexpression>strong</authexpression>
-	<freshness>50</freshness>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0010-007]
-<actionbody>
-	<deletecount>3</deletecount>
-	<serveroom>0</serveroom>
-</actionbody>
-
-[SEC-SERVOOM_USEAUTH-0011-003]
-<actionbody>
-	<seconds>5</seconds>
-</actionbody>
-
+[SEC-SERVOOM_USEAUTH-0001-003]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0002-001]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyexportable>IsExportable</keyexportable>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0003-001]
+
+<actionbody>
+
+	<foundkey>banana</foundkey>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0004-001]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>1</deletecount>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0005-001]
+
+<actionbody>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0005-002]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>bigbanana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyexportable>IsExportable</keyexportable>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<serveroom>0</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0005-003]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<serveroom>0</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0005-004]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>carrot</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0005-005]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>mango</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0005-006]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<open>DH</open>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0005-007]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<n>DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F</n>
+
+	<g>02</g>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0005-008]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>jackfruit</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0005-009]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>custard apple</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0005-010]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keyusage>NR</keyusage>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>grape</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0005-011]
+
+<actionbody>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>
+
+	<foundkey>jackfruit</foundkey>
+
+	<foundkey>custard apple</foundkey>
+
+	<foundkey>grape</foundkey>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0005-012]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>custard apple</foundkey>
+
+	<foundkey>grape</foundkey>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0005-013]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<foundkey>bigbanana</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>jackfruit</foundkey>
+
+	<foundkey>grape</foundkey>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0005-014]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<foundkey>bigbanana</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>jackfruit</foundkey>
+
+	<foundkey>grape</foundkey>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0005-015]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>2</deletecount>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0005-016]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0005-017]
+
+<actionbody>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>jackfruit</foundkey>
+
+	<foundkey>custard apple</foundkey>
+
+	<foundkey>grape</foundkey>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0005-018]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<serveroom>0</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0005-019]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0005-020]
+
+<actionbody>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>banana</foundkey>
+
+	<foundkey>jackfruit</foundkey>
+
+	<foundkey>custard apple</foundkey>
+
+	<foundkey>grape</foundkey>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0006-001]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0006-002]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>Decrypt</open>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0006-003]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<text>Ook!</text>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0006-004]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0006-005]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of thirty-two chars</text>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0006-006]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>digested!</text>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0006-007]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>1</deletecount>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0007-001]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>carrot</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0007-002]
+
+<actionbody>
+
+	<keylabel>carrot</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0007-003]
+
+<actionbody>
+
+	<keylabel>carrot</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is a text of 21.</text>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0007-004]
+
+<actionbody>
+
+	<keylabel>carrot</keylabel>
+
+	<open>DSA</open>
+
+	<signdigest>1</signdigest>
+
+
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0007-005]
+
+<actionbody>
+
+	<keylabel>carrot</keylabel>
+
+	<open>DSA</open>
+
+	<signdigest>2</signdigest>
+
+	<text>digest!</text>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0007-006]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<deletecount>3</deletecount>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0007-007]
+
+<actionbody>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0007-008]
+
+<actionbody>
+
+	<deletecount>2</deletecount>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0007-009]
+
+<actionbody>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0008-001]
+
+<actionbody>
+
+	<ImportData>encryptPK8dsa4DER.txt</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED* encrypted purple plum</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+	<serveroom>1</serveroom>
+
+	<disabledialogcheck>1</disabledialogcheck>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0008-002]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<foundkey>*IMPORTED* encrypted purple plum</foundkey>
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0008-003]
+
+<actionbody>
+
+	<deletecount>1</deletecount>		
+
+	<serveroom>1</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0009-001]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0RSA</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0009-002]
+
+<actionbody>
+
+	<ExportFile>oom_export_pkcs8rsa_0.001</ExportFile>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0RSA</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<encrypted>0</encrypted>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0009-003]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm0DSA</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0009-004]
+
+<actionbody>
+
+	<ExportFile>oom_export_pkcs8dsa_0.001</ExportFile>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm0DSA</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<encrypted>0</encrypted>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0009-005]
+
+<actionbody>
+
+	<ExportFile>oom_encrypted_export_pkcs8rsa.001</ExportFile>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0RSA</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<encrypted>1</encrypted>
+
+
+
+	<passphrase>export clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0009-006]
+
+<actionbody>
+
+	<ExportFile>oom_encrypted_export_pkcs8dsa.001</ExportFile>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm0DSA</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<encrypted>1</encrypted>
+
+
+
+	<passphrase>export clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0010-001]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>cheeku</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keystore>0</keystore>
+
+	<authexpression>strong</authexpression>
+
+	<freshness>0</freshness>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0010-002]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>cheeku</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0010-003]
+
+<actionbody>
+
+	<authmode>set</authmode>
+
+	<keylabel>cheeku</keylabel>
+
+	<authexpression>medium</authexpression>
+
+	<freshness>21</freshness>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0010-004]
+
+<actionbody>
+
+	<authmode>get</authmode>
+
+	<keylabel>cheeku</keylabel>
+
+	<expectedexpression>medium</expectedexpression>
+
+	<expectedfreshness>21</expectedfreshness>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0010-005]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>gm0DSA</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<authexpression>strong</authexpression>
+
+	<freshness>50</freshness>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0010-006]
+
+<actionbody>
+
+	<ImportData>export_pkcs8rsa_0_3DES_CBC.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm_export_pkcs8rsa_0_3DES_CBC.001</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<encrypted>0</encrypted>
+
+	<passphrase>import clanger</passphrase>
+
+	<authexpression>strong</authexpression>
+
+	<freshness>50</freshness>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0010-007]
+
+<actionbody>
+
+	<deletecount>3</deletecount>
+
+	<serveroom>0</serveroom>
+
+</actionbody>
+
+
+
+[SEC-SERVOOM_USEAUTH-0011-003]
+
+<actionbody>
+
+	<seconds>5</seconds>
+
+</actionbody>
+
+
+
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/testnewkeystore.txt	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/testnewkeystore.txt	Mon Oct 12 10:17:04 2009 +0300
@@ -19,7 +19,6 @@
    	<actionname>List all keys</actionname>
  	<actiontype>listallkeys</actiontype>
    	<actionbody>
-   		<listcount>3</listcount>
    		<foundkey>dhkey</foundkey>
 		<foundkey>rsakey</foundkey>
 		<foundkey>dsakey</foundkey>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/thwkeystore.txt	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,341 @@
+////////////////////////////////////////////////////////////////////////////////////
+//	Testing hardware token implementation
+////////////////////////////////////////////////////////////////////////////////////
+
+<action>
+	<actionname>Delete keystore data file</actionname>
+	<actiontype>deletekeystoredata</actiontype>
+	<actionbody>
+	</actionbody>
+	<actionresult>
+		<return>KErrNone</return>
+	</actionresult>
+</action>
+
+<action>
+	<actionname>Retrieving label of a particular key store</actionname>
+	<actiontype>init</actiontype>
+	<actionbody>
+		<mode>manager</mode>
+		<CheckKeyStoreLabel>1</CheckKeyStoreLabel>
+		<keystoreindex>3</keystoreindex>
+		<keystorelabel>Hardware plugin implementation</keystorelabel>
+	</actionbody>
+	<actionresult>
+		<return>KErrNone</return>
+	</actionresult>
+</action>
+
+<action>
+	<actionname>delete keys</actionname>
+	<actiontype>deletekeys</actiontype>
+	<actionbody></actionbody>
+	<actionresult>
+		<return>KErrNone</return>
+	</actionresult>
+</action>
+
+<action>
+	<actionname>List Keys</actionname>
+	<actiontype>listallkeys</actiontype>
+	<actionbody>
+		<listcount>2</listcount>
+		<foundkey>ecckey</foundkey>
+		<foundkey>ecckey2</foundkey>
+	</actionbody>
+	<actionresult>
+		<return>KErrNone</return>
+	</actionresult>
+</action>
+
+<action>
+	<actionname>Open a key for signing</actionname>
+	<actiontype>open</actiontype>
+	<actionbody>
+		<hwtype>1</hwtype>
+		<operationtype>sign</operationtype>
+		<keylabel>ecckey</keylabel>
+		<open>ECC</open>
+	</actionbody>
+	<actionresult>
+		<return>KErrNone</return>
+	</actionresult>
+</action>
+
+<action>
+	<actionname>Open a key for decryption</actionname>
+	<actiontype>open</actiontype>
+	<actionbody>
+		<hwtype>1</hwtype>
+		<operationtype>decrypt</operationtype>
+		<keylabel>ecckey</keylabel>
+		<open>ECC</open>
+	</actionbody>
+	<actionresult>
+		<return>KErrNone</return>
+	</actionresult>
+</action>
+
+<action>
+	<actionname>Open a key for signing</actionname>
+	<actiontype>sign</actiontype>
+	<actionbody>
+		<hwtype>0</hwtype>
+		<operationtype>sign</operationtype>
+		<keylabel>ecckey</keylabel>
+		<open>ECC</open>
+		<keystorelabel>Hardware plugin implementation</keystorelabel>
+	<text>sample text</text>
+	</actionbody>
+	<actionresult>
+		<return>KErrNone</return>
+	</actionresult>
+</action>
+
+<action>
+	<actionname>Open a key for decryption</actionname>
+	<actiontype>decrypt</actiontype>
+	<actionbody>
+		<hwtype>0</hwtype>
+		<operationtype>decrypt</operationtype>
+		<keylabel>ecckey2</keylabel>
+		<open>ECC</open>
+		<keystorelabel>Hardware plugin implementation</keystorelabel>
+	<text>sample text</text>
+	</actionbody>
+	<actionresult>
+		<return>KErrNone</return>
+	</actionresult>
+</action>
+
+<action>
+	<actionname>Open a key for signing</actionname>
+	<actiontype>sign</actiontype>
+	<actionbody>
+		<hwtype>1</hwtype>
+		<operationtype>sign</operationtype>
+		<keylabel>ecckey</keylabel>
+		<open>ECC</open>
+		<keystorelabel>Hardware plugin implementation</keystorelabel>
+	<text>sample text</text>
+	</actionbody>
+	<actionresult>
+		<return>KErrNone</return>
+	</actionresult>
+</action>
+
+<action>
+	<actionname>Open a key for decryption</actionname>
+	<actiontype>decrypt</actiontype>
+	<actionbody>
+		<hwtype>1</hwtype>
+		<operationtype>decrypt</operationtype>
+		<keylabel>ecckey2</keylabel>
+		<open>ECC</open>
+		<keystorelabel>Hardware plugin implementation</keystorelabel>
+	<text>sample text</text>
+	</actionbody>
+	<actionresult>
+		<return>KErrNone</return>
+	</actionresult>
+</action>
+
+<action>
+	<actionname>List Keys</actionname>
+	<actiontype>listkeys</actiontype>
+	<actionbody>
+		<foundkey>ecckey3</foundkey>
+		<listingstatus>fail</listingstatus>
+	</actionbody>
+	<actionresult>
+		<return>KErrNone</return>
+	</actionresult>
+</action>
+
+<action>
+	<actionname>Add a key</actionname>
+	<actiontype>addkey</actiontype>
+	<actionbody>
+		<keyusage>allusagesbutNR</keyusage>
+		<keysize>512</keysize>
+		<keylabel>banana</keylabel>
+		<keyalgorithm>RSA</keyalgorithm>
+		<keyaccesstype>Extractable</keyaccesstype>
+		<keystore>0</keystore>
+		<usekeystore>Hardware plugin implementation</usekeystore>
+	</actionbody>
+	<actionresult>
+		<return>KErrNotSupported</return>
+	</actionresult>
+</action>
+
+<action>
+	<actionname>Get key information</actionname>
+	<actiontype>getkeyinfo</actiontype>
+	<actionbody>
+		<keylabel>ecckey</keylabel>
+	</actionbody>
+	<actionresult>
+		<return>KErrNotSupported</return>
+	</actionresult>
+</action>
+
+<action>
+	<actionname>Open a key as a RSA signer</actionname>
+	<actiontype>open</actiontype>
+	<actionbody>
+		<keylabel>ecckey</keylabel>
+		<open>RSA</open>
+	</actionbody>
+	<actionresult>
+		<return>KErrNotSupported</return>
+	</actionresult>
+</action>
+
+<action>
+	<actionname>Open a key as a DSA signer</actionname>
+	<actiontype>open</actiontype>
+	<actionbody>
+		<keylabel>ecckey</keylabel>
+		<open>DSA</open>
+	</actionbody>
+	<actionresult>
+		<return>KErrNotSupported</return>
+	</actionresult>
+</action>
+
+<action>
+	<actionname>Open key for decrypt</actionname>
+	<actiontype>open</actiontype>
+	<actionbody>
+		<keylabel>ecckey</keylabel>
+		<open>Decrypt</open>
+	</actionbody>
+	<actionresult>
+		<return>KErrNotSupported</return>
+	</actionresult>
+</action>
+
+<action>
+<actionname>Import a key</actionname>
+	<actiontype>importkey</actiontype>
+	<actionbody>
+		<ImportData>pkcs8rsa.001</ImportData>
+		<keyusage>allusagesbutNR</keyusage>
+		<keylabel>ImportHardwareKey</keylabel>
+		<keyaccesstype>NeverExtractable</keyaccesstype>
+		<usekeystore>Hardware plugin implementation</usekeystore>
+	</actionbody>
+	<actionresult>
+		<return>KErrNotSupported</return>
+	</actionresult>
+</action>
+
+<action>
+<actionname>Import a PKCS5 encrypted RSA key</actionname>
+	<actiontype>importkey</actiontype>
+	<actionbody>
+		<ImportData>encryptPK8rsaDER.txt</ImportData>
+		<keyusage>allusagesbutNR</keyusage>
+		<keylabel>ImportEncryptedHardwareKey</keylabel>
+		<keyaccesstype>NeverExtractable</keyaccesstype>
+		<usekeystore>Hardware plugin implementation</usekeystore>
+	</actionbody>
+	<actionresult>
+		<return>KErrNotSupported</return>
+	</actionresult>
+</action>
+
+<action>
+<actionname>Export a key</actionname>
+	<actiontype>exportkey</actiontype>
+	<actionbody>
+		<ExportFile>export_hardware_key</ExportFile>
+		<keyusage>Derive</keyusage>
+		<keylabel>ecckey</keylabel>
+		<keyalgorithm>ECC</keyalgorithm>
+		<encrypted>0</encrypted>
+	</actionbody>
+	<actionresult>
+		<return>KErrNotSupported</return>
+	</actionresult>
+</action>
+
+<action>
+<actionname>Export a key in encrypted format </actionname>
+	<actiontype>exportkey</actiontype>
+	<actionbody>
+		<ExportFile>export_encrypted_hardware_key</ExportFile>
+		<keyusage>Derive</keyusage>
+		<keylabel>ecckey</keylabel>
+		<keyalgorithm>ECC</keyalgorithm>
+		<encrypted>1</encrypted>
+	</actionbody>
+	<actionresult>
+		<return>KErrNotSupported</return>
+	</actionresult>
+</action>
+
+<action>
+	<actionname>Set use policy</actionname>
+	<actiontype>setusepolicy</actiontype>
+	<actionbody>
+		<keylabel>ecckey</keylabel>
+		<policy>
+			<secureid>0x101FFFFF</secureid>
+			<capability>DRM</capability>
+			<capability>ReadUserData</capability>
+		</policy>
+	</actionbody>
+	<actionresult>
+		<return>KErrNotSupported</return>
+	</actionresult>
+</action>
+
+<action>
+	<actionname>Set use policy</actionname>
+	<actiontype>setmanagementpolicy</actiontype>
+	<actionbody>
+		<keylabel>ecckey</keylabel>
+		<policy>
+			<secureid>0x101FFFFF</secureid>
+			<capability>DRM</capability>
+			<capability>ReadUserData</capability>
+		</policy>
+	</actionbody>
+	<actionresult>
+		<return>KErrNotSupported</return>
+	</actionresult>
+</action>
+
+<action>
+	<actionname>Delete a key</actionname>
+	<actiontype>deletekeys</actiontype>
+	<actionbody>
+		<keyalgorithm>ECC</keyalgorithm>
+		<keylabel>ecckey</keylabel>
+	</actionbody>
+	<actionresult>
+		<return>KErrNotSupported</return>
+	</actionresult>
+</action>
+
+<action>
+	<actionname>Closing key store</actionname>
+	<actiontype>delete</actiontype>
+	<actionbody></actionbody>
+	<actionresult>
+		<return>KErrNone</return>
+	</actionresult>
+</action>
+
+<action>
+	<actionname>Sleep 5 seconds</actionname>
+	<actiontype>sleep</actiontype>
+	<actionbody>
+          <seconds>5</seconds>
+        </actionbody>
+	<actionresult>
+		<return>KErrNone</return>
+	</actionresult>
+</action>
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore.script	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore.script	Mon Oct 12 10:17:04 2009 +0300
@@ -40,7 +40,7 @@
 
 //!                           5) Closing key store
 
-//!                           6) 1.0.0.0.1,Opening key store 1 in manager mode
+//!                           6) 1.0.0.0.1,Opening key store 1 in manager mode - deprecated
 
 //!                           7) 1.0.0.0.2,Opening key store 2 in manager mode
 
@@ -94,8 +94,6 @@
 
 RUN_TEST_STEP                 -1    CTestHandler        delete              
 
-RUN_TEST_STEP                 -1    CTestHandler        init                   tkeystore2.ini   SEC-FILETOKENS-TKEYSTORE-0001-006
-
 RUN_TEST_STEP                 -1    CTestHandler        init                   tkeystore2.ini   SEC-FILETOKENS-TKEYSTORE-0001-007
 
 RUN_TEST_STEP                 -1    CTestHandler        deletekeys          
@@ -500,7 +498,7 @@
 
 //!                           115) 1.2.0.68 List everything (TEST ID: GT0140-KEY001)
 
-//!                           116) 1.2.0.69.0 Closing key store 1
+//!                           116) 1.2.0.69.0 Closing key store 1 - deprecated
 
 //!                           117) 1.2.0.69.1 Closing key store 2
 
@@ -740,8 +738,6 @@
 
 RUN_TEST_STEP                 -1    CTestHandler        delete              
 
-RUN_TEST_STEP                 -1    CTestHandler        delete              
-
 RUN_TEST_STEP                 -1    CTestHandler        init                   tkeystore2.ini   SEC-FILETOKENS-TKEYSTORE-0004-118
 
 RUN_TEST_STEP                 -1    CTestHandler        delete              
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore2.ini	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore2.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -1,3149 +1,6252 @@
-[SEC-FILETOKENS-TKEYSTORE-0001-002]
-<actionbody>
-	<mode>manager</mode>
-	<CheckKeyStoreLabel>1</CheckKeyStoreLabel>
-	<keystoreindex>2</keystoreindex>
-	<keystorelabel>Dummy KeyStore Manager1</keystorelabel>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0001-004]
-<actionbody>
-	<mode>manager</mode>
-	<CheckKeyStoreLabel>1</CheckKeyStoreLabel>
-	<keystoreindex>4</keystoreindex>
-	<keystorelabel>Dummy KeyStore Manager1</keystorelabel>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0001-006]
-<actionbody>
-	<mode>manager</mode>
-	<CheckStoreCount>1</CheckStoreCount>
-	<KeyStoreCount>4</KeyStoreCount>
-	<KeyStoreManagerCount>3</KeyStoreManagerCount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0001-007]
-<actionbody>
-	<mode>manager</mode>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0001-009]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>cheeku</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keystore>1</keystore>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0001-010]
-<actionbody>
-	<listcount>2</listcount>
-	<foundkey>cheeku</foundkey>
-	<foundkey>cheeku</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0001-011]
-<actionbody>
-	<ExportFile>export_DHkey.001</ExportFile>
-	<keyusage>Derive</keyusage>
-	<keylabel>cheeku</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<encrypted>0</encrypted>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0001-012]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keystore>1</keystore>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0001-013]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<keystore>1</keystore>
-	<timeout>0</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0001-014]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0001-015]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0001-016]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0001-017]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>cheeku</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keystore>1</keystore>
-	<passphrase>change neosis maximus</passphrase>
-	<passphrase>change apple maximus</passphrase>
-	<passphrase>change garbage maximus</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0001-018]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>cheeku</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keystore>1</keystore>
-	<passphrase>change neosis maximus</passphrase>
-	<passphrase>change neosis maximus</passphrase>
-	<passphrase>change pinkcloud maximus</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0001-019]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>cheeku</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keystore>1</keystore>
-	<passphrase>change neosis orange</passphrase>
-	<passphrase>change maximus orange</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0001-020]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>cheeku</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keystore>1</keystore>
-	<passphrase>change orange pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0001-021]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<text>Ook!</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0001-022]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0001-023]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of thirty-two chars</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0001-024]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<signdigest>1</signdigest>
-	<text>digested!</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0001-025]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<signdigest>2</signdigest>
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0001-026]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>DSA</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0001-027]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0002-001]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-001]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>mangosteen</keylabel>
-	<keyalgorithm>BAD</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-002]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-003]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-004]
-<actionbody>
-	<keylabel>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</keylabel>
-	<open>RSA</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-005]
-<actionbody>
-	<keylabel>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</keylabel>
-	<open>RSA</open>
-	<text>Ook!</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-006]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>beansprout</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Sensitive</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-007]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>beansprout</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Sensitive</keyaccesstype>
-	<keyaccesstype>AlwaysSensitive</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-008]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>carrot</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-009]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>carrot</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-010]
-<actionbody>
-	<keylabel>carrot</keylabel>
-	<open>DSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-011]
-<actionbody>
-	<keylabel>carrot</keylabel>
-	<open>DSA</open>
-	<text>This is a text of 21.</text>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-012]
-<actionbody>
-	<keylabel>carrot</keylabel>
-	<open>DSA</open>
-	<signdigest>1</signdigest>
-	<passphrase>pinkcloud</passphrase>
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-013]
-<actionbody>
-	<keylabel>carrot</keylabel>
-	<open>DSA</open>
-	<signdigest>2</signdigest>
-	<text>digest!</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-014]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>artichoke</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-015]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>artichoke</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-016]
-<actionbody>
-	<keylabel>artichoke</keylabel>
-	<open>DSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-017]
-<actionbody>
-	<keylabel>artichoke</keylabel>
-	<open>DSA</open>
-	<text>This is a text of 21.</text>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-018]
-<actionbody>
-	<keylabel>artichoke</keylabel>
-	<open>DSA</open>
-	<signdigest>1</signdigest>
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-019]
-<actionbody>
-	<keylabel>artichoke</keylabel>
-	<open>DSA</open>
-	<signdigest>2</signdigest>
-	<passphrase>pinkcloud</passphrase>
-	<text>TheDigest</text>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-020]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>mango</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-021]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>mango</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-022]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0003-023]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<n>DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F</n>
-	<g>02</g>
-	<passphrase>pinkcloud</passphrase>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-001]
-<actionbody>
-	<keyusage>NR</keyusage>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>apple123</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>jackfruit</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-003]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>custard apple</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-004]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keyusage>NR</keyusage>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>grape</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-005]
-<actionbody>
-	<keyusage>NR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pomegranet</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-006]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>511</keysize>
-	<keylabel>shortlength</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-007]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>2049</keysize>
-	<keylabel>pear</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-008]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>2048</keysize>
-	<keylabel>guava</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-009]
-<actionbody>
-	<keylabel>guava</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-010]
-<actionbody>
-	<keylabel>guava</keylabel>
-	<open>RSA</open>
-	<text>This is text of thirty-two chars</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-011]
-<actionbody>
-	<keylabel>guava</keylabel>
-	<open>RSA</open>
-	<signdigest>1</signdigest>
-	<text>predigested</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-012]
-<actionbody>
-	<keylabel>guava</keylabel>
-	<open>RSA</open>
-	<signdigest>2</signdigest>
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-013]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>523</keysize>
-	<keylabel>kiwi</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-014]
-<actionbody>
-	<keylabel>kiwi</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-015]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>523</keysize>
-	<keylabel>kiwi</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-016]
-<actionbody>
-	<listcount>14</listcount>
-	<foundkey>cheeku</foundkey>
-	<foundkey>banana</foundkey>
-	<foundkey>beansprout</foundkey>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>apple123</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>
-	<foundkey>artichoke</foundkey>
-	<foundkey>guava</foundkey>
-	<foundkey>kiwi</foundkey>
-   		<foundkey>jackfruit</foundkey>
-   		<foundkey>custard apple</foundkey>
-   		<foundkey>grape</foundkey>
-   		<foundkey>pomegranet</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-017]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-	<listcount>4</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>artichoke</foundkey>
-   		<foundkey>custard apple</foundkey>
-   		<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-018]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<listcount>10</listcount>
-	<foundkey>banana</foundkey>
-	<foundkey>beansprout</foundkey>
-	<foundkey>carrot</foundkey>
-	<foundkey>artichoke</foundkey>
-	<foundkey>guava</foundkey>
-	<foundkey>apple123</foundkey>
-	<foundkey>kiwi</foundkey>
-   		<foundkey>jackfruit</foundkey>
-   		<foundkey>grape</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-019]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<listcount>10</listcount>
-	<foundkey>banana</foundkey>
-	<foundkey>beansprout</foundkey>
-	<foundkey>artichoke</foundkey>
-	<foundkey>guava</foundkey>
-	<foundkey>apple123</foundkey>
-	<foundkey>kiwi</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>
-   		<foundkey>jackfruit</foundkey>
-   		<foundkey>carrot</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-020]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>6</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-021]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>0</listcount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-022]
-<actionbody>
-	<listcount>8</listcount>
-	<foundkey>cheeku</foundkey>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>artichoke</foundkey>
-   		<foundkey>jackfruit</foundkey>
-   		<foundkey>custard apple</foundkey>
-   		<foundkey>grape</foundkey>
-   		<foundkey>pomegranet</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-023]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-024]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>1</listcount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-025]
-<actionbody>
-	<listcount>9</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>cheeku</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>banana</foundkey>
-	<foundkey>artichoke</foundkey>
-   		<foundkey>jackfruit</foundkey>
-   		<foundkey>custard apple</foundkey>
-   		<foundkey>grape</foundkey>
-   		<foundkey>pomegranet</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-026]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-027]
-<actionbody>
-	<nonexistent>1</nonexistent>
-	<deletecount>0</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-028]
-<actionbody>
-	<nonexistent>1</nonexistent>
-	<deletecount>0</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-029]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>Cabbage</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-030]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>Cabbage</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-031]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>Courgette</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-032]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>Courgette</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-033]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>Cauliflower</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-034]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>Cauliflower</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-035]
-<actionbody>
-	<keylabel>Cauliflower</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-036]
-<actionbody>
-	<keylabel>Cauliflower</keylabel>
-	<open>RSA</open>
-	<text>This is text of thirty-two chars</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-037]
-<actionbody>
-	<keylabel>Cauliflower</keylabel>
-	<open>RSA</open>
-	<signdigest>1</signdigest>
-	<text>hashed cauli</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-038]
-<actionbody>
-	<keylabel>Cauliflower</keylabel>
-	<open>RSA</open>
-	<signdigest>2</signdigest>
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-039]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>Cashew</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-040]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>Cashew</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-041]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>cranberry</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-042]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>cranberry</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-043]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>curly kale</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-044]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>curly kale</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-045]
-<actionbody>
-	<listcount>14</listcount>
-	<foundkey>cheeku</foundkey>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>artichoke</foundkey>
-	<foundkey>Cabbage</foundkey>
-	<foundkey>Courgette</foundkey>
-	<foundkey>Cauliflower</foundkey>
-	<foundkey>Cashew</foundkey>
-	<foundkey>cranberry</foundkey>
-	<foundkey>curly kale</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-046]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>2</listcount>
-	<foundkey>Cabbage</foundkey>
-	<foundkey>Cauliflower</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-047]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-	<listcount>7</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>Courgette</foundkey>
-	<foundkey>Cashew</foundkey>
-	<foundkey>cranberry</foundkey>
-	<foundkey>artichoke</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-048]
-<actionbody>
-	<keylabel>carrot</keylabel>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-049]
-<actionbody>
-	<ImportData>pkcs8rsa.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*banana</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-050]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>*IMPORTED*banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-051]
-<actionbody>
-	<keylabel>*IMPORTED*banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-052]
-<actionbody>
-	<keylabel>*IMPORTED*banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of thirty-two chars</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-053]
-<actionbody>
-	<keylabel>*IMPORTED*banana</keylabel>
-	<open>RSA</open>
-	<signdigest>1</signdigest>
-	<text>digestible</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-054]
-<actionbody>
-	<keylabel>*IMPORTED*banana</keylabel>
-	<open>RSA</open>
-	<signdigest>2</signdigest>
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-055]
-<actionbody>
-	<ImportData>pkcs8rsa1.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*strawberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-056]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>*IMPORTED*strawberry</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-057]
-<actionbody>
-	<ImportData>pkcs8rsa2.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*pumpkin</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-058]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>*IMPORTED*pumpkin</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-059]
-<actionbody>
-	<ImportData>pkcs8rsa3.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*coconut</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-060]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>*IMPORTED*coconut</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-061]
-<actionbody>
-	<keylabel>*IMPORTED*coconut</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-062]
-<actionbody>
-	<keylabel>*IMPORTED*coconut</keylabel>
-	<open>RSA</open>
-	<text>This is text of thirty-two chars</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-063]
-<actionbody>
-	<keylabel>*IMPORTED*coconut</keylabel>
-	<open>RSA</open>
-	<signdigest>1</signdigest>
-	<text>coconuthash</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-064]
-<actionbody>
-	<keylabel>*IMPORTED*coconut</keylabel>
-	<open>RSA</open>
-	<signdigest>2</signdigest>
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-065]
-<actionbody>
-	<ImportData>pkcs8rsa4.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*mango</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-066]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>2048</keysize>
-	<keylabel>*IMPORTED*mango</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-067]
-<actionbody>
-	<keylabel>*IMPORTED*mango</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-068]
-<actionbody>
-	<keylabel>*IMPORTED*mango</keylabel>
-	<open>RSA</open>
-	<text>This is text of thirty-two chars</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-069]
-<actionbody>
-	<keylabel>*IMPORTED*mango</keylabel>
-	<open>RSA</open>
-	<signdigest>1</signdigest>
-	<text>DigestedMango</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-070]
-<actionbody>
-	<keylabel>*IMPORTED*mango</keylabel>
-	<open>RSA</open>
-	<signdigest>2</signdigest>
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-071]
-<actionbody>
-	<ImportData>pkcs8invalidrsa.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*badberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-072]
-<actionbody>
-	<ImportData>pkcs8dsa.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*raspberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-073]
-<actionbody>
-	<ImportData>pkcs8dsa1.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*strawberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-074]
-<actionbody>
-	<ImportData>pkcs8dsa2.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*gooseberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-075]
-<actionbody>
-	<ImportData>pkcs8dsa3.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*cranberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-076]
-<actionbody>
-	<ImportData>pkcs8dsa4.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*Stichbury</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-077]
-<actionbody>
-	<ImportData>pkcs8invaliddsa.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*blackberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-078]
-<actionbody>
-	<listcount>24</listcount>
-	<foundkey>cheeku</foundkey>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>artichoke</foundkey>
-	<foundkey>Cabbage</foundkey>
-	<foundkey>Courgette</foundkey>
-	<foundkey>Cauliflower</foundkey>
-	<foundkey>Cashew</foundkey>
-	<foundkey>cranberry</foundkey>
-	<foundkey>curly kale</foundkey>
-	<foundkey>*IMPORTED*banana</foundkey>
-	<foundkey>*IMPORTED*strawberry</foundkey>
-	<foundkey>*IMPORTED*pumpkin</foundkey>
-	<foundkey>*IMPORTED*coconut</foundkey>
-	<foundkey>*IMPORTED*mango</foundkey>
-	<foundkey>*IMPORTED*DSA*raspberry</foundkey>
-	<foundkey>*IMPORTED*DSA*strawberry</foundkey>
-	<foundkey>*IMPORTED*DSA*gooseberry</foundkey>
-	<foundkey>*IMPORTED*DSA*cranberry</foundkey>
-	<foundkey>*IMPORTED*DSA*Stichbury</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-079]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>7</listcount>
-	<foundkey>Cabbage</foundkey>
-	<foundkey>Cauliflower</foundkey>
-	<foundkey>*IMPORTED*banana</foundkey>
-	<foundkey>*IMPORTED*strawberry</foundkey>
-	<foundkey>*IMPORTED*pumpkin</foundkey>
-	<foundkey>*IMPORTED*coconut</foundkey>
-	<foundkey>*IMPORTED*mango</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-080]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-	<listcount>12</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>Courgette</foundkey>
-	<foundkey>Cashew</foundkey>
-	<foundkey>cranberry</foundkey>
-	<foundkey>artichoke</foundkey>
-	<foundkey>*IMPORTED*DSA*raspberry</foundkey>
-	<foundkey>*IMPORTED*DSA*strawberry</foundkey>
-	<foundkey>*IMPORTED*DSA*gooseberry</foundkey>
-	<foundkey>*IMPORTED*DSA*cranberry</foundkey>
-	<foundkey>*IMPORTED*DSA*Stichbury</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-081]
-<actionbody>
-	<keylabel>The fruit of the tree of life</keylabel>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-082]
-<actionbody>
-	<deletecount>24</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-083]
-<actionbody>
-	<ImportData>pkcs8rsa.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*banana</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-084]
-<actionbody>
-	<ImportData>pkcs8rsa1.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*strawberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-085]
-<actionbody>
-	<ImportData>pkcs8rsa2.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*pumpkin</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-086]
-<actionbody>
-	<ImportData>pkcs8rsa3.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*coconut</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-087]
-<actionbody>
-	<ImportData>pkcs8rsa4.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*mango</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-088]
-<actionbody>
-	<ImportData>pkcs8invalidrsa.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*badberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-089]
-<actionbody>
-	<ImportData>pkcs8dsa.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*raspberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-090]
-<actionbody>
-	<ImportData>pkcs8dsa1.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*strawberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-091]
-<actionbody>
-	<ImportData>pkcs8dsa2.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*gooseberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-092]
-<actionbody>
-	<ImportData>pkcs8dsa3.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*cranberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-093]
-<actionbody>
-	<ImportData>pkcs8dsa4.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*Stichbury</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-094]
-<actionbody>
-	<ImportData>pkcs8invaliddsa.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*blackberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-095]
-<actionbody>
-	<listcount>10</listcount>
-	<foundkey>*IMPORTED*banana</foundkey>
-	<foundkey>*IMPORTED*strawberry</foundkey>
-	<foundkey>*IMPORTED*pumpkin</foundkey>
-	<foundkey>*IMPORTED*coconut</foundkey>
-	<foundkey>*IMPORTED*mango</foundkey>
-	<foundkey>*IMPORTED*DSA*raspberry</foundkey>
-	<foundkey>*IMPORTED*DSA*strawberry</foundkey>
-	<foundkey>*IMPORTED*DSA*gooseberry</foundkey>
-	<foundkey>*IMPORTED*DSA*cranberry</foundkey>
-	<foundkey>*IMPORTED*DSA*Stichbury</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-096]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>5</listcount>
-	<foundkey>*IMPORTED*banana</foundkey>
-	<foundkey>*IMPORTED*strawberry</foundkey>
-	<foundkey>*IMPORTED*pumpkin</foundkey>
-	<foundkey>*IMPORTED*coconut</foundkey>
-	<foundkey>*IMPORTED*mango</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-097]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-	<listcount>5</listcount>
-	<foundkey>*IMPORTED*DSA*raspberry</foundkey>
-	<foundkey>*IMPORTED*DSA*strawberry</foundkey>
-	<foundkey>*IMPORTED*DSA*gooseberry</foundkey>
-	<foundkey>*IMPORTED*DSA*cranberry</foundkey>
-	<foundkey>*IMPORTED*DSA*Stichbury</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-098]
-<actionbody>
-	<ImportData>encryptPK8rsaDER.txt</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED* encrypted raddicio</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-099]
-<actionbody>
-	<ImportData>encryptPK8rsaDER.txt</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED* encrypted fig</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import pinkcloud</passphrase>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-100]
-<actionbody>
-	<ImportData>encryptPK8rsa1DER.txt</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED* encrypted lollo rosso</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-101]
-<actionbody>
-	<ImportData>encryptPK8rsa2DER.txt</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED* encrypted rocket</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-102]
-<actionbody>
-	<ImportData>encryptPK8rsa3DER.txt</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED* encrypted iceberg lettuce</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-103]
-<actionbody>
-	<ImportData>encryptPK8rsa4DER.txt</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED* encrypted watercress</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-104]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>10</listcount>
-	<foundkey>*IMPORTED*banana</foundkey>
-	<foundkey>*IMPORTED*strawberry</foundkey>
-	<foundkey>*IMPORTED*pumpkin</foundkey>
-	<foundkey>*IMPORTED*coconut</foundkey>
-	<foundkey>*IMPORTED*mango</foundkey>
-	<foundkey>*IMPORTED* encrypted raddicio</foundkey>
-	<foundkey>*IMPORTED* encrypted lollo rosso</foundkey>
-	<foundkey>*IMPORTED* encrypted rocket</foundkey>
-	<foundkey>*IMPORTED* encrypted iceberg lettuce</foundkey>
-	<foundkey>*IMPORTED* encrypted watercress</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-105]
-<actionbody>
-	<ImportData>encryptPK8dsaDER.txt</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED* encrypted physalis</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-106]
-<actionbody>
-	<ImportData>encryptPK8dsa1DER.txt</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED* encrypted papaya</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-107]
-<actionbody>
-	<ImportData>encryptPK8dsa2DER.txt</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED* encrypted pomegranate</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-108]
-<actionbody>
-	<ImportData>encryptPK8dsa3DER.txt</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED* encrypted pear</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-109]
-<actionbody>
-	<ImportData>encryptPK8dsa4DER.txt</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED* encrypted purple plum</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-110]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-	<listcount>10</listcount>
-	<foundkey>*IMPORTED*DSA*raspberry</foundkey>
-	<foundkey>*IMPORTED*DSA*strawberry</foundkey>
-	<foundkey>*IMPORTED*DSA*gooseberry</foundkey>
-	<foundkey>*IMPORTED*DSA*cranberry</foundkey>
-	<foundkey>*IMPORTED*DSA*Stichbury</foundkey>
-	<foundkey>*IMPORTED* encrypted physalis</foundkey>
-	<foundkey>*IMPORTED* encrypted papaya</foundkey>
-	<foundkey>*IMPORTED* encrypted pomegranate</foundkey>
-	<foundkey>*IMPORTED* encrypted pear</foundkey>
-	<foundkey>*IMPORTED* encrypted purple plum</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-111]
-<actionbody>
-	<ImportData>testvector1.bin</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED* encrypted evil one</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-112]
-<actionbody>
-	<ImportData>binarygarbage.bin</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED* encrypted evil one</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-113]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>10</listcount>
-	<foundkey>*IMPORTED*banana</foundkey>
-	<foundkey>*IMPORTED*strawberry</foundkey>
-	<foundkey>*IMPORTED*pumpkin</foundkey>
-	<foundkey>*IMPORTED*coconut</foundkey>
-	<foundkey>*IMPORTED*mango</foundkey>
-	<foundkey>*IMPORTED* encrypted raddicio</foundkey>
-	<foundkey>*IMPORTED* encrypted lollo rosso</foundkey>
-	<foundkey>*IMPORTED* encrypted rocket</foundkey>
-	<foundkey>*IMPORTED* encrypted iceberg lettuce</foundkey>
-	<foundkey>*IMPORTED* encrypted watercress</foundkey>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-114]
-<actionbody>
-	<deletecount>20</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-115]
-<actionbody>
-	<listcount>0</listcount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0004-118]
-<actionbody>
-	<mode>user</mode>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0005-001]
-<actionbody>
-	<mode>user</mode>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0005-002]
-<actionbody>
-	<mode>manager</mode>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0006-001]
-<actionbody>
-	<mode>manager</mode>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0006-002]
-<actionbody>
-	<mode>user</mode>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0007-001]
-<actionbody>
-	<mode>manager</mode>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0008-001]
-<actionbody>
-	<keyusage>none</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0008-002]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<timeout>0</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0008-003]
-<actionbody>
-	<keyusage>none</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0008-004]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0008-005]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0008-006]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0008-007]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0009-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0009-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0009-003]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0009-004]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0009-005]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0009-006]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0010-001]
-<actionbody>
-	<keyusage>SignRecover</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0010-002]
-<actionbody>
-	<keyusage>SignRecover</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0010-003]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0010-004]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0010-005]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0010-006]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0011-001]
-<actionbody>
-	<keyusage>Decrypt</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0011-002]
-<actionbody>
-	<keyusage>Decrypt</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0011-003]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0011-004]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0011-005]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0011-006]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0012-001]
-<actionbody>
-	<keyusage>Unwrap</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0012-002]
-<actionbody>
-	<keyusage>Unwrap</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0012-003]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0012-004]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0012-005]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0012-006]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0013-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0013-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0013-003]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0013-004]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0013-005]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0013-006]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0014-001]
-<actionbody>
-	<keyusage>SignRecover</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0014-002]
-<actionbody>
-	<keyusage>SignRecover</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0014-003]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0014-004]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0014-005]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0014-006]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0015-001]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0015-002]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0015-003]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0015-004]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0015-005]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0015-006]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0016-001]
-<actionbody>
-	<keyusage>NR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0016-002]
-<actionbody>
-	<keyusage>NR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0016-003]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0016-004]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0016-005]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0016-006]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0017-001]
-<actionbody>
-	<keyusage>NR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0017-002]
-<actionbody>
-	<keyusage>NR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0017-003]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0017-004]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0017-005]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0017-006]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0018-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0018-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Local</keyaccesstype>
-	<keyaccesstype>NeverExtractable</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0018-003]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0019-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Sensitive</keyaccesstype>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0019-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Local</keyaccesstype>
-	<keyaccesstype>NeverExtractable</keyaccesstype>
-	<keyaccesstype>Sensitive</keyaccesstype>
-	<keyaccesstype>AlwaysSensitive</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0019-003]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0020-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0020-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Local</keyaccesstype>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0020-003]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0021-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Sensitive</keyaccesstype>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0021-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Local</keyaccesstype>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Sensitive</keyaccesstype>
-	<keyaccesstype>AlwaysSensitive</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0021-003]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0022-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>AlwaysSensitive</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0022-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>NeverExtractable</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0022-003]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0023-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0023-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0023-003]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0024-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<passphrase>create pinkcloud</passphrase>
-	<startdate>10/08/1977 12:43:59</startdate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0024-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<native>1</native>
-	<startdate>10/08/1977 12:43:59</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0024-003]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0025-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<passphrase>create pinkcloud</passphrase>
-	<enddate>27/09/2079 23:23:23</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0025-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<native>1</native>
-	<enddate>27/09/2079 23:23:23</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0025-003]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0026-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<passphrase>create pinkcloud</passphrase>
-	<startdate>10/08/1977 12:43:59</startdate>
-	<enddate>27/09/2079 23:23:23</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0026-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<native>1</native>
-	<startdate>10/08/1977 12:43:59</startdate>
-	<enddate>27/09/2079 23:23:23</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0026-003]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0027-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<startdate>27/09/2079 23:23:23</startdate>
-	<enddate>10/08/1977 12:43:59</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0028-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<startdate>27/09/1879 23:23:23</startdate>
-	<enddate>10/08/1977 12:43:59</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-001]
-<actionbody>
-	<hometime>01/01/2000 00:00:00</hometime>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keyusage>Decrypt</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<passphrase>create pinkcloud</passphrase>
-	<enddate>01/01/2001 00:00:00</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-003]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<timeout>0</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-004]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>mango</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-	<enddate>01/01/2001 00:00:00</enddate>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-005]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-006]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<text>Ook!</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-007]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-008]
-<actionbody>
-	<hometime>01/01/2003 00:00:00</hometime>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-009]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-010]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<text>Ook!</text>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-011]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-012]
-<actionbody>
-	<deletecount>2</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-013]
-<actionbody>
-	<ImportData>pkcs8rsa4.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>BIGRSA</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>create pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-014]
-<actionbody>
-	<keylabel>BIGRSA</keylabel>
-	<timeout>0</timeout>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-015]
-<actionbody>
-	<keylabel>BIGRSA</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-016]
-<actionbody>
-	<keylabel>BIGRSA</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-017]
-<actionbody>
-	<keylabel>BIGRSA</keylabel>
-	<open>RSA</open>
-	<text>This is text of thirty-two chars</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-018]
-<actionbody>
-	<keylabel>BIGRSA</keylabel>
-	<open>RSA</open>
-	<signdigest>1</signdigest>
-	<text>digested!</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-019]
-<actionbody>
-	<ImportData>pkcs8dsa4.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>BIGDSA</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-020]
-<actionbody>
-	<keylabel>BIGDSA</keylabel>
-	<open>DSA</open>
-	<text>This is text of 20 .</text>
-	<passphrase>pinkcloud</passphrase>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-021]
-<actionbody>
-	<keylabel>BIGDSA</keylabel>
-	<open>DSA</open>
-	<text>This is a text of 21.</text>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-022]
-<actionbody>
-	<keylabel>BIGDSA</keylabel>
-	<open>DSA</open>
-	<signdigest>1</signdigest>
-	<passphrase>pinkcloud</passphrase>
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-023]
-<actionbody>
-	<deletecount>2</deletecount>
-</actionbody>
-
-[SEC-FILETOKENS-TKEYSTORE-0029-025]
-<actionbody>
-	<seconds>5</seconds>
-</actionbody>
-
+[SEC-FILETOKENS-TKEYSTORE-0001-002]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+	<CheckKeyStoreLabel>1</CheckKeyStoreLabel>
+
+	<keystoreindex>2</keystoreindex>
+
+	<keystorelabel>Dummy KeyStore Manager1</keystorelabel>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0001-004]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+	<CheckKeyStoreLabel>1</CheckKeyStoreLabel>
+
+	<keystoreindex>4</keystoreindex>
+
+	<keystorelabel>Dummy KeyStore Manager1</keystorelabel>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0001-006]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+	<CheckStoreCount>1</CheckStoreCount>
+
+	<KeyStoreCount>4</KeyStoreCount>
+
+	<KeyStoreManagerCount>3</KeyStoreManagerCount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0001-007]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0001-009]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>cheeku</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keystore>0</keystore>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0001-010]
+
+<actionbody>
+
+	<foundkey>cheeku</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0001-011]
+
+<actionbody>
+
+	<ExportFile>export_DHkey.001</ExportFile>
+
+	<keyusage>Derive</keyusage>
+
+	<keylabel>cheeku</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<encrypted>0</encrypted>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0001-012]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keystore>0</keystore>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0001-013]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<keystore>0</keystore>
+
+	<timeout>0</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0001-014]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0001-015]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0001-016]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0001-017]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>cheeku</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keystore>0</keystore>
+
+	<passphrase>change neosis maximus</passphrase>
+
+	<passphrase>change apple maximus</passphrase>
+
+	<passphrase>change garbage maximus</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0001-018]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>cheeku</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keystore>0</keystore>
+
+	<passphrase>change neosis maximus</passphrase>
+
+	<passphrase>change neosis maximus</passphrase>
+
+	<passphrase>change pinkcloud maximus</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0001-019]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>cheeku</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keystore>0</keystore>
+
+	<passphrase>change neosis orange</passphrase>
+
+	<passphrase>change maximus orange</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0001-020]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>cheeku</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keystore>0</keystore>
+
+	<passphrase>change orange pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0001-021]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<text>Ook!</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0001-022]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0001-023]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of thirty-two chars</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0001-024]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>digested!</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0001-025]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>2</signdigest>
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0001-026]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>DSA</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0001-027]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0002-001]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-001]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>mangosteen</keylabel>
+
+	<keyalgorithm>BAD</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-002]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-003]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-004]
+
+<actionbody>
+
+	<keylabel>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</keylabel>
+
+	<open>RSA</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-005]
+
+<actionbody>
+
+	<keylabel>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</keylabel>
+
+	<open>RSA</open>
+
+	<text>Ook!</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-006]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>beansprout</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Sensitive</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-007]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>beansprout</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Sensitive</keyaccesstype>
+
+	<keyaccesstype>AlwaysSensitive</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-008]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>carrot</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-009]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>carrot</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-010]
+
+<actionbody>
+
+	<keylabel>carrot</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-011]
+
+<actionbody>
+
+	<keylabel>carrot</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is a text of 21.</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-012]
+
+<actionbody>
+
+	<keylabel>carrot</keylabel>
+
+	<open>DSA</open>
+
+	<signdigest>1</signdigest>
+
+	<passphrase>pinkcloud</passphrase>
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-013]
+
+<actionbody>
+
+	<keylabel>carrot</keylabel>
+
+	<open>DSA</open>
+
+	<signdigest>2</signdigest>
+
+	<text>digest!</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-014]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>artichoke</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-015]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>artichoke</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-016]
+
+<actionbody>
+
+	<keylabel>artichoke</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-017]
+
+<actionbody>
+
+	<keylabel>artichoke</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is a text of 21.</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-018]
+
+<actionbody>
+
+	<keylabel>artichoke</keylabel>
+
+	<open>DSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-019]
+
+<actionbody>
+
+	<keylabel>artichoke</keylabel>
+
+	<open>DSA</open>
+
+	<signdigest>2</signdigest>
+
+	<passphrase>pinkcloud</passphrase>
+
+	<text>TheDigest</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-020]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>mango</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-021]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>mango</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-022]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0003-023]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<n>DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F</n>
+
+	<g>02</g>
+
+	<passphrase>pinkcloud</passphrase>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-001]
+
+<actionbody>
+
+	<keyusage>NR</keyusage>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>apple123</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>jackfruit</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-003]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>custard apple</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-004]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keyusage>NR</keyusage>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>grape</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-005]
+
+<actionbody>
+
+	<keyusage>NR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pomegranet</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-006]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>511</keysize>
+
+	<keylabel>shortlength</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-007]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>2049</keysize>
+
+	<keylabel>pear</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-008]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>2048</keysize>
+
+	<keylabel>guava</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-009]
+
+<actionbody>
+
+	<keylabel>guava</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-010]
+
+<actionbody>
+
+	<keylabel>guava</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of thirty-two chars</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-011]
+
+<actionbody>
+
+	<keylabel>guava</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>predigested</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-012]
+
+<actionbody>
+
+	<keylabel>guava</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>2</signdigest>
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-013]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>523</keysize>
+
+	<keylabel>kiwi</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-014]
+
+<actionbody>
+
+	<keylabel>kiwi</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-015]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>523</keysize>
+
+	<keylabel>kiwi</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-016]
+
+<actionbody>
+
+	<foundkey>cheeku</foundkey>
+
+	<foundkey>banana</foundkey>
+
+	<foundkey>beansprout</foundkey>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>apple123</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>
+
+	<foundkey>artichoke</foundkey>
+
+	<foundkey>guava</foundkey>
+
+	<foundkey>kiwi</foundkey>
+
+   		<foundkey>jackfruit</foundkey>
+
+   		<foundkey>custard apple</foundkey>
+
+   		<foundkey>grape</foundkey>
+
+   		<foundkey>pomegranet</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-017]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>artichoke</foundkey>
+
+   		<foundkey>custard apple</foundkey>
+
+   		<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-018]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<foundkey>banana</foundkey>
+
+	<foundkey>beansprout</foundkey>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>artichoke</foundkey>
+
+	<foundkey>guava</foundkey>
+
+	<foundkey>apple123</foundkey>
+
+	<foundkey>kiwi</foundkey>
+
+   		<foundkey>jackfruit</foundkey>
+
+   		<foundkey>grape</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-019]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<foundkey>banana</foundkey>
+
+	<foundkey>beansprout</foundkey>
+
+	<foundkey>artichoke</foundkey>
+
+	<foundkey>guava</foundkey>
+
+	<foundkey>apple123</foundkey>
+
+	<foundkey>kiwi</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>
+
+   		<foundkey>jackfruit</foundkey>
+
+   		<foundkey>carrot</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-020]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>6</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-021]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-022]
+
+<actionbody>
+
+	<foundkey>cheeku</foundkey>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>artichoke</foundkey>
+
+   		<foundkey>jackfruit</foundkey>
+
+   		<foundkey>custard apple</foundkey>
+
+   		<foundkey>grape</foundkey>
+
+   		<foundkey>pomegranet</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-023]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-024]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-025]
+
+<actionbody>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>cheeku</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>banana</foundkey>
+
+	<foundkey>artichoke</foundkey>
+
+   		<foundkey>jackfruit</foundkey>
+
+   		<foundkey>custard apple</foundkey>
+
+   		<foundkey>grape</foundkey>
+
+   		<foundkey>pomegranet</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-026]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-027]
+
+<actionbody>
+
+	<nonexistent>1</nonexistent>
+
+	<deletecount>0</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-028]
+
+<actionbody>
+
+	<nonexistent>1</nonexistent>
+
+	<deletecount>0</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-029]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>Cabbage</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-030]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>Cabbage</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-031]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>Courgette</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-032]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>Courgette</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-033]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>Cauliflower</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-034]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>Cauliflower</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-035]
+
+<actionbody>
+
+	<keylabel>Cauliflower</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-036]
+
+<actionbody>
+
+	<keylabel>Cauliflower</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of thirty-two chars</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-037]
+
+<actionbody>
+
+	<keylabel>Cauliflower</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>hashed cauli</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-038]
+
+<actionbody>
+
+	<keylabel>Cauliflower</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>2</signdigest>
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-039]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>Cashew</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-040]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>Cashew</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-041]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>cranberry</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-042]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>cranberry</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-043]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>curly kale</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-044]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>curly kale</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-045]
+
+<actionbody>
+
+	<foundkey>cheeku</foundkey>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>artichoke</foundkey>
+
+	<foundkey>Cabbage</foundkey>
+
+	<foundkey>Courgette</foundkey>
+
+	<foundkey>Cauliflower</foundkey>
+
+	<foundkey>Cashew</foundkey>
+
+	<foundkey>cranberry</foundkey>
+
+	<foundkey>curly kale</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-046]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<foundkey>Cabbage</foundkey>
+
+	<foundkey>Cauliflower</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-047]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>Courgette</foundkey>
+
+	<foundkey>Cashew</foundkey>
+
+	<foundkey>cranberry</foundkey>
+
+	<foundkey>artichoke</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-048]
+
+<actionbody>
+
+	<keylabel>carrot</keylabel>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-049]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*banana</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-050]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>*IMPORTED*banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-051]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-052]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of thirty-two chars</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-053]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*banana</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>digestible</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-054]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*banana</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>2</signdigest>
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-055]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa1.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*strawberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-056]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>*IMPORTED*strawberry</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-057]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa2.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*pumpkin</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-058]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>*IMPORTED*pumpkin</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-059]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa3.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*coconut</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-060]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>*IMPORTED*coconut</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-061]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*coconut</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-062]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*coconut</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of thirty-two chars</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-063]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*coconut</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>coconuthash</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-064]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*coconut</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>2</signdigest>
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-065]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa4.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*mango</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-066]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>2048</keysize>
+
+	<keylabel>*IMPORTED*mango</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-067]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*mango</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-068]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*mango</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of thirty-two chars</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-069]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*mango</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>DigestedMango</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-070]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*mango</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>2</signdigest>
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-071]
+
+<actionbody>
+
+	<ImportData>pkcs8invalidrsa.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*badberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-072]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*raspberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-073]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa1.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*strawberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-074]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa2.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*gooseberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-075]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa3.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*cranberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-076]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa4.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*Stichbury</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-077]
+
+<actionbody>
+
+	<ImportData>pkcs8invaliddsa.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*blackberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-078]
+
+<actionbody>
+
+	<foundkey>cheeku</foundkey>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>artichoke</foundkey>
+
+	<foundkey>Cabbage</foundkey>
+
+	<foundkey>Courgette</foundkey>
+
+	<foundkey>Cauliflower</foundkey>
+
+	<foundkey>Cashew</foundkey>
+
+	<foundkey>cranberry</foundkey>
+
+	<foundkey>curly kale</foundkey>
+
+	<foundkey>*IMPORTED*banana</foundkey>
+
+	<foundkey>*IMPORTED*strawberry</foundkey>
+
+	<foundkey>*IMPORTED*pumpkin</foundkey>
+
+	<foundkey>*IMPORTED*coconut</foundkey>
+
+	<foundkey>*IMPORTED*mango</foundkey>
+
+	<foundkey>*IMPORTED*DSA*raspberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*strawberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*gooseberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*cranberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*Stichbury</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-079]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<foundkey>Cabbage</foundkey>
+
+	<foundkey>Cauliflower</foundkey>
+
+	<foundkey>*IMPORTED*banana</foundkey>
+
+	<foundkey>*IMPORTED*strawberry</foundkey>
+
+	<foundkey>*IMPORTED*pumpkin</foundkey>
+
+	<foundkey>*IMPORTED*coconut</foundkey>
+
+	<foundkey>*IMPORTED*mango</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-080]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>Courgette</foundkey>
+
+	<foundkey>Cashew</foundkey>
+
+	<foundkey>cranberry</foundkey>
+
+	<foundkey>artichoke</foundkey>
+
+	<foundkey>*IMPORTED*DSA*raspberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*strawberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*gooseberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*cranberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*Stichbury</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-081]
+
+<actionbody>
+
+	<keylabel>The fruit of the tree of life</keylabel>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-082]
+
+<actionbody>
+
+	<deletecount>24</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-083]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*banana</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-084]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa1.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*strawberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-085]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa2.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*pumpkin</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-086]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa3.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*coconut</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-087]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa4.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*mango</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-088]
+
+<actionbody>
+
+	<ImportData>pkcs8invalidrsa.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*badberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-089]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*raspberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-090]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa1.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*strawberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-091]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa2.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*gooseberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-092]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa3.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*cranberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-093]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa4.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*Stichbury</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-094]
+
+<actionbody>
+
+	<ImportData>pkcs8invaliddsa.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*blackberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-095]
+
+<actionbody>
+
+	<foundkey>*IMPORTED*banana</foundkey>
+
+	<foundkey>*IMPORTED*strawberry</foundkey>
+
+	<foundkey>*IMPORTED*pumpkin</foundkey>
+
+	<foundkey>*IMPORTED*coconut</foundkey>
+
+	<foundkey>*IMPORTED*mango</foundkey>
+
+	<foundkey>*IMPORTED*DSA*raspberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*strawberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*gooseberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*cranberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*Stichbury</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-096]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<foundkey>*IMPORTED*banana</foundkey>
+
+	<foundkey>*IMPORTED*strawberry</foundkey>
+
+	<foundkey>*IMPORTED*pumpkin</foundkey>
+
+	<foundkey>*IMPORTED*coconut</foundkey>
+
+	<foundkey>*IMPORTED*mango</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-097]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<foundkey>*IMPORTED*DSA*raspberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*strawberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*gooseberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*cranberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*Stichbury</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-098]
+
+<actionbody>
+
+	<ImportData>encryptPK8rsaDER.txt</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED* encrypted raddicio</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-099]
+
+<actionbody>
+
+	<ImportData>encryptPK8rsaDER.txt</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED* encrypted fig</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import pinkcloud</passphrase>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-100]
+
+<actionbody>
+
+	<ImportData>encryptPK8rsa1DER.txt</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED* encrypted lollo rosso</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-101]
+
+<actionbody>
+
+	<ImportData>encryptPK8rsa2DER.txt</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED* encrypted rocket</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-102]
+
+<actionbody>
+
+	<ImportData>encryptPK8rsa3DER.txt</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED* encrypted iceberg lettuce</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-103]
+
+<actionbody>
+
+	<ImportData>encryptPK8rsa4DER.txt</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED* encrypted watercress</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-104]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<foundkey>*IMPORTED*banana</foundkey>
+
+	<foundkey>*IMPORTED*strawberry</foundkey>
+
+	<foundkey>*IMPORTED*pumpkin</foundkey>
+
+	<foundkey>*IMPORTED*coconut</foundkey>
+
+	<foundkey>*IMPORTED*mango</foundkey>
+
+	<foundkey>*IMPORTED* encrypted raddicio</foundkey>
+
+	<foundkey>*IMPORTED* encrypted lollo rosso</foundkey>
+
+	<foundkey>*IMPORTED* encrypted rocket</foundkey>
+
+	<foundkey>*IMPORTED* encrypted iceberg lettuce</foundkey>
+
+	<foundkey>*IMPORTED* encrypted watercress</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-105]
+
+<actionbody>
+
+	<ImportData>encryptPK8dsaDER.txt</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED* encrypted physalis</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-106]
+
+<actionbody>
+
+	<ImportData>encryptPK8dsa1DER.txt</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED* encrypted papaya</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-107]
+
+<actionbody>
+
+	<ImportData>encryptPK8dsa2DER.txt</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED* encrypted pomegranate</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-108]
+
+<actionbody>
+
+	<ImportData>encryptPK8dsa3DER.txt</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED* encrypted pear</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-109]
+
+<actionbody>
+
+	<ImportData>encryptPK8dsa4DER.txt</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED* encrypted purple plum</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-110]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<foundkey>*IMPORTED*DSA*raspberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*strawberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*gooseberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*cranberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*Stichbury</foundkey>
+
+	<foundkey>*IMPORTED* encrypted physalis</foundkey>
+
+	<foundkey>*IMPORTED* encrypted papaya</foundkey>
+
+	<foundkey>*IMPORTED* encrypted pomegranate</foundkey>
+
+	<foundkey>*IMPORTED* encrypted pear</foundkey>
+
+	<foundkey>*IMPORTED* encrypted purple plum</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-111]
+
+<actionbody>
+
+	<ImportData>testvector1.bin</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED* encrypted evil one</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-112]
+
+<actionbody>
+
+	<ImportData>binarygarbage.bin</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED* encrypted evil one</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-113]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<foundkey>*IMPORTED*banana</foundkey>
+
+	<foundkey>*IMPORTED*strawberry</foundkey>
+
+	<foundkey>*IMPORTED*pumpkin</foundkey>
+
+	<foundkey>*IMPORTED*coconut</foundkey>
+
+	<foundkey>*IMPORTED*mango</foundkey>
+
+	<foundkey>*IMPORTED* encrypted raddicio</foundkey>
+
+	<foundkey>*IMPORTED* encrypted lollo rosso</foundkey>
+
+	<foundkey>*IMPORTED* encrypted rocket</foundkey>
+
+	<foundkey>*IMPORTED* encrypted iceberg lettuce</foundkey>
+
+	<foundkey>*IMPORTED* encrypted watercress</foundkey>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-114]
+
+<actionbody>
+
+	<deletecount>20</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-115]
+
+<actionbody>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0004-118]
+
+<actionbody>
+
+	<mode>user</mode>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0005-001]
+
+<actionbody>
+
+	<mode>user</mode>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0005-002]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0006-001]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0006-002]
+
+<actionbody>
+
+	<mode>user</mode>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0007-001]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0008-001]
+
+<actionbody>
+
+	<keyusage>none</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0008-002]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<timeout>0</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0008-003]
+
+<actionbody>
+
+	<keyusage>none</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0008-004]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0008-005]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0008-006]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0008-007]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0009-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0009-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0009-003]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0009-004]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0009-005]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0009-006]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0010-001]
+
+<actionbody>
+
+	<keyusage>SignRecover</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0010-002]
+
+<actionbody>
+
+	<keyusage>SignRecover</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0010-003]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0010-004]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0010-005]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0010-006]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0011-001]
+
+<actionbody>
+
+	<keyusage>Decrypt</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0011-002]
+
+<actionbody>
+
+	<keyusage>Decrypt</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0011-003]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0011-004]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0011-005]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0011-006]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0012-001]
+
+<actionbody>
+
+	<keyusage>Unwrap</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0012-002]
+
+<actionbody>
+
+	<keyusage>Unwrap</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0012-003]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0012-004]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0012-005]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0012-006]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0013-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0013-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0013-003]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0013-004]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0013-005]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0013-006]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0014-001]
+
+<actionbody>
+
+	<keyusage>SignRecover</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0014-002]
+
+<actionbody>
+
+	<keyusage>SignRecover</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0014-003]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0014-004]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0014-005]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0014-006]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0015-001]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0015-002]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0015-003]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0015-004]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0015-005]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0015-006]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0016-001]
+
+<actionbody>
+
+	<keyusage>NR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0016-002]
+
+<actionbody>
+
+	<keyusage>NR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0016-003]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0016-004]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0016-005]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0016-006]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0017-001]
+
+<actionbody>
+
+	<keyusage>NR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0017-002]
+
+<actionbody>
+
+	<keyusage>NR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0017-003]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0017-004]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0017-005]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0017-006]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0018-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0018-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<keyaccesstype>NeverExtractable</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0018-003]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0019-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Sensitive</keyaccesstype>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0019-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<keyaccesstype>NeverExtractable</keyaccesstype>
+
+	<keyaccesstype>Sensitive</keyaccesstype>
+
+	<keyaccesstype>AlwaysSensitive</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0019-003]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0020-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0020-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0020-003]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0021-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Sensitive</keyaccesstype>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0021-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Sensitive</keyaccesstype>
+
+	<keyaccesstype>AlwaysSensitive</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0021-003]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0022-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>AlwaysSensitive</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0022-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>NeverExtractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0022-003]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0023-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0023-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0023-003]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0024-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<passphrase>create pinkcloud</passphrase>
+
+	<startdate>10/08/1977 12:43:59</startdate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0024-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<native>1</native>
+
+	<startdate>10/08/1977 12:43:59</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0024-003]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0025-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<passphrase>create pinkcloud</passphrase>
+
+	<enddate>27/09/2079 23:23:23</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0025-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<native>1</native>
+
+	<enddate>27/09/2079 23:23:23</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0025-003]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0026-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<passphrase>create pinkcloud</passphrase>
+
+	<startdate>10/08/1977 12:43:59</startdate>
+
+	<enddate>27/09/2079 23:23:23</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0026-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<native>1</native>
+
+	<startdate>10/08/1977 12:43:59</startdate>
+
+	<enddate>27/09/2079 23:23:23</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0026-003]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0027-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<startdate>27/09/2079 23:23:23</startdate>
+
+	<enddate>10/08/1977 12:43:59</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0028-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<startdate>27/09/1879 23:23:23</startdate>
+
+	<enddate>10/08/1977 12:43:59</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-001]
+
+<actionbody>
+
+	<hometime>01/01/2000 00:00:00</hometime>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keyusage>Decrypt</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<passphrase>create pinkcloud</passphrase>
+
+	<enddate>01/01/2001 00:00:00</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-003]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<timeout>0</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-004]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>mango</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+	<enddate>01/01/2001 00:00:00</enddate>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-005]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-006]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<text>Ook!</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-007]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-008]
+
+<actionbody>
+
+	<hometime>01/01/2003 00:00:00</hometime>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-009]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-010]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<text>Ook!</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-011]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-012]
+
+<actionbody>
+
+	<deletecount>2</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-013]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa4.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>BIGRSA</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>create pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-014]
+
+<actionbody>
+
+	<keylabel>BIGRSA</keylabel>
+
+	<timeout>0</timeout>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-015]
+
+<actionbody>
+
+	<keylabel>BIGRSA</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-016]
+
+<actionbody>
+
+	<keylabel>BIGRSA</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-017]
+
+<actionbody>
+
+	<keylabel>BIGRSA</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of thirty-two chars</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-018]
+
+<actionbody>
+
+	<keylabel>BIGRSA</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>digested!</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-019]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa4.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>BIGDSA</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-020]
+
+<actionbody>
+
+	<keylabel>BIGDSA</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is text of 20 .</text>
+
+	<passphrase>pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-021]
+
+<actionbody>
+
+	<keylabel>BIGDSA</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is a text of 21.</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-022]
+
+<actionbody>
+
+	<keylabel>BIGDSA</keylabel>
+
+	<open>DSA</open>
+
+	<signdigest>1</signdigest>
+
+	<passphrase>pinkcloud</passphrase>
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-023]
+
+<actionbody>
+
+	<deletecount>2</deletecount>
+
+</actionbody>
+
+
+
+[SEC-FILETOKENS-TKEYSTORE-0029-025]
+
+<actionbody>
+
+	<seconds>5</seconds>
+
+</actionbody>
+
+
+
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore_authentication1.ini	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore_authentication1.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -1,155 +1,306 @@
-[SEC-TKEYSTORE_AUTHENTICATION1-0001-002]
-<actionbody>
-	<mode>manager</mode>
-	<CheckKeyStoreLabel>1</CheckKeyStoreLabel>
-	<keystoreindex>2</keystoreindex>
-	<keystorelabel>Dummy KeyStore Manager1</keystorelabel>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION1-0001-004]
-<actionbody>
-	<mode>manager</mode>
-	<CheckKeyStoreLabel>1</CheckKeyStoreLabel>
-	<keystoreindex>4</keystoreindex>
-	<keystorelabel>Dummy KeyStore Manager1</keystorelabel>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION1-0001-006]
-<actionbody>
-	<mode>manager</mode>
-	<CheckStoreCount>1</CheckStoreCount>
-	<KeyStoreCount>4</KeyStoreCount>
-	<KeyStoreManagerCount>3</KeyStoreManagerCount>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION1-0001-007]
-<actionbody>
-	<mode>manager</mode>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION1-0001-008]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>cheeku</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keystore>1</keystore>
-	<authexpression>strong</authexpression>
-	<freshness>0</freshness>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION1-0001-009]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>cheeku</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION1-0001-010]
-<actionbody>
-	<authmode>set</authmode>
-	<keylabel>cheeku</keylabel>
-	<authexpression>medium</authexpression>
-	<freshness>21</freshness>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION1-0001-011]
-<actionbody>
-	<authmode>get</authmode>
-	<keylabel>cheeku</keylabel>
-	<expectedexpression>medium</expectedexpression>
-	<expectedfreshness>21</expectedfreshness>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION1-0001-012]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>cheeku</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION1-0001-013]
-<actionbody>
-	<listcount>2</listcount>
-	<foundkey>cheeku</foundkey>
-		<foundkey>cheeku</foundkey>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION1-0001-014]
-<actionbody>
-	<ExportFile>export_DHkey.001</ExportFile>
-	<keyusage>Derive</keyusage>
-	<keylabel>cheeku</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<encrypted>0</encrypted>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION1-0001-015]
-<actionbody>
-	<ImportData>pkcs8rsa.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<authexpression>strong</authexpression>
-	<freshness>25</freshness>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION1-0001-016]
-<actionbody>
-	<ExportFile>export_pkcs8rsa_0.001</ExportFile>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<encrypted>0</encrypted>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION1-0001-017]
-<actionbody>
-	<authmode>set</authmode>
-	<keylabel>gm0</keylabel>
-	<authexpression>medium</authexpression>
-	<freshness>0</freshness>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION1-0001-018]
-<actionbody>
-	<ExportFile>export_pkcs8rsa_0.001</ExportFile>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<encrypted>0</encrypted>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION1-0001-019]
-<actionbody>
-	<ImportData>export_pkcs8rsa_0_3DES_CBC.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm_export_pkcs8rsa_0_3DES_CBC.001</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<encrypted>1</encrypted>
-	<passphrase>import clanger</passphrase>
-	<authexpression>strong</authexpression>
-	<freshness>50</freshness>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION1-0001-020]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>2</listcount>
-	<foundkey>gm0</foundkey>
-	<foundkey>gm_export_pkcs8rsa_0_3DES_CBC.001</foundkey>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION1-0001-023]
-<actionbody>
-	<seconds>5</seconds>
-</actionbody>
-
+[SEC-TKEYSTORE_AUTHENTICATION1-0001-002]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+	<CheckKeyStoreLabel>1</CheckKeyStoreLabel>
+
+	<keystoreindex>2</keystoreindex>
+
+	<keystorelabel>Dummy KeyStore Manager1</keystorelabel>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION1-0001-004]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+	<CheckKeyStoreLabel>1</CheckKeyStoreLabel>
+
+	<keystoreindex>4</keystoreindex>
+
+	<keystorelabel>Dummy KeyStore Manager1</keystorelabel>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION1-0001-006]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+	<CheckStoreCount>1</CheckStoreCount>
+
+	<KeyStoreCount>4</KeyStoreCount>
+
+	<KeyStoreManagerCount>3</KeyStoreManagerCount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION1-0001-007]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION1-0001-008]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>cheeku</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keystore>0</keystore>
+
+	<authexpression>strong</authexpression>
+
+	<freshness>0</freshness>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION1-0001-009]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>cheeku</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION1-0001-010]
+
+<actionbody>
+
+	<authmode>set</authmode>
+
+	<keylabel>cheeku</keylabel>
+
+	<authexpression>medium</authexpression>
+
+	<freshness>21</freshness>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION1-0001-011]
+
+<actionbody>
+
+	<authmode>get</authmode>
+
+	<keylabel>cheeku</keylabel>
+
+	<expectedexpression>medium</expectedexpression>
+
+	<expectedfreshness>21</expectedfreshness>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION1-0001-012]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>cheeku</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION1-0001-013]
+
+<actionbody>
+
+	<foundkey>cheeku</foundkey>
+
+		<foundkey>cheeku</foundkey>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION1-0001-014]
+
+<actionbody>
+
+	<ExportFile>export_DHkey.001</ExportFile>
+
+	<keyusage>Derive</keyusage>
+
+	<keylabel>cheeku</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<encrypted>0</encrypted>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION1-0001-015]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<authexpression>strong</authexpression>
+
+	<freshness>25</freshness>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION1-0001-016]
+
+<actionbody>
+
+	<ExportFile>export_pkcs8rsa_0.001</ExportFile>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<encrypted>0</encrypted>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION1-0001-017]
+
+<actionbody>
+
+	<authmode>set</authmode>
+
+	<keylabel>gm0</keylabel>
+
+	<authexpression>medium</authexpression>
+
+	<freshness>0</freshness>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION1-0001-018]
+
+<actionbody>
+
+	<ExportFile>export_pkcs8rsa_0.001</ExportFile>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<encrypted>0</encrypted>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION1-0001-019]
+
+<actionbody>
+
+	<ImportData>export_pkcs8rsa_0_3DES_CBC.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm_export_pkcs8rsa_0_3DES_CBC.001</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<encrypted>1</encrypted>
+
+	<passphrase>import clanger</passphrase>
+
+	<authexpression>strong</authexpression>
+
+	<freshness>50</freshness>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION1-0001-020]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<foundkey>gm0</foundkey>
+
+	<foundkey>gm_export_pkcs8rsa_0_3DES_CBC.001</foundkey>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION1-0001-023]
+
+<actionbody>
+
+	<seconds>5</seconds>
+
+</actionbody>
+
+
+
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore_authentication1.script	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore_authentication1.script	Mon Oct 12 10:17:04 2009 +0300
@@ -30,7 +30,7 @@
 
 //!                           5) Closing key store
 
-//!                           6) 1.0.0.0.1,Opening key store 1 in manager mode
+//!                           6) 1.0.0.0.1,Opening key store 1 in manager mode - deprecated
 
 //!                           7) 1.0.0.0.2,Opening key store 2 in manager mode
 
@@ -60,7 +60,7 @@
 
 //!                           20) 1.1.0.24 List RSA keys (TEST ID: GT0140-KEY001)
 
-//!                           21) 1.2.0.69.0 Closing key store 1
+//!                           21) 1.2.0.69.0 Closing key store 1 - deprecated
 
 //!                           22) 1.2.0.69.1 Closing key store 2
 
@@ -78,8 +78,6 @@
 
 RUN_TEST_STEP                 -1    CTestHandler        delete              
 
-RUN_TEST_STEP                 -1    CTestHandler        init                   tkeystore_authentication1.ini   SEC-TKEYSTORE_AUTHENTICATION1-0001-006
-
 RUN_TEST_STEP                 -1    CTestHandler        init                   tkeystore_authentication1.ini   SEC-TKEYSTORE_AUTHENTICATION1-0001-007
 
 RUN_TEST_STEP                 -1    CTestHandler        addkey                 tkeystore_authentication1.ini   SEC-TKEYSTORE_AUTHENTICATION1-0001-008
@@ -110,8 +108,6 @@
 
 RUN_TEST_STEP                 -1    CTestHandler        delete              
 
-RUN_TEST_STEP                 -1    CTestHandler        delete              
-
 RUN_TEST_STEP                 -1    CTestHandler        sleep                  tkeystore_authentication1.ini   SEC-TKEYSTORE_AUTHENTICATION1-0001-023
 
 RUN_TEST_STEP                 -1    CTestHandler        checkserverheaperror
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore_authentication2.ini	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore_authentication2.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -1,266 +1,530 @@
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-002]
-<actionbody>
-	<mode>manager</mode>
-	<CheckKeyStoreLabel>1</CheckKeyStoreLabel>
-	<keystoreindex>2</keystoreindex>
-	<keystorelabel>Dummy KeyStore Manager1</keystorelabel>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-004]
-<actionbody>
-	<mode>manager</mode>
-	<CheckKeyStoreLabel>1</CheckKeyStoreLabel>
-	<keystoreindex>4</keystoreindex>
-	<keystorelabel>Dummy KeyStore Manager1</keystorelabel>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-006]
-<actionbody>
-	<mode>manager</mode>
-	<CheckStoreCount>1</CheckStoreCount>
-	<KeyStoreCount>4</KeyStoreCount>
-	<KeyStoreManagerCount>3</KeyStoreManagerCount>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-007]
-<actionbody>
-	<mode>manager</mode>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-008]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>cheeku</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keystore>0</keystore>
-	<authexpression>strong</authexpression>
-	<freshness>0</freshness>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-009]
-<actionbody>
-	<authmode>set</authmode>
-	<keylabel>cheeku</keylabel>
-	<authexpression>strong</authexpression>
-	<negativefreshness>1</negativefreshness>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-010]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>cheeku</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-011]
-<actionbody>
-	<ImportData>pkcs8rsa.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>user2Key</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-012]
-<actionbody>
-	<listcount>4</listcount>
-		<foundkey>cheeku</foundkey>
-	<foundkey>user2Key</foundkey>
-		<foundkey>cheeku</foundkey>
-	<foundkey>user2Key</foundkey>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-013]
-<actionbody>
-	<ExportFile>export_pkcs8rsa_0.001</ExportFile>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<encrypted>0</encrypted>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-014]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-015]
-<actionbody>
-	<keylabel>*IMPORTED* encrypted raddicio</keylabel>
-	<deletecount>0</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-016]
-<actionbody>
-	<authmode>set</authmode>
-	<keylabel>*IMPORTED* encrypted raddicio</keylabel>
-	<authexpression>medium</authexpression>
-	<freshness>21</freshness>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-017]
-<actionbody>
-	<authmode>get</authmode>
-	<keylabel>*IMPORTED* encrypted raddicio</keylabel>
-	<expectedexpression>medium</expectedexpression>
-	<expectedfreshness>21</expectedfreshness>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-018]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>negativefreshness</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keystore>0</keystore>
-	<authexpression>strong</authexpression>
-	<negativefreshness>1</negativefreshness>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-019]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>negativefreshness</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keystore>0</keystore>
-	<authexpression>strong</authexpression>
-	<freshness>2147483648</freshness>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-020]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>invalidaliasvalue</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keystore>0</keystore>
-	<authexpression>invalid</authexpression>
-	<freshness>10</freshness>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-021]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>verybigexpression</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keystore>0</keystore>
-	<authexpression>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</authexpression>
-	<freshness>10</freshness>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-022]
-<actionbody>
-	<ImportData>pkcs8rsa.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<authexpression>strong</authexpression>
-	<negativefreshness>1</negativefreshness>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-023]
-<actionbody>
-	<ImportData>pkcs8rsa.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm0</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<authexpression>strong</authexpression>
-	<freshness>2147483648</freshness>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-024]
-<actionbody>
-	<ImportData>export_pkcs8rsa_0_3DES_CBC.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm_export_pkcs8rsa_0_3DES_CBC.001</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<encrypted>1</encrypted>
-	<passphrase>import clanger</passphrase>
-	<disabledialogcheck>1</disabledialogcheck>	
-	<authexpression>strong</authexpression>
-	<negativefreshness>1</negativefreshness>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-025]
-<actionbody>
-	<ImportData>export_pkcs8rsa_0_3DES_CBC.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>gm_export_pkcs8rsa_0_3DES_CBC.001</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<encrypted>1</encrypted>
-	<passphrase>import clanger</passphrase>
-	<disabledialogcheck>1</disabledialogcheck>
-	<authexpression>strong</authexpression>
-	<freshness>2147483648</freshness>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-026]
-<actionbody>
-	<authmode>set</authmode>
-	<keylabel>cheeku</keylabel>
-	<authexpression>strong</authexpression>
-	<negativefreshness>1</negativefreshness>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-027]
-<actionbody>
-	<authmode>set</authmode>
-	<keylabel>cheeku</keylabel>
-	<authexpression>strong</authexpression>
-	<freshness>2147483648</freshness>
-</actionbody>
-
-[SEC-TKEYSTORE_AUTHENTICATION2-0001-030]
-<actionbody>
-	<seconds>5</seconds>
-</actionbody>
-
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-002]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+	<CheckKeyStoreLabel>1</CheckKeyStoreLabel>
+
+	<keystoreindex>2</keystoreindex>
+
+	<keystorelabel>Dummy KeyStore Manager1</keystorelabel>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-004]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+	<CheckKeyStoreLabel>1</CheckKeyStoreLabel>
+
+	<keystoreindex>4</keystoreindex>
+
+	<keystorelabel>Dummy KeyStore Manager1</keystorelabel>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-006]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+	<CheckStoreCount>1</CheckStoreCount>
+
+	<KeyStoreCount>4</KeyStoreCount>
+
+	<KeyStoreManagerCount>3</KeyStoreManagerCount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-007]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-008]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>cheeku</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keystore>0</keystore>
+
+	<authexpression>strong</authexpression>
+
+	<freshness>0</freshness>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-009]
+
+<actionbody>
+
+	<authmode>set</authmode>
+
+	<keylabel>cheeku</keylabel>
+
+	<authexpression>strong</authexpression>
+
+	<negativefreshness>1</negativefreshness>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-010]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>cheeku</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-011]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>user2Key</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-012]
+
+<actionbody>
+
+		<foundkey>cheeku</foundkey>
+
+	<foundkey>user2Key</foundkey>
+
+		<foundkey>cheeku</foundkey>
+
+	<foundkey>user2Key</foundkey>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-013]
+
+<actionbody>
+
+	<ExportFile>export_pkcs8rsa_0.001</ExportFile>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<encrypted>0</encrypted>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-014]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-015]
+
+<actionbody>
+
+	<keylabel>*IMPORTED* encrypted raddicio</keylabel>
+
+	<deletecount>0</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-016]
+
+<actionbody>
+
+	<authmode>set</authmode>
+
+	<keylabel>*IMPORTED* encrypted raddicio</keylabel>
+
+	<authexpression>medium</authexpression>
+
+	<freshness>21</freshness>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-017]
+
+<actionbody>
+
+	<authmode>get</authmode>
+
+	<keylabel>*IMPORTED* encrypted raddicio</keylabel>
+
+	<expectedexpression>medium</expectedexpression>
+
+	<expectedfreshness>21</expectedfreshness>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-018]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>negativefreshness</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keystore>0</keystore>
+
+	<authexpression>strong</authexpression>
+
+	<negativefreshness>1</negativefreshness>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-019]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>negativefreshness</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keystore>0</keystore>
+
+	<authexpression>strong</authexpression>
+
+	<freshness>2147483648</freshness>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-020]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>invalidaliasvalue</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keystore>0</keystore>
+
+	<authexpression>invalid</authexpression>
+
+	<freshness>10</freshness>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-021]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>verybigexpression</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keystore>0</keystore>
+
+	<authexpression>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</authexpression>
+
+	<freshness>10</freshness>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-022]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<authexpression>strong</authexpression>
+
+	<negativefreshness>1</negativefreshness>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-023]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm0</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<authexpression>strong</authexpression>
+
+	<freshness>2147483648</freshness>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-024]
+
+<actionbody>
+
+	<ImportData>export_pkcs8rsa_0_3DES_CBC.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm_export_pkcs8rsa_0_3DES_CBC.001</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<encrypted>1</encrypted>
+
+	<passphrase>import clanger</passphrase>
+
+	<disabledialogcheck>1</disabledialogcheck>	
+
+	<authexpression>strong</authexpression>
+
+	<negativefreshness>1</negativefreshness>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-025]
+
+<actionbody>
+
+	<ImportData>export_pkcs8rsa_0_3DES_CBC.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>gm_export_pkcs8rsa_0_3DES_CBC.001</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<encrypted>1</encrypted>
+
+	<passphrase>import clanger</passphrase>
+
+	<disabledialogcheck>1</disabledialogcheck>
+
+	<authexpression>strong</authexpression>
+
+	<freshness>2147483648</freshness>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-026]
+
+<actionbody>
+
+	<authmode>set</authmode>
+
+	<keylabel>cheeku</keylabel>
+
+	<authexpression>strong</authexpression>
+
+	<negativefreshness>1</negativefreshness>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-027]
+
+<actionbody>
+
+	<authmode>set</authmode>
+
+	<keylabel>cheeku</keylabel>
+
+	<authexpression>strong</authexpression>
+
+	<freshness>2147483648</freshness>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_AUTHENTICATION2-0001-030]
+
+<actionbody>
+
+	<seconds>5</seconds>
+
+</actionbody>
+
+
+
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore_authentication2.script	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore_authentication2.script	Mon Oct 12 10:17:04 2009 +0300
@@ -30,7 +30,7 @@
 
 //!                           5) Closing key store
 
-//!                           6) 1.0.0.0.1,Opening key store 1 in manager mode
+//!                           6) 1.0.0.0.1,Opening key store 1 in manager mode - deprecated
 
 //!                           7) 1.0.0.0.2,Opening key store 2 in manager mode
 
@@ -74,7 +74,7 @@
 
 //!                           27) Set a new authentication policy for a key with which the user is not registered
 
-//!                           28) 1.2.0.69.0 Closing key store 1
+//!                           28) 1.2.0.69.0 Closing key store 1 - deprecated
 
 //!                           29) 1.2.0.69.0 Closing key store 1
 
@@ -92,8 +92,6 @@
 
 RUN_TEST_STEP                 -1    CTestHandler        delete              
 
-RUN_TEST_STEP                 -1    CTestHandler        init                   tkeystore_authentication2.ini   SEC-TKEYSTORE_AUTHENTICATION2-0001-006
-
 RUN_TEST_STEP                 -1    CTestHandler        init                   tkeystore_authentication2.ini   SEC-TKEYSTORE_AUTHENTICATION2-0001-007
 
 RUN_TEST_STEP                 -1    CTestHandler        addkey                 tkeystore_authentication2.ini   SEC-TKEYSTORE_AUTHENTICATION2-0001-008
@@ -138,8 +136,6 @@
 
 RUN_TEST_STEP                 -1    CTestHandler        delete              
 
-RUN_TEST_STEP                 -1    CTestHandler        delete              
-
 RUN_TEST_STEP                 -1    CTestHandler        sleep                  tkeystore_authentication2.ini   SEC-TKEYSTORE_AUTHENTICATION2-0001-030
 
 RUN_TEST_STEP                 -1    CTestHandler        checkserverheaperror
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore_nouserregistered.ini	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore_nouserregistered.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -9,9 +9,6 @@
 [SEC-TKEYSTORE_NOUSERREGISTERED-0001-004]
 <actionbody>
 	<mode>manager</mode>
-	<CheckStoreCount>1</CheckStoreCount>
-	<KeyStoreCount>4</KeyStoreCount>
-	<KeyStoreManagerCount>3</KeyStoreManagerCount>
 </actionbody>
 
 [SEC-TKEYSTORE_NOUSERREGISTERED-0001-005]
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore_useauth.ini	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore_useauth.ini	Mon Oct 12 10:17:04 2009 +0300
@@ -1,3001 +1,5958 @@
-[SEC-TKEYSTORE_USEAUTH-0001-002]
-<actionbody>
-	<mode>manager</mode>
-	<CheckKeyStoreLabel>1</CheckKeyStoreLabel>
-	<keystoreindex>2</keystoreindex>
-	<keystorelabel>Dummy KeyStore Manager1</keystorelabel>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0001-004]
-<actionbody>
-	<mode>manager</mode>
-	<CheckKeyStoreLabel>1</CheckKeyStoreLabel>
-	<keystoreindex>4</keystoreindex>
-	<keystorelabel>Dummy KeyStore Manager1</keystorelabel>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0001-006]
-<actionbody>
-	<mode>manager</mode>
-	<CheckStoreCount>1</CheckStoreCount>
-	<KeyStoreCount>4</KeyStoreCount>
-	<KeyStoreManagerCount>3</KeyStoreManagerCount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0001-007]
-<actionbody>
-	<mode>manager</mode>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0001-008]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>cheeku</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keystore>1</keystore>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0001-009]
-<actionbody>
-	<listcount>2</listcount>
-	<foundkey>cheeku</foundkey>
-		<foundkey>cheeku</foundkey>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0001-010]
-<actionbody>
-	<ExportFile>export_DHkey.001</ExportFile>
-	<keyusage>Derive</keyusage>
-	<keylabel>cheeku</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<encrypted>0</encrypted>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0001-011]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keystore>1</keystore>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0001-012]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<keystore>1</keystore>
-	<timeout>0</timeout>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0001-013]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0001-014]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0001-015]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0001-016]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>cheeku</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keystore>1</keystore>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0001-017]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<text>Ook!</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0001-018]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0001-019]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of thirty-two chars</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0001-020]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<signdigest>1</signdigest>
-	<text>digested!</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0001-021]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>RSA</open>
-	<signdigest>2</signdigest>
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0001-022]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>DSA</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0001-023]
-<actionbody>
-	<keylabel>banana</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0002-001]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-001]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>mangosteen</keylabel>
-	<keyalgorithm>BAD</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-002]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-003]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-004]
-<actionbody>
-	<keylabel>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</keylabel>
-	<open>RSA</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-005]
-<actionbody>
-	<keylabel>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</keylabel>
-	<open>RSA</open>
-	<text>Ook!</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-006]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>beansprout</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Sensitive</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-007]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>beansprout</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Sensitive</keyaccesstype>
-	<keyaccesstype>AlwaysSensitive</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-008]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>carrot</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-009]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>carrot</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-010]
-<actionbody>
-	<keylabel>carrot</keylabel>
-	<open>DSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-011]
-<actionbody>
-	<keylabel>carrot</keylabel>
-	<open>DSA</open>
-	<text>This is a text of 21.</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-012]
-<actionbody>
-	<keylabel>carrot</keylabel>
-	<open>DSA</open>
-	<signdigest>1</signdigest>
-
-
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-013]
-<actionbody>
-	<keylabel>carrot</keylabel>
-	<open>DSA</open>
-	<signdigest>2</signdigest>
-	<text>digest!</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-014]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>artichoke</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-015]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>artichoke</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-016]
-<actionbody>
-	<keylabel>artichoke</keylabel>
-	<open>DSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-017]
-<actionbody>
-	<keylabel>artichoke</keylabel>
-	<open>DSA</open>
-	<text>This is a text of 21.</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-018]
-<actionbody>
-	<keylabel>artichoke</keylabel>
-	<open>DSA</open>
-	<signdigest>1</signdigest>
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-019]
-<actionbody>
-	<keylabel>artichoke</keylabel>
-	<open>DSA</open>
-	<signdigest>2</signdigest>
-
-
-	<text>TheDigest</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-020]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>mango</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-021]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>mango</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-022]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0003-023]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<n>DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F</n>
-	<g>02</g>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-001]
-<actionbody>
-	<keyusage>NR</keyusage>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>apple123</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>jackfruit</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-003]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>custard apple</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-004]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keyusage>NR</keyusage>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>grape</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-005]
-<actionbody>
-	<keyusage>NR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pomegranet</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-006]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>511</keysize>
-	<keylabel>veryshort</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-007]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>2049</keysize>
-	<keylabel>pear</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-008]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>2048</keysize>
-	<keylabel>guava</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-009]
-<actionbody>
-	<keylabel>guava</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-010]
-<actionbody>
-	<keylabel>guava</keylabel>
-	<open>RSA</open>
-	<text>This is text of thirty-two chars</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-011]
-<actionbody>
-	<keylabel>guava</keylabel>
-	<open>RSA</open>
-	<signdigest>1</signdigest>
-	<text>predigested</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-012]
-<actionbody>
-	<keylabel>guava</keylabel>
-	<open>RSA</open>
-	<signdigest>2</signdigest>
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-013]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>523</keysize>
-	<keylabel>kiwi</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-014]
-<actionbody>
-	<keylabel>kiwi</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-015]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>523</keysize>
-	<keylabel>kiwi</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-016]
-<actionbody>
-	<listcount>14</listcount>
-	<foundkey>cheeku</foundkey>
-	<foundkey>banana</foundkey>
-	<foundkey>beansprout</foundkey>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>apple123</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>
-	<foundkey>artichoke</foundkey>
-	<foundkey>guava</foundkey>
-	<foundkey>kiwi</foundkey>
-   		<foundkey>jackfruit</foundkey>
-   		<foundkey>custard apple</foundkey>
-   		<foundkey>grape</foundkey>
-   		<foundkey>pomegranet</foundkey>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-017]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-	<listcount>4</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>artichoke</foundkey>
-   		<foundkey>custard apple</foundkey>
-   		<foundkey>grape</foundkey>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-018]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<listcount>10</listcount>
-	<foundkey>banana</foundkey>
-	<foundkey>beansprout</foundkey>
-	<foundkey>carrot</foundkey>
-	<foundkey>artichoke</foundkey>
-	<foundkey>guava</foundkey>
-	<foundkey>apple123</foundkey>
-	<foundkey>kiwi</foundkey>
-   		<foundkey>jackfruit</foundkey>
-   		<foundkey>grape</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-019]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<listcount>10</listcount>
-	<foundkey>banana</foundkey>
-	<foundkey>beansprout</foundkey>
-	<foundkey>artichoke</foundkey>
-	<foundkey>guava</foundkey>
-	<foundkey>apple123</foundkey>
-	<foundkey>kiwi</foundkey>
-	<foundkey>
-To be, or not to be: that is the question:
-Whether 'tis nobler in the mind to suffer
-The slings and arrows of outrageous fortune,
-Or to take arms against a sea of troubles,
-And by opposing end them? To die: to sleep;
-No more; and by a sleep to say we end
-The heart-ache and the thousand natural shocks
-That flesh is heir to, 'tis a consummation
-Devoutly to be wish'd. To die, to sleep;
-To sleep: perchance to dream: ay, there's the rub;
-For in that sleep of death what dreams may come
-When we have shuffled off this mortal coil,
-Must give us pause: there's the respect
-That makes calamity of so long life;
-For who would bear the whips and scorns of time,
-The oppressor's wrong, the proud man's contumely,
-The pangs of despised love, the law's delay,
-The insolence of office and the spurns
-That patient merit of the unworthy takes,
-When he himself might his quietus make
-With a bare bodkin? Who would fardels bear,
-To grunt and sweat under a weary life,
-But that the dread of something after death,
-The undiscover'd country from whose bourn
-No traveller returns, puzzles the will
-And makes us rather bear those ills we have
-Than fly to others that we know not of?
-Thus conscience does make cowards of us all;
-And thus the native hue of resolution
-Is sicklied o'er with the pale cast of thought,
-And enterprises of great pith and moment
-With this regard their currents turn awry,
-And lose the name of action.--Soft you now!
-The fair Ophelia! Nymph, in thy orisons
-Be all my sins remember'd. 
-	</foundkey>
-   		<foundkey>jackfruit</foundkey>
-   		<foundkey>carrot</foundkey>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-020]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>6</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-021]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>0</listcount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-022]
-<actionbody>
-	<listcount>8</listcount>
-	<foundkey>cheeku</foundkey>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>artichoke</foundkey>
-   		<foundkey>jackfruit</foundkey>
-   		<foundkey>custard apple</foundkey>
-   		<foundkey>grape</foundkey>
-   		<foundkey>pomegranet</foundkey>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-023]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-024]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>1</listcount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-025]
-<actionbody>
-	<listcount>9</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>cheeku</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>banana</foundkey>
-	<foundkey>artichoke</foundkey>
-   		<foundkey>jackfruit</foundkey>
-   		<foundkey>custard apple</foundkey>
-   		<foundkey>grape</foundkey>
-   		<foundkey>pomegranet</foundkey>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-026]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-027]
-<actionbody>
-	<nonexistent>1</nonexistent>
-	<deletecount>0</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-028]
-<actionbody>
-	<nonexistent>1</nonexistent>
-	<deletecount>0</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-029]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>Cabbage</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-030]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>Cabbage</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-031]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>Courgette</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-032]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>Courgette</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-033]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>Cauliflower</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-034]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>Cauliflower</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-035]
-<actionbody>
-	<keylabel>Cauliflower</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-036]
-<actionbody>
-	<keylabel>Cauliflower</keylabel>
-	<open>RSA</open>
-	<text>This is text of thirty-two chars</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-037]
-<actionbody>
-	<keylabel>Cauliflower</keylabel>
-	<open>RSA</open>
-	<signdigest>1</signdigest>
-	<text>hashed cauli</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-038]
-<actionbody>
-	<keylabel>Cauliflower</keylabel>
-	<open>RSA</open>
-	<signdigest>2</signdigest>
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-039]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>Cashew</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-040]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>Cashew</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-041]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>cranberry</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-042]
-<actionbody>
-	<keyusage>DSAUsage</keyusage>
-	<keysize>512</keysize>
-	<keylabel>cranberry</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-043]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>curly kale</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-044]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>curly kale</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-045]
-<actionbody>
-	<listcount>14</listcount>
-	<foundkey>cheeku</foundkey>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>artichoke</foundkey>
-	<foundkey>Cabbage</foundkey>
-	<foundkey>Courgette</foundkey>
-	<foundkey>Cauliflower</foundkey>
-	<foundkey>Cashew</foundkey>
-	<foundkey>cranberry</foundkey>
-	<foundkey>curly kale</foundkey>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-046]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>2</listcount>
-	<foundkey>Cabbage</foundkey>
-	<foundkey>Cauliflower</foundkey>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-047]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-	<listcount>7</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>Courgette</foundkey>
-	<foundkey>Cashew</foundkey>
-	<foundkey>cranberry</foundkey>
-	<foundkey>artichoke</foundkey>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-048]
-<actionbody>
-	<keylabel>carrot</keylabel>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-049]
-<actionbody>
-	<ImportData>pkcs8rsa.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*banana</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-050]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>*IMPORTED*banana</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-051]
-<actionbody>
-	<keylabel>*IMPORTED*banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-052]
-<actionbody>
-	<keylabel>*IMPORTED*banana</keylabel>
-	<open>RSA</open>
-	<text>This is text of thirty-two chars</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-053]
-<actionbody>
-	<keylabel>*IMPORTED*banana</keylabel>
-	<open>RSA</open>
-	<signdigest>1</signdigest>
-	<text>digestible</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-054]
-<actionbody>
-	<keylabel>*IMPORTED*banana</keylabel>
-	<open>RSA</open>
-	<signdigest>2</signdigest>
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-055]
-<actionbody>
-	<ImportData>pkcs8rsa1.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*strawberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-056]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>*IMPORTED*strawberry</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-057]
-<actionbody>
-	<ImportData>pkcs8rsa2.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*pumpkin</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-058]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>*IMPORTED*pumpkin</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-059]
-<actionbody>
-	<ImportData>pkcs8rsa3.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*coconut</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-060]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>1024</keysize>
-	<keylabel>*IMPORTED*coconut</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-061]
-<actionbody>
-	<keylabel>*IMPORTED*coconut</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-062]
-<actionbody>
-	<keylabel>*IMPORTED*coconut</keylabel>
-	<open>RSA</open>
-	<text>This is text of thirty-two chars</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-063]
-<actionbody>
-	<keylabel>*IMPORTED*coconut</keylabel>
-	<open>RSA</open>
-	<signdigest>1</signdigest>
-	<text>coconuthash</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-064]
-<actionbody>
-	<keylabel>*IMPORTED*coconut</keylabel>
-	<open>RSA</open>
-	<signdigest>2</signdigest>
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-065]
-<actionbody>
-	<ImportData>pkcs8rsa4.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*mango</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-066]
-<actionbody>
-	<keyusage>allusagesbutNR</keyusage>
-	<keysize>2048</keysize>
-	<keylabel>*IMPORTED*mango</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-067]
-<actionbody>
-	<keylabel>*IMPORTED*mango</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-068]
-<actionbody>
-	<keylabel>*IMPORTED*mango</keylabel>
-	<open>RSA</open>
-	<text>This is text of thirty-two chars</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-069]
-<actionbody>
-	<keylabel>*IMPORTED*mango</keylabel>
-	<open>RSA</open>
-	<signdigest>1</signdigest>
-	<text>DigestedMango</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-070]
-<actionbody>
-	<keylabel>*IMPORTED*mango</keylabel>
-	<open>RSA</open>
-	<signdigest>2</signdigest>
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-071]
-<actionbody>
-	<ImportData>pkcs8invalidrsa.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*badberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-072]
-<actionbody>
-	<ImportData>pkcs8dsa.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*raspberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-073]
-<actionbody>
-	<ImportData>pkcs8dsa1.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*strawberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-074]
-<actionbody>
-	<ImportData>pkcs8dsa2.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*gooseberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-075]
-<actionbody>
-	<ImportData>pkcs8dsa3.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*cranberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-076]
-<actionbody>
-	<ImportData>pkcs8dsa4.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*Stichbury</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-077]
-<actionbody>
-	<ImportData>pkcs8invaliddsa.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*blackberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-078]
-<actionbody>
-	<listcount>24</listcount>
-	<foundkey>cheeku</foundkey>
-	<foundkey>carrot</foundkey>
-	<foundkey>mango</foundkey>
-	<foundkey>artichoke</foundkey>
-	<foundkey>Cabbage</foundkey>
-	<foundkey>Courgette</foundkey>
-	<foundkey>Cauliflower</foundkey>
-	<foundkey>Cashew</foundkey>
-	<foundkey>cranberry</foundkey>
-	<foundkey>curly kale</foundkey>
-	<foundkey>*IMPORTED*banana</foundkey>
-	<foundkey>*IMPORTED*strawberry</foundkey>
-	<foundkey>*IMPORTED*pumpkin</foundkey>
-	<foundkey>*IMPORTED*coconut</foundkey>
-	<foundkey>*IMPORTED*mango</foundkey>
-	<foundkey>*IMPORTED*DSA*raspberry</foundkey>
-	<foundkey>*IMPORTED*DSA*strawberry</foundkey>
-	<foundkey>*IMPORTED*DSA*gooseberry</foundkey>
-	<foundkey>*IMPORTED*DSA*cranberry</foundkey>
-	<foundkey>*IMPORTED*DSA*Stichbury</foundkey>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-079]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>7</listcount>
-	<foundkey>Cabbage</foundkey>
-	<foundkey>Cauliflower</foundkey>
-	<foundkey>*IMPORTED*banana</foundkey>
-	<foundkey>*IMPORTED*strawberry</foundkey>
-	<foundkey>*IMPORTED*pumpkin</foundkey>
-	<foundkey>*IMPORTED*coconut</foundkey>
-	<foundkey>*IMPORTED*mango</foundkey>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-080]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-	<listcount>12</listcount>
-	<foundkey>carrot</foundkey>
-	<foundkey>Courgette</foundkey>
-	<foundkey>Cashew</foundkey>
-	<foundkey>cranberry</foundkey>
-	<foundkey>artichoke</foundkey>
-	<foundkey>*IMPORTED*DSA*raspberry</foundkey>
-	<foundkey>*IMPORTED*DSA*strawberry</foundkey>
-	<foundkey>*IMPORTED*DSA*gooseberry</foundkey>
-	<foundkey>*IMPORTED*DSA*cranberry</foundkey>
-	<foundkey>*IMPORTED*DSA*Stichbury</foundkey>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-081]
-<actionbody>
-	<keylabel>The fruit of the tree of life</keylabel>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-082]
-<actionbody>
-	<deletecount>24</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-083]
-<actionbody>
-	<ImportData>pkcs8rsa.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*banana</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-084]
-<actionbody>
-	<ImportData>pkcs8rsa1.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*strawberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-085]
-<actionbody>
-	<ImportData>pkcs8rsa2.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*pumpkin</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-086]
-<actionbody>
-	<ImportData>pkcs8rsa3.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*coconut</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-087]
-<actionbody>
-	<ImportData>pkcs8rsa4.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*mango</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-088]
-<actionbody>
-	<ImportData>pkcs8invalidrsa.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED*badberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-089]
-<actionbody>
-	<ImportData>pkcs8dsa.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*raspberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-090]
-<actionbody>
-	<ImportData>pkcs8dsa1.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*strawberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-091]
-<actionbody>
-	<ImportData>pkcs8dsa2.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*gooseberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-092]
-<actionbody>
-	<ImportData>pkcs8dsa3.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*cranberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-093]
-<actionbody>
-	<ImportData>pkcs8dsa4.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*Stichbury</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-094]
-<actionbody>
-	<ImportData>pkcs8invaliddsa.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED*DSA*blackberry</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-095]
-<actionbody>
-	<listcount>10</listcount>
-	<foundkey>*IMPORTED*banana</foundkey>
-	<foundkey>*IMPORTED*strawberry</foundkey>
-	<foundkey>*IMPORTED*pumpkin</foundkey>
-	<foundkey>*IMPORTED*coconut</foundkey>
-	<foundkey>*IMPORTED*mango</foundkey>
-	<foundkey>*IMPORTED*DSA*raspberry</foundkey>
-	<foundkey>*IMPORTED*DSA*strawberry</foundkey>
-	<foundkey>*IMPORTED*DSA*gooseberry</foundkey>
-	<foundkey>*IMPORTED*DSA*cranberry</foundkey>
-	<foundkey>*IMPORTED*DSA*Stichbury</foundkey>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-096]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>5</listcount>
-	<foundkey>*IMPORTED*banana</foundkey>
-	<foundkey>*IMPORTED*strawberry</foundkey>
-	<foundkey>*IMPORTED*pumpkin</foundkey>
-	<foundkey>*IMPORTED*coconut</foundkey>
-	<foundkey>*IMPORTED*mango</foundkey>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-097]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-	<listcount>5</listcount>
-	<foundkey>*IMPORTED*DSA*raspberry</foundkey>
-	<foundkey>*IMPORTED*DSA*strawberry</foundkey>
-	<foundkey>*IMPORTED*DSA*gooseberry</foundkey>
-	<foundkey>*IMPORTED*DSA*cranberry</foundkey>
-	<foundkey>*IMPORTED*DSA*Stichbury</foundkey>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-098]
-<actionbody>
-	<ImportData>encryptPK8rsaDER.txt</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED* encrypted raddicio</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-099]
-<actionbody>
-	<ImportData>encryptPK8rsaDER.txt</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED* encrypted fig</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import pinkcloud</passphrase>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-100]
-<actionbody>
-	<ImportData>encryptPK8rsa1DER.txt</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED* encrypted lollo rosso</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-101]
-<actionbody>
-	<ImportData>encryptPK8rsa2DER.txt</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED* encrypted rocket</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-102]
-<actionbody>
-	<ImportData>encryptPK8rsa3DER.txt</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED* encrypted iceberg lettuce</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-103]
-<actionbody>
-	<ImportData>encryptPK8rsa4DER.txt</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED* encrypted watercress</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-104]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>10</listcount>
-	<foundkey>*IMPORTED*banana</foundkey>
-	<foundkey>*IMPORTED*strawberry</foundkey>
-	<foundkey>*IMPORTED*pumpkin</foundkey>
-	<foundkey>*IMPORTED*coconut</foundkey>
-	<foundkey>*IMPORTED*mango</foundkey>
-	<foundkey>*IMPORTED* encrypted raddicio</foundkey>
-	<foundkey>*IMPORTED* encrypted lollo rosso</foundkey>
-	<foundkey>*IMPORTED* encrypted rocket</foundkey>
-	<foundkey>*IMPORTED* encrypted iceberg lettuce</foundkey>
-	<foundkey>*IMPORTED* encrypted watercress</foundkey>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-105]
-<actionbody>
-	<ImportData>encryptPK8dsaDER.txt</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED* encrypted physalis</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-106]
-<actionbody>
-	<ImportData>encryptPK8dsa1DER.txt</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED* encrypted papaya</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-107]
-<actionbody>
-	<ImportData>encryptPK8dsa2DER.txt</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED* encrypted pomegranate</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-108]
-<actionbody>
-	<ImportData>encryptPK8dsa3DER.txt</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED* encrypted pear</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-109]
-<actionbody>
-	<ImportData>encryptPK8dsa4DER.txt</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>*IMPORTED* encrypted purple plum</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-110]
-<actionbody>
-	<keyalgorithm>DSA</keyalgorithm>
-	<listcount>10</listcount>
-	<foundkey>*IMPORTED*DSA*raspberry</foundkey>
-	<foundkey>*IMPORTED*DSA*strawberry</foundkey>
-	<foundkey>*IMPORTED*DSA*gooseberry</foundkey>
-	<foundkey>*IMPORTED*DSA*cranberry</foundkey>
-	<foundkey>*IMPORTED*DSA*Stichbury</foundkey>
-	<foundkey>*IMPORTED* encrypted physalis</foundkey>
-	<foundkey>*IMPORTED* encrypted papaya</foundkey>
-	<foundkey>*IMPORTED* encrypted pomegranate</foundkey>
-	<foundkey>*IMPORTED* encrypted pear</foundkey>
-	<foundkey>*IMPORTED* encrypted purple plum</foundkey>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-111]
-<actionbody>
-	<ImportData>testvector1.bin</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED* encrypted evil one</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<passphrase>import clanger</passphrase>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-112]
-<actionbody>
-	<ImportData>binarygarbage.bin</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>*IMPORTED* encrypted evil one</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-113]
-<actionbody>
-	<keyalgorithm>RSA</keyalgorithm>
-	<listcount>10</listcount>
-	<foundkey>*IMPORTED*banana</foundkey>
-	<foundkey>*IMPORTED*strawberry</foundkey>
-	<foundkey>*IMPORTED*pumpkin</foundkey>
-	<foundkey>*IMPORTED*coconut</foundkey>
-	<foundkey>*IMPORTED*mango</foundkey>
-	<foundkey>*IMPORTED* encrypted raddicio</foundkey>
-	<foundkey>*IMPORTED* encrypted lollo rosso</foundkey>
-	<foundkey>*IMPORTED* encrypted rocket</foundkey>
-	<foundkey>*IMPORTED* encrypted iceberg lettuce</foundkey>
-	<foundkey>*IMPORTED* encrypted watercress</foundkey>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-114]
-<actionbody>
-	<deletecount>20</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-115]
-<actionbody>
-	<listcount>0</listcount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0004-118]
-<actionbody>
-	<mode>user</mode>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0005-001]
-<actionbody>
-	<mode>user</mode>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0005-002]
-<actionbody>
-	<mode>manager</mode>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0006-001]
-<actionbody>
-	<mode>manager</mode>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0006-002]
-<actionbody>
-	<mode>user</mode>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0007-001]
-<actionbody>
-	<mode>manager</mode>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0008-001]
-<actionbody>
-	<keyusage>none</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0008-002]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<timeout>0</timeout>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0008-003]
-<actionbody>
-	<keyusage>none</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0008-004]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0008-005]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0008-006]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0008-007]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0009-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0009-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0009-003]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0009-004]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0009-005]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0009-006]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0010-001]
-<actionbody>
-	<keyusage>SignRecover</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0010-002]
-<actionbody>
-	<keyusage>SignRecover</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0010-003]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0010-004]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0010-005]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0010-006]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0011-001]
-<actionbody>
-	<keyusage>Decrypt</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0011-002]
-<actionbody>
-	<keyusage>Decrypt</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0011-003]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0011-004]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0011-005]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0011-006]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0012-001]
-<actionbody>
-	<keyusage>Unwrap</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0012-002]
-<actionbody>
-	<keyusage>Unwrap</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0012-003]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0012-004]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0012-005]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0012-006]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0013-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0013-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0013-003]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0013-004]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0013-005]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0013-006]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0014-001]
-<actionbody>
-	<keyusage>SignRecover</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0014-002]
-<actionbody>
-	<keyusage>SignRecover</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0014-003]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0014-004]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0014-005]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0014-006]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0015-001]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0015-002]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0015-003]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0015-004]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0015-005]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0015-006]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0016-001]
-<actionbody>
-	<keyusage>NR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0016-002]
-<actionbody>
-	<keyusage>NR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0016-003]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0016-004]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0016-005]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0016-006]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0017-001]
-<actionbody>
-	<keyusage>NR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0017-002]
-<actionbody>
-	<keyusage>NR</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>DSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Local</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0017-003]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0017-004]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0017-005]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0017-006]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0018-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0018-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Local</keyaccesstype>
-	<keyaccesstype>NeverExtractable</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0018-003]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0019-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Sensitive</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0019-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Local</keyaccesstype>
-	<keyaccesstype>NeverExtractable</keyaccesstype>
-	<keyaccesstype>Sensitive</keyaccesstype>
-	<keyaccesstype>AlwaysSensitive</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0019-003]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0020-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0020-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Local</keyaccesstype>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0020-003]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0021-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Sensitive</keyaccesstype>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0021-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Local</keyaccesstype>
-	<keyaccesstype>Extractable</keyaccesstype>
-	<keyaccesstype>Sensitive</keyaccesstype>
-	<keyaccesstype>AlwaysSensitive</keyaccesstype>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0021-003]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0022-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>AlwaysSensitive</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0022-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>NeverExtractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0022-003]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<keyaccesstype>Local</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0023-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0023-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<native>1</native>
-	<startdate>unset</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0023-003]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0024-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-
-	<startdate>10/08/1977 12:43:59</startdate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0024-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<native>1</native>
-	<startdate>10/08/1977 12:43:59</startdate>
-	<enddate>unset</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0024-003]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0025-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-
-	<enddate>27/09/2079 23:23:23</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0025-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<native>1</native>
-	<enddate>27/09/2079 23:23:23</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0025-003]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0026-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-
-	<startdate>10/08/1977 12:43:59</startdate>
-	<enddate>27/09/2079 23:23:23</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0026-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<native>1</native>
-	<startdate>10/08/1977 12:43:59</startdate>
-	<enddate>27/09/2079 23:23:23</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0026-003]
-<actionbody>
-	<deletecount>1</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0027-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<startdate>27/09/2079 23:23:23</startdate>
-	<enddate>10/08/1977 12:43:59</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0028-001]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-	<startdate>27/09/1879 23:23:23</startdate>
-	<enddate>10/08/1977 12:43:59</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-001]
-<actionbody>
-	<hometime>01/01/2000 00:00:00</hometime>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-002]
-<actionbody>
-	<keyusage>Sign</keyusage>
-	<keyusage>Decrypt</keyusage>
-	<keysize>512</keysize>
-	<keylabel>pineapple</keylabel>
-	<keyalgorithm>RSA</keyalgorithm>
-
-	<enddate>01/01/2001 00:00:00</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-003]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<timeout>0</timeout>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-004]
-<actionbody>
-	<keyusage>Derive</keyusage>
-	<keysize>512</keysize>
-	<keylabel>mango</keylabel>
-	<keyalgorithm>DH</keyalgorithm>
-	<keyaccesstype>Extractable</keyaccesstype>
-
-	<enddate>01/01/2001 00:00:00</enddate>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-005]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-006]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<text>Ook!</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-007]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-008]
-<actionbody>
-	<hometime>01/01/2003 00:00:00</hometime>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-009]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-010]
-<actionbody>
-	<keylabel>pineapple</keylabel>
-	<text>Ook!</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-011]
-<actionbody>
-	<keylabel>mango</keylabel>
-	<open>DH</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-012]
-<actionbody>
-	<deletecount>2</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-013]
-<actionbody>
-	<ImportData>pkcs8rsa4.001</ImportData>
-	<keyusage>allusagesbutNR</keyusage>
-	<keylabel>BIGRSA</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-014]
-<actionbody>
-	<keylabel>BIGRSA</keylabel>
-	<timeout>0</timeout>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-015]
-<actionbody>
-	<keylabel>BIGRSA</keylabel>
-	<open>Decrypt</open>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-016]
-<actionbody>
-	<keylabel>BIGRSA</keylabel>
-	<open>RSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-017]
-<actionbody>
-	<keylabel>BIGRSA</keylabel>
-	<open>RSA</open>
-	<text>This is text of thirty-two chars</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-018]
-<actionbody>
-	<keylabel>BIGRSA</keylabel>
-	<open>RSA</open>
-	<signdigest>1</signdigest>
-	<text>digested!</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-019]
-<actionbody>
-	<ImportData>pkcs8dsa4.001</ImportData>
-	<keyusage>DSAUsage</keyusage>
-	<keylabel>BIGDSA</keylabel>
-	<keyaccesstype>Extractable</keyaccesstype>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-020]
-<actionbody>
-	<keylabel>BIGDSA</keylabel>
-	<open>DSA</open>
-	<text>This is text of 20 .</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-021]
-<actionbody>
-	<keylabel>BIGDSA</keylabel>
-	<open>DSA</open>
-	<text>This is a text of 21.</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-022]
-<actionbody>
-	<keylabel>BIGDSA</keylabel>
-	<open>DSA</open>
-	<signdigest>1</signdigest>
-
-	<text>Had we but world enough, and time,
-This coyness, lady, were no crime.
-We would sit down and think which way
-To walk, and pass our long love's day;
-Thou by the Indian Ganges' side
-Shouldst rubies find; I by the tide
-Of Humber would complain. I would
-Love you ten years before the Flood;
-And you should, if you please, refuse
-Till the conversion of the Jews.
-My vegetable love should grow
-Vaster than empires, and more slow.
-An hundred years should go to praise
-Thine eyes, and on thy forehead gaze;
-Two hundred to adore each breast,
-But thirty thousand to the rest;
-An age at least to every part,
-And the last age should show your heart.
-For, lady, you deserve this state,
-Nor would I love at lower rate.
-
-        But at my back I always hear
-Time's winged chariot hurrying near;
-And yonder all before us lie
-Deserts of vast eternity.
-Thy beauty shall no more be found,
-Nor, in thy marble vault, shall sound
-My echoing song; then worms shall try
-That long preserv'd virginity,
-And your quaint honour turn to dust,
-And into ashes all my lust.
-The grave's a fine and private place,
-But none I think do there embrace.
-
-        Now therefore, while the youthful hue
-Sits on thy skin like morning dew,
-And while thy willing soul transpires
-At every pore with instant fires,
-Now let us sport us while we may;
-And now, like am'rous birds of prey,
-Rather at once our time devour,
-Than languish in his slow-chapp'd power.
-Let us roll all our strength, and all
-Our sweetness, up into one ball;
-And tear our pleasures with rough strife
-Thorough the iron gates of life.
-Thus, though we cannot make our sun
-Stand still, yet we will make him run</text>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-023]
-<actionbody>
-	<deletecount>2</deletecount>
-</actionbody>
-
-[SEC-TKEYSTORE_USEAUTH-0029-025]
-<actionbody>
-	<seconds>5</seconds>
-</actionbody>
-
+[SEC-TKEYSTORE_USEAUTH-0001-002]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+	<CheckKeyStoreLabel>1</CheckKeyStoreLabel>
+
+	<keystoreindex>2</keystoreindex>
+
+	<keystorelabel>Dummy KeyStore Manager1</keystorelabel>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0001-004]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+	<CheckKeyStoreLabel>1</CheckKeyStoreLabel>
+
+	<keystoreindex>4</keystoreindex>
+
+	<keystorelabel>Dummy KeyStore Manager1</keystorelabel>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0001-006]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+	<CheckStoreCount>1</CheckStoreCount>
+
+	<KeyStoreCount>4</KeyStoreCount>
+
+	<KeyStoreManagerCount>3</KeyStoreManagerCount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0001-007]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0001-008]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>cheeku</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keystore>0</keystore>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0001-009]
+
+<actionbody>
+
+	<foundkey>cheeku</foundkey>
+
+		<foundkey>cheeku</foundkey>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0001-010]
+
+<actionbody>
+
+	<ExportFile>export_DHkey.001</ExportFile>
+
+	<keyusage>Derive</keyusage>
+
+	<keylabel>cheeku</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<encrypted>0</encrypted>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0001-011]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keystore>0</keystore>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0001-012]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<keystore>0</keystore>
+
+	<timeout>0</timeout>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0001-013]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0001-014]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0001-015]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0001-016]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>cheeku</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keystore>0</keystore>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0001-017]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<text>Ook!</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0001-018]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0001-019]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of thirty-two chars</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0001-020]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>digested!</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0001-021]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>2</signdigest>
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0001-022]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>DSA</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0001-023]
+
+<actionbody>
+
+	<keylabel>banana</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0002-001]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-001]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>mangosteen</keylabel>
+
+	<keyalgorithm>BAD</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-002]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-003]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-004]
+
+<actionbody>
+
+	<keylabel>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</keylabel>
+
+	<open>RSA</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-005]
+
+<actionbody>
+
+	<keylabel>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</keylabel>
+
+	<open>RSA</open>
+
+	<text>Ook!</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-006]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>beansprout</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Sensitive</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-007]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>beansprout</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Sensitive</keyaccesstype>
+
+	<keyaccesstype>AlwaysSensitive</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-008]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>carrot</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-009]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>carrot</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-010]
+
+<actionbody>
+
+	<keylabel>carrot</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-011]
+
+<actionbody>
+
+	<keylabel>carrot</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is a text of 21.</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-012]
+
+<actionbody>
+
+	<keylabel>carrot</keylabel>
+
+	<open>DSA</open>
+
+	<signdigest>1</signdigest>
+
+
+
+
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-013]
+
+<actionbody>
+
+	<keylabel>carrot</keylabel>
+
+	<open>DSA</open>
+
+	<signdigest>2</signdigest>
+
+	<text>digest!</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-014]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>artichoke</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-015]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>artichoke</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-016]
+
+<actionbody>
+
+	<keylabel>artichoke</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-017]
+
+<actionbody>
+
+	<keylabel>artichoke</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is a text of 21.</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-018]
+
+<actionbody>
+
+	<keylabel>artichoke</keylabel>
+
+	<open>DSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-019]
+
+<actionbody>
+
+	<keylabel>artichoke</keylabel>
+
+	<open>DSA</open>
+
+	<signdigest>2</signdigest>
+
+
+
+
+
+	<text>TheDigest</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-020]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>mango</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-021]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>mango</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-022]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0003-023]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<n>DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F</n>
+
+	<g>02</g>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-001]
+
+<actionbody>
+
+	<keyusage>NR</keyusage>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>apple123</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>jackfruit</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-003]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>custard apple</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-004]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keyusage>NR</keyusage>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>grape</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-005]
+
+<actionbody>
+
+	<keyusage>NR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pomegranet</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-006]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>511</keysize>
+
+	<keylabel>veryshort</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-007]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>2049</keysize>
+
+	<keylabel>pear</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-008]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>2048</keysize>
+
+	<keylabel>guava</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-009]
+
+<actionbody>
+
+	<keylabel>guava</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-010]
+
+<actionbody>
+
+	<keylabel>guava</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of thirty-two chars</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-011]
+
+<actionbody>
+
+	<keylabel>guava</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>predigested</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-012]
+
+<actionbody>
+
+	<keylabel>guava</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>2</signdigest>
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-013]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>523</keysize>
+
+	<keylabel>kiwi</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-014]
+
+<actionbody>
+
+	<keylabel>kiwi</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-015]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>523</keysize>
+
+	<keylabel>kiwi</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-016]
+
+<actionbody>
+
+	<foundkey>cheeku</foundkey>
+
+	<foundkey>banana</foundkey>
+
+	<foundkey>beansprout</foundkey>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>apple123</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>
+
+	<foundkey>artichoke</foundkey>
+
+	<foundkey>guava</foundkey>
+
+	<foundkey>kiwi</foundkey>
+
+   		<foundkey>jackfruit</foundkey>
+
+   		<foundkey>custard apple</foundkey>
+
+   		<foundkey>grape</foundkey>
+
+   		<foundkey>pomegranet</foundkey>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-017]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>artichoke</foundkey>
+
+   		<foundkey>custard apple</foundkey>
+
+   		<foundkey>grape</foundkey>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-018]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<foundkey>banana</foundkey>
+
+	<foundkey>beansprout</foundkey>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>artichoke</foundkey>
+
+	<foundkey>guava</foundkey>
+
+	<foundkey>apple123</foundkey>
+
+	<foundkey>kiwi</foundkey>
+
+   		<foundkey>jackfruit</foundkey>
+
+   		<foundkey>grape</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-019]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<foundkey>banana</foundkey>
+
+	<foundkey>beansprout</foundkey>
+
+	<foundkey>artichoke</foundkey>
+
+	<foundkey>guava</foundkey>
+
+	<foundkey>apple123</foundkey>
+
+	<foundkey>kiwi</foundkey>
+
+	<foundkey>
+
+To be, or not to be: that is the question:
+
+Whether 'tis nobler in the mind to suffer
+
+The slings and arrows of outrageous fortune,
+
+Or to take arms against a sea of troubles,
+
+And by opposing end them? To die: to sleep;
+
+No more; and by a sleep to say we end
+
+The heart-ache and the thousand natural shocks
+
+That flesh is heir to, 'tis a consummation
+
+Devoutly to be wish'd. To die, to sleep;
+
+To sleep: perchance to dream: ay, there's the rub;
+
+For in that sleep of death what dreams may come
+
+When we have shuffled off this mortal coil,
+
+Must give us pause: there's the respect
+
+That makes calamity of so long life;
+
+For who would bear the whips and scorns of time,
+
+The oppressor's wrong, the proud man's contumely,
+
+The pangs of despised love, the law's delay,
+
+The insolence of office and the spurns
+
+That patient merit of the unworthy takes,
+
+When he himself might his quietus make
+
+With a bare bodkin? Who would fardels bear,
+
+To grunt and sweat under a weary life,
+
+But that the dread of something after death,
+
+The undiscover'd country from whose bourn
+
+No traveller returns, puzzles the will
+
+And makes us rather bear those ills we have
+
+Than fly to others that we know not of?
+
+Thus conscience does make cowards of us all;
+
+And thus the native hue of resolution
+
+Is sicklied o'er with the pale cast of thought,
+
+And enterprises of great pith and moment
+
+With this regard their currents turn awry,
+
+And lose the name of action.--Soft you now!
+
+The fair Ophelia! Nymph, in thy orisons
+
+Be all my sins remember'd. 
+
+	</foundkey>
+
+   		<foundkey>jackfruit</foundkey>
+
+   		<foundkey>carrot</foundkey>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-020]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>6</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-021]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-022]
+
+<actionbody>
+
+	<foundkey>cheeku</foundkey>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>artichoke</foundkey>
+
+   		<foundkey>jackfruit</foundkey>
+
+   		<foundkey>custard apple</foundkey>
+
+   		<foundkey>grape</foundkey>
+
+   		<foundkey>pomegranet</foundkey>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-023]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-024]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-025]
+
+<actionbody>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>cheeku</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>banana</foundkey>
+
+	<foundkey>artichoke</foundkey>
+
+   		<foundkey>jackfruit</foundkey>
+
+   		<foundkey>custard apple</foundkey>
+
+   		<foundkey>grape</foundkey>
+
+   		<foundkey>pomegranet</foundkey>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-026]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-027]
+
+<actionbody>
+
+	<nonexistent>1</nonexistent>
+
+	<deletecount>0</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-028]
+
+<actionbody>
+
+	<nonexistent>1</nonexistent>
+
+	<deletecount>0</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-029]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>Cabbage</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-030]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>Cabbage</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-031]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>Courgette</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-032]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>Courgette</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-033]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>Cauliflower</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-034]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>Cauliflower</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-035]
+
+<actionbody>
+
+	<keylabel>Cauliflower</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-036]
+
+<actionbody>
+
+	<keylabel>Cauliflower</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of thirty-two chars</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-037]
+
+<actionbody>
+
+	<keylabel>Cauliflower</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>hashed cauli</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-038]
+
+<actionbody>
+
+	<keylabel>Cauliflower</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>2</signdigest>
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-039]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>Cashew</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-040]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>Cashew</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-041]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>cranberry</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-042]
+
+<actionbody>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>cranberry</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-043]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>curly kale</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-044]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>curly kale</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-045]
+
+<actionbody>
+
+	<foundkey>cheeku</foundkey>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>artichoke</foundkey>
+
+	<foundkey>Cabbage</foundkey>
+
+	<foundkey>Courgette</foundkey>
+
+	<foundkey>Cauliflower</foundkey>
+
+	<foundkey>Cashew</foundkey>
+
+	<foundkey>cranberry</foundkey>
+
+	<foundkey>curly kale</foundkey>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-046]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<foundkey>Cabbage</foundkey>
+
+	<foundkey>Cauliflower</foundkey>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-047]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>Courgette</foundkey>
+
+	<foundkey>Cashew</foundkey>
+
+	<foundkey>cranberry</foundkey>
+
+	<foundkey>artichoke</foundkey>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-048]
+
+<actionbody>
+
+	<keylabel>carrot</keylabel>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-049]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*banana</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-050]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>*IMPORTED*banana</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-051]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-052]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*banana</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of thirty-two chars</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-053]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*banana</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>digestible</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-054]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*banana</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>2</signdigest>
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-055]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa1.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*strawberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-056]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>*IMPORTED*strawberry</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-057]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa2.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*pumpkin</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-058]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>*IMPORTED*pumpkin</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-059]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa3.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*coconut</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-060]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>1024</keysize>
+
+	<keylabel>*IMPORTED*coconut</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-061]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*coconut</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-062]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*coconut</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of thirty-two chars</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-063]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*coconut</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>coconuthash</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-064]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*coconut</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>2</signdigest>
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-065]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa4.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*mango</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-066]
+
+<actionbody>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keysize>2048</keysize>
+
+	<keylabel>*IMPORTED*mango</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-067]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*mango</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-068]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*mango</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of thirty-two chars</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-069]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*mango</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>DigestedMango</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-070]
+
+<actionbody>
+
+	<keylabel>*IMPORTED*mango</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>2</signdigest>
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-071]
+
+<actionbody>
+
+	<ImportData>pkcs8invalidrsa.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*badberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-072]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*raspberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-073]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa1.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*strawberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-074]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa2.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*gooseberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-075]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa3.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*cranberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-076]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa4.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*Stichbury</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-077]
+
+<actionbody>
+
+	<ImportData>pkcs8invaliddsa.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*blackberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-078]
+
+<actionbody>
+
+	<foundkey>cheeku</foundkey>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>mango</foundkey>
+
+	<foundkey>artichoke</foundkey>
+
+	<foundkey>Cabbage</foundkey>
+
+	<foundkey>Courgette</foundkey>
+
+	<foundkey>Cauliflower</foundkey>
+
+	<foundkey>Cashew</foundkey>
+
+	<foundkey>cranberry</foundkey>
+
+	<foundkey>curly kale</foundkey>
+
+	<foundkey>*IMPORTED*banana</foundkey>
+
+	<foundkey>*IMPORTED*strawberry</foundkey>
+
+	<foundkey>*IMPORTED*pumpkin</foundkey>
+
+	<foundkey>*IMPORTED*coconut</foundkey>
+
+	<foundkey>*IMPORTED*mango</foundkey>
+
+	<foundkey>*IMPORTED*DSA*raspberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*strawberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*gooseberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*cranberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*Stichbury</foundkey>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-079]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<foundkey>Cabbage</foundkey>
+
+	<foundkey>Cauliflower</foundkey>
+
+	<foundkey>*IMPORTED*banana</foundkey>
+
+	<foundkey>*IMPORTED*strawberry</foundkey>
+
+	<foundkey>*IMPORTED*pumpkin</foundkey>
+
+	<foundkey>*IMPORTED*coconut</foundkey>
+
+	<foundkey>*IMPORTED*mango</foundkey>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-080]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<foundkey>carrot</foundkey>
+
+	<foundkey>Courgette</foundkey>
+
+	<foundkey>Cashew</foundkey>
+
+	<foundkey>cranberry</foundkey>
+
+	<foundkey>artichoke</foundkey>
+
+	<foundkey>*IMPORTED*DSA*raspberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*strawberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*gooseberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*cranberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*Stichbury</foundkey>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-081]
+
+<actionbody>
+
+	<keylabel>The fruit of the tree of life</keylabel>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-082]
+
+<actionbody>
+
+	<deletecount>24</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-083]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*banana</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-084]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa1.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*strawberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-085]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa2.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*pumpkin</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-086]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa3.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*coconut</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-087]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa4.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*mango</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-088]
+
+<actionbody>
+
+	<ImportData>pkcs8invalidrsa.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED*badberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-089]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*raspberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-090]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa1.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*strawberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-091]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa2.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*gooseberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-092]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa3.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*cranberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-093]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa4.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*Stichbury</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-094]
+
+<actionbody>
+
+	<ImportData>pkcs8invaliddsa.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED*DSA*blackberry</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-095]
+
+<actionbody>
+
+	<foundkey>*IMPORTED*banana</foundkey>
+
+	<foundkey>*IMPORTED*strawberry</foundkey>
+
+	<foundkey>*IMPORTED*pumpkin</foundkey>
+
+	<foundkey>*IMPORTED*coconut</foundkey>
+
+	<foundkey>*IMPORTED*mango</foundkey>
+
+	<foundkey>*IMPORTED*DSA*raspberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*strawberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*gooseberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*cranberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*Stichbury</foundkey>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-096]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<foundkey>*IMPORTED*banana</foundkey>
+
+	<foundkey>*IMPORTED*strawberry</foundkey>
+
+	<foundkey>*IMPORTED*pumpkin</foundkey>
+
+	<foundkey>*IMPORTED*coconut</foundkey>
+
+	<foundkey>*IMPORTED*mango</foundkey>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-097]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<foundkey>*IMPORTED*DSA*raspberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*strawberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*gooseberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*cranberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*Stichbury</foundkey>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-098]
+
+<actionbody>
+
+	<ImportData>encryptPK8rsaDER.txt</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED* encrypted raddicio</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-099]
+
+<actionbody>
+
+	<ImportData>encryptPK8rsaDER.txt</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED* encrypted fig</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import pinkcloud</passphrase>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-100]
+
+<actionbody>
+
+	<ImportData>encryptPK8rsa1DER.txt</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED* encrypted lollo rosso</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-101]
+
+<actionbody>
+
+	<ImportData>encryptPK8rsa2DER.txt</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED* encrypted rocket</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-102]
+
+<actionbody>
+
+	<ImportData>encryptPK8rsa3DER.txt</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED* encrypted iceberg lettuce</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-103]
+
+<actionbody>
+
+	<ImportData>encryptPK8rsa4DER.txt</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED* encrypted watercress</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-104]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<foundkey>*IMPORTED*banana</foundkey>
+
+	<foundkey>*IMPORTED*strawberry</foundkey>
+
+	<foundkey>*IMPORTED*pumpkin</foundkey>
+
+	<foundkey>*IMPORTED*coconut</foundkey>
+
+	<foundkey>*IMPORTED*mango</foundkey>
+
+	<foundkey>*IMPORTED* encrypted raddicio</foundkey>
+
+	<foundkey>*IMPORTED* encrypted lollo rosso</foundkey>
+
+	<foundkey>*IMPORTED* encrypted rocket</foundkey>
+
+	<foundkey>*IMPORTED* encrypted iceberg lettuce</foundkey>
+
+	<foundkey>*IMPORTED* encrypted watercress</foundkey>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-105]
+
+<actionbody>
+
+	<ImportData>encryptPK8dsaDER.txt</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED* encrypted physalis</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-106]
+
+<actionbody>
+
+	<ImportData>encryptPK8dsa1DER.txt</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED* encrypted papaya</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-107]
+
+<actionbody>
+
+	<ImportData>encryptPK8dsa2DER.txt</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED* encrypted pomegranate</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-108]
+
+<actionbody>
+
+	<ImportData>encryptPK8dsa3DER.txt</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED* encrypted pear</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-109]
+
+<actionbody>
+
+	<ImportData>encryptPK8dsa4DER.txt</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>*IMPORTED* encrypted purple plum</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-110]
+
+<actionbody>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<foundkey>*IMPORTED*DSA*raspberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*strawberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*gooseberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*cranberry</foundkey>
+
+	<foundkey>*IMPORTED*DSA*Stichbury</foundkey>
+
+	<foundkey>*IMPORTED* encrypted physalis</foundkey>
+
+	<foundkey>*IMPORTED* encrypted papaya</foundkey>
+
+	<foundkey>*IMPORTED* encrypted pomegranate</foundkey>
+
+	<foundkey>*IMPORTED* encrypted pear</foundkey>
+
+	<foundkey>*IMPORTED* encrypted purple plum</foundkey>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-111]
+
+<actionbody>
+
+	<ImportData>testvector1.bin</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED* encrypted evil one</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<passphrase>import clanger</passphrase>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-112]
+
+<actionbody>
+
+	<ImportData>binarygarbage.bin</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>*IMPORTED* encrypted evil one</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-113]
+
+<actionbody>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<foundkey>*IMPORTED*banana</foundkey>
+
+	<foundkey>*IMPORTED*strawberry</foundkey>
+
+	<foundkey>*IMPORTED*pumpkin</foundkey>
+
+	<foundkey>*IMPORTED*coconut</foundkey>
+
+	<foundkey>*IMPORTED*mango</foundkey>
+
+	<foundkey>*IMPORTED* encrypted raddicio</foundkey>
+
+	<foundkey>*IMPORTED* encrypted lollo rosso</foundkey>
+
+	<foundkey>*IMPORTED* encrypted rocket</foundkey>
+
+	<foundkey>*IMPORTED* encrypted iceberg lettuce</foundkey>
+
+	<foundkey>*IMPORTED* encrypted watercress</foundkey>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-114]
+
+<actionbody>
+
+	<deletecount>20</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-115]
+
+<actionbody>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0004-118]
+
+<actionbody>
+
+	<mode>user</mode>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0005-001]
+
+<actionbody>
+
+	<mode>user</mode>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0005-002]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0006-001]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0006-002]
+
+<actionbody>
+
+	<mode>user</mode>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0007-001]
+
+<actionbody>
+
+	<mode>manager</mode>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0008-001]
+
+<actionbody>
+
+	<keyusage>none</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0008-002]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<timeout>0</timeout>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0008-003]
+
+<actionbody>
+
+	<keyusage>none</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0008-004]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0008-005]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0008-006]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0008-007]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0009-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0009-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0009-003]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0009-004]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0009-005]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0009-006]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0010-001]
+
+<actionbody>
+
+	<keyusage>SignRecover</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0010-002]
+
+<actionbody>
+
+	<keyusage>SignRecover</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0010-003]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0010-004]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0010-005]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0010-006]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0011-001]
+
+<actionbody>
+
+	<keyusage>Decrypt</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0011-002]
+
+<actionbody>
+
+	<keyusage>Decrypt</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0011-003]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0011-004]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0011-005]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0011-006]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0012-001]
+
+<actionbody>
+
+	<keyusage>Unwrap</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0012-002]
+
+<actionbody>
+
+	<keyusage>Unwrap</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0012-003]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0012-004]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0012-005]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0012-006]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0013-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0013-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0013-003]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0013-004]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0013-005]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0013-006]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0014-001]
+
+<actionbody>
+
+	<keyusage>SignRecover</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0014-002]
+
+<actionbody>
+
+	<keyusage>SignRecover</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0014-003]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0014-004]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0014-005]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0014-006]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0015-001]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0015-002]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0015-003]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0015-004]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0015-005]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0015-006]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0016-001]
+
+<actionbody>
+
+	<keyusage>NR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0016-002]
+
+<actionbody>
+
+	<keyusage>NR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0016-003]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0016-004]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0016-005]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0016-006]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0017-001]
+
+<actionbody>
+
+	<keyusage>NR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0017-002]
+
+<actionbody>
+
+	<keyusage>NR</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>DSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0017-003]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0017-004]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0017-005]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0017-006]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0018-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0018-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<keyaccesstype>NeverExtractable</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0018-003]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0019-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Sensitive</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0019-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<keyaccesstype>NeverExtractable</keyaccesstype>
+
+	<keyaccesstype>Sensitive</keyaccesstype>
+
+	<keyaccesstype>AlwaysSensitive</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0019-003]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0020-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0020-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0020-003]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0021-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Sensitive</keyaccesstype>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0021-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+	<keyaccesstype>Sensitive</keyaccesstype>
+
+	<keyaccesstype>AlwaysSensitive</keyaccesstype>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0021-003]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0022-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>AlwaysSensitive</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0022-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>NeverExtractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0022-003]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<keyaccesstype>Local</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0023-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0023-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<native>1</native>
+
+	<startdate>unset</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0023-003]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0024-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+
+
+	<startdate>10/08/1977 12:43:59</startdate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0024-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<native>1</native>
+
+	<startdate>10/08/1977 12:43:59</startdate>
+
+	<enddate>unset</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0024-003]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0025-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+
+
+	<enddate>27/09/2079 23:23:23</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0025-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<native>1</native>
+
+	<enddate>27/09/2079 23:23:23</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0025-003]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0026-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+
+
+	<startdate>10/08/1977 12:43:59</startdate>
+
+	<enddate>27/09/2079 23:23:23</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0026-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<native>1</native>
+
+	<startdate>10/08/1977 12:43:59</startdate>
+
+	<enddate>27/09/2079 23:23:23</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0026-003]
+
+<actionbody>
+
+	<deletecount>1</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0027-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<startdate>27/09/2079 23:23:23</startdate>
+
+	<enddate>10/08/1977 12:43:59</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0028-001]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+	<startdate>27/09/1879 23:23:23</startdate>
+
+	<enddate>10/08/1977 12:43:59</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-001]
+
+<actionbody>
+
+	<hometime>01/01/2000 00:00:00</hometime>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-002]
+
+<actionbody>
+
+	<keyusage>Sign</keyusage>
+
+	<keyusage>Decrypt</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>pineapple</keylabel>
+
+	<keyalgorithm>RSA</keyalgorithm>
+
+
+
+	<enddate>01/01/2001 00:00:00</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-003]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<timeout>0</timeout>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-004]
+
+<actionbody>
+
+	<keyusage>Derive</keyusage>
+
+	<keysize>512</keysize>
+
+	<keylabel>mango</keylabel>
+
+	<keyalgorithm>DH</keyalgorithm>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+
+
+	<enddate>01/01/2001 00:00:00</enddate>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-005]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-006]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<text>Ook!</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-007]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-008]
+
+<actionbody>
+
+	<hometime>01/01/2003 00:00:00</hometime>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-009]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-010]
+
+<actionbody>
+
+	<keylabel>pineapple</keylabel>
+
+	<text>Ook!</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-011]
+
+<actionbody>
+
+	<keylabel>mango</keylabel>
+
+	<open>DH</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-012]
+
+<actionbody>
+
+	<deletecount>2</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-013]
+
+<actionbody>
+
+	<ImportData>pkcs8rsa4.001</ImportData>
+
+	<keyusage>allusagesbutNR</keyusage>
+
+	<keylabel>BIGRSA</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-014]
+
+<actionbody>
+
+	<keylabel>BIGRSA</keylabel>
+
+	<timeout>0</timeout>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-015]
+
+<actionbody>
+
+	<keylabel>BIGRSA</keylabel>
+
+	<open>Decrypt</open>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-016]
+
+<actionbody>
+
+	<keylabel>BIGRSA</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-017]
+
+<actionbody>
+
+	<keylabel>BIGRSA</keylabel>
+
+	<open>RSA</open>
+
+	<text>This is text of thirty-two chars</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-018]
+
+<actionbody>
+
+	<keylabel>BIGRSA</keylabel>
+
+	<open>RSA</open>
+
+	<signdigest>1</signdigest>
+
+	<text>digested!</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-019]
+
+<actionbody>
+
+	<ImportData>pkcs8dsa4.001</ImportData>
+
+	<keyusage>DSAUsage</keyusage>
+
+	<keylabel>BIGDSA</keylabel>
+
+	<keyaccesstype>Extractable</keyaccesstype>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-020]
+
+<actionbody>
+
+	<keylabel>BIGDSA</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is text of 20 .</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-021]
+
+<actionbody>
+
+	<keylabel>BIGDSA</keylabel>
+
+	<open>DSA</open>
+
+	<text>This is a text of 21.</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-022]
+
+<actionbody>
+
+	<keylabel>BIGDSA</keylabel>
+
+	<open>DSA</open>
+
+	<signdigest>1</signdigest>
+
+
+
+	<text>Had we but world enough, and time,
+
+This coyness, lady, were no crime.
+
+We would sit down and think which way
+
+To walk, and pass our long love's day;
+
+Thou by the Indian Ganges' side
+
+Shouldst rubies find; I by the tide
+
+Of Humber would complain. I would
+
+Love you ten years before the Flood;
+
+And you should, if you please, refuse
+
+Till the conversion of the Jews.
+
+My vegetable love should grow
+
+Vaster than empires, and more slow.
+
+An hundred years should go to praise
+
+Thine eyes, and on thy forehead gaze;
+
+Two hundred to adore each breast,
+
+But thirty thousand to the rest;
+
+An age at least to every part,
+
+And the last age should show your heart.
+
+For, lady, you deserve this state,
+
+Nor would I love at lower rate.
+
+
+
+        But at my back I always hear
+
+Time's winged chariot hurrying near;
+
+And yonder all before us lie
+
+Deserts of vast eternity.
+
+Thy beauty shall no more be found,
+
+Nor, in thy marble vault, shall sound
+
+My echoing song; then worms shall try
+
+That long preserv'd virginity,
+
+And your quaint honour turn to dust,
+
+And into ashes all my lust.
+
+The grave's a fine and private place,
+
+But none I think do there embrace.
+
+
+
+        Now therefore, while the youthful hue
+
+Sits on thy skin like morning dew,
+
+And while thy willing soul transpires
+
+At every pore with instant fires,
+
+Now let us sport us while we may;
+
+And now, like am'rous birds of prey,
+
+Rather at once our time devour,
+
+Than languish in his slow-chapp'd power.
+
+Let us roll all our strength, and all
+
+Our sweetness, up into one ball;
+
+And tear our pleasures with rough strife
+
+Thorough the iron gates of life.
+
+Thus, though we cannot make our sun
+
+Stand still, yet we will make him run</text>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-023]
+
+<actionbody>
+
+	<deletecount>2</deletecount>
+
+</actionbody>
+
+
+
+[SEC-TKEYSTORE_USEAUTH-0029-025]
+
+<actionbody>
+
+	<seconds>5</seconds>
+
+</actionbody>
+
+
+
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore_useauth.script	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/scripts/tkeystore_useauth.script	Mon Oct 12 10:17:04 2009 +0300
@@ -40,7 +40,7 @@
 
 //!                           5) Closing key store
 
-//!                           6) 1.0.0.0.1,Opening key store 1 in manager mode
+//!                           6) 1.0.0.0.1,Opening key store 1 in manager mode - deprecated
 
 //!                           7) 1.0.0.0.2,Opening key store 2 in manager mode
 
@@ -86,8 +86,6 @@
 
 RUN_TEST_STEP                 -1    CTestHandler        delete              
 
-RUN_TEST_STEP                 -1    CTestHandler        init                   tkeystore_useauth.ini   SEC-TKEYSTORE_USEAUTH-0001-006
-
 RUN_TEST_STEP                 -1    CTestHandler        init                   tkeystore_useauth.ini   SEC-TKEYSTORE_USEAUTH-0001-007
 
 RUN_TEST_STEP                 -1    CTestHandler        addkey                 tkeystore_useauth.ini   SEC-TKEYSTORE_USEAUTH-0001-008
@@ -484,7 +482,7 @@
 
 //!                           115) 1.2.0.68 List everything (TEST ID: GT0140-KEY001)
 
-//!                           116) 1.2.0.69.0 Closing key store 1
+//!                           116) 1.2.0.69.0 Closing key store 1 - deprecated
 
 //!                           117) 1.2.0.69.1 Closing key store 2
 
@@ -724,8 +722,6 @@
 
 RUN_TEST_STEP                 -1    CTestHandler        delete              
 
-RUN_TEST_STEP                 -1    CTestHandler        delete              
-
 RUN_TEST_STEP                 -1    CTestHandler        init                   tkeystore_useauth.ini   SEC-TKEYSTORE_USEAUTH-0004-118
 
 RUN_TEST_STEP                 -1    CTestHandler        delete              
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_addkey.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_addkey.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -85,16 +85,21 @@
 		case EAddKey:
 			{
 			CUnifiedKeyStore* keyStore = CSharedKeyStores::TheUnifiedKeyStores().operator[](iKeystore);
+			if(iKeyStoreImplLabel.Length() != 0)
+					{
+					SetKeyStoreIndex(keyStore);
+					}
+					
 			#ifdef SYMBIAN_AUTH_SERVER		
 			if(iUseNewApi)
 				{
-				keyStore->CreateKey(0, iUsage, iSize, *iLabel, iAlgorithm,
+				keyStore->CreateKey(iKeyStoreImplIndex, iUsage, iSize, *iLabel, iAlgorithm,
 												iAccessType, iStartDate, iEndDate, *iAuthExpression, iFreshness, iKeyInfo, aStatus);
 				}
 			else
 			#endif // SYMBIAN_AUTH_SERVER
 				{
-				keyStore->CreateKey(0, iUsage, iSize, *iLabel, iAlgorithm,
+				keyStore->CreateKey(iKeyStoreImplIndex, iUsage, iSize, *iLabel, iAlgorithm,
 								iAccessType, iStartDate, iEndDate, iKeyInfo, aStatus);
 
 				}			
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_import.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_import.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -30,6 +30,9 @@
 #include <x509cert.h>
 #include <x509keys.h>
 
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+#include "tcryptotokenhai.h"
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
 
 /////////////////////////////////////////////////////////////////////////////////
 // CImportKey
@@ -64,6 +67,13 @@
 		{
 		iKeyInfo->Release();
 		}
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+	if(iImportHardwareType)
+		{
+		delete iPublicKey;
+		delete iPrivateKey;
+		}
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
 }
 
 CImportKey::CImportKey(RFs& aFs,CConsoleBase& aConsole, Output& aOut) :
@@ -82,6 +92,20 @@
 	iImportFileName = HBufC8::NewL(256); // Reasonable max length of a file name
 	TPtr8 temp(iImportFileName->Des());
 	temp.Copy(Input::ParseElement(aTestActionSpec.iActionBody, KImportDataFile, KImportDataFileEnd, pos, err));
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+	if(iHardwareType)
+		{
+		TPtrC8 buffer;
+		buffer.Set(Input::ParseElement(aTestActionSpec.iActionBody, KPublicKeyStart, KPublicKeyEnd, pos, err));
+		iPublicKey = HBufC8::NewMaxL(buffer.Length());
+		TPtr8 publicKeyPtr = iPublicKey->Des();
+		publicKeyPtr.Copy(buffer);
+		buffer.Set(Input::ParseElement(aTestActionSpec.iActionBody, KPrivateKeyStart, KPrivateKeyEnd, pos, err));
+		iPrivateKey = HBufC8::NewMaxL(buffer.Length());
+		TPtr8 privateKeyPtr = iPrivateKey->Des();
+		privateKeyPtr.Copy(buffer);
+		}
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
 }
 
 void CImportKey::SetKeyDataFileL(const TDesC8& aDes)
@@ -137,7 +161,15 @@
 		{
 		case EImportKey:
 			{
-			TRAPD(result, SetKeyDataFileL(*iImportFileName));
+			TInt result = KErrNone;
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+			if(iHardwareType == 0)
+				{
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
+				TRAP(result, SetKeyDataFileL(*iImportFileName));
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+				}
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
 			if (KErrNone != result) 
 				{
 				iState = EFinished;			
@@ -147,18 +179,52 @@
 				}
                     
 			CUnifiedKeyStore* keyStore = CSharedKeyStores::TheUnifiedKeyStores().operator[](iKeystore);
-			#ifdef SYMBIAN_AUTH_SERVER
-			if(iUseNewApi)
+			if(iKeyStoreImplLabel.Length() != 0)
+				{
+				SetKeyStoreIndex(keyStore);
+				}
+			
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+			if(iHardwareType)
 				{
-				keyStore->ImportKey(0, iKeyData->Des(), iUsage, *iLabel, iAccessType,
-									TTime(0), TTime(0), *iAuthExpression, iFreshness, iKeyInfo, aStatus);
+				MCTToken* token = NULL;
+				CCryptoTokenHai* cryptoTokenHai = NULL;
+				TRAP(result, cryptoTokenHai = CCryptoTokenHai::NewL(token));
+				if (KErrNone != result) 
+                    {
+                    iState = EFinished;         
+                    TRequestStatus *status = &aStatus;
+                    User::RequestComplete(status,result);
+                    break;          
+                    }
+				TRAP(result, cryptoTokenHai->ImportKeyL(iLabel->Des(),iPrivateKey->Des(),iPublicKey->Des()));
+				                
+				TRequestStatus *status = &aStatus;
+				if (KErrNone != result) 
+                    {
+                    User::RequestComplete(status,result);
+                    }
+				else
+				    {
+				    User::RequestComplete(status, aStatus.Int());
+				    }
 				}
 			else
-			#endif // SYMBIAN_AUTH_SERVER
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
 				{
-				keyStore->ImportKey(0, iKeyData->Des(), iUsage, *iLabel, iAccessType,
-									TTime(0), TTime(0), iKeyInfo, aStatus);
-				}
+				#ifdef SYMBIAN_AUTH_SERVER
+				if(iUseNewApi)
+					{
+					keyStore->ImportKey(iKeyStoreImplIndex, iKeyData->Des(), iUsage, *iLabel, iAccessType,
+										TTime(0), TTime(0), *iAuthExpression, iFreshness, iKeyInfo, aStatus);
+					}
+				else
+				#endif // SYMBIAN_AUTH_SERVER
+					{
+					keyStore->ImportKey(iKeyStoreImplIndex, iKeyData->Des(), iUsage, *iLabel, iAccessType,
+										TTime(0), TTime(0), iKeyInfo, aStatus);
+					}
+				} // else
 			iState = EFinished;
 			}		
 			break;
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_keystore_actions.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_keystore_actions.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -91,11 +91,15 @@
 CKeyStoreTestAction::CKeyStoreTestAction(RFs& aFs, CConsoleBase& aConsole, Output& aOut) :
 	CTestAction(aConsole, aOut), 
 	iFs(aFs),
-	iDisableCheckDialog(0)
+	iDisableCheckDialog(0),
+	iKeyStoreImplIndex(0)
 #ifdef SYMBIAN_AUTH_SERVER
 	,iUseNewApi(EFalse),
 	iFreshness(0)
 #endif // SYMBIAN_AUTH_SERVER
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+	,iHardwareType(-1)
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
 	{
 	iFilter.iPolicyFilter = TCTKeyAttributeFilter::EAllKeys;
 	}
@@ -113,6 +117,8 @@
 	
 	SetKeyLabel(Input::ParseElement(aTestActionSpec.iActionBody, KKeyLabelStart));
 	SetKeyAlgorithm(Input::ParseElement(aTestActionSpec.iActionBody, KKeyAlgorithmStart));
+	SetKeyType(Input::ParseElement(aTestActionSpec.iActionBody, KOpenStart, KOpenEnd));
+	
 	pos = 0;
 	while (SetKeyAccessType(Input::ParseElement(aTestActionSpec.iActionBody, KKeyAccessTypeStart, KKeyAccessTypeEnd, pos)))
 		/* do nothing */;
@@ -124,6 +130,9 @@
 	
 	iDisableCheckDialog = Input::ParseIntElement(aTestActionSpec.iActionBody, KDisableDialogStart, KDisableDialogEnd, pos);
 
+	pos = 0;
+	iKeyStoreImplLabel.Set(Input::ParseElement(aTestActionSpec.iActionBody, KUseKeyStoreStart, KUseKeyStoreEnd, pos));
+	
 #ifdef SYMBIAN_AUTH_SERVER
 	TPtrC8 authExpr;
 	TInt authExprPresent = KErrNone;
@@ -158,6 +167,10 @@
 		
 #endif // SYMBIAN_AUTH_SERVER
 	
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+	iHardwareType = Input::ParseIntElement(aTestActionSpec.iActionBody, KHwTypeStart, KHwTypeEnd, pos);
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
+	
 	}
 
 TBool CKeyStoreTestAction::AddExpectedDialogL(const TDesC8& aData)
@@ -461,6 +474,25 @@
 	return ret;
 	}
 
+void CKeyStoreTestAction::SetKeyStoreIndex(CUnifiedKeyStore* aUnifiedKeyStore)
+	{
+	TInt keyStoreCount = aUnifiedKeyStore->KeyStoreManagerCount();
+	for(int index = 0 ; index<keyStoreCount; ++index)
+		{
+		MCTKeyStoreManager& mctKeyStoreMngr = aUnifiedKeyStore->KeyStoreManager(index);
+		const TDesC16& label = mctKeyStoreMngr.Token().Label();
+		TBuf<50> keyStoreLabel;
+		keyStoreLabel.Copy(iKeyStoreImplLabel);
+		if(label.Compare(keyStoreLabel) == 0 )
+			{
+			iKeyStoreImplIndex = index;
+			break;
+			}
+		}
+	
+	}
+
+
 void CKeyStoreTestAction::DoPerformPrerequisite(TRequestStatus& aStatus)
 	{
 	TInt err = KErrNone;
@@ -621,6 +653,32 @@
 	iOut.writeNewLine();
 	}
 
+void CKeyStoreTestAction::SetKeyType(const TDesC8& aKeyType)
+{
+	if (aKeyType.Compare(KAlgRSA)==0)
+	{
+		iType = ERSASign;
+	}
+	else if (aKeyType.Compare(KAlgDSA)==0)
+	{
+		iType = EDSASign;
+	}
+	else if (aKeyType.Compare(KDecryptUsage)==0)
+	{
+		iType = EDecrypt;
+	}
+	else if (aKeyType.Compare(KAlgDH)==0)
+	{
+		iType = EDH;
+	}
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+    else if (aKeyType.Compare(KAlgEcc)==0)
+        {
+        iType = EECC;
+        }
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
+}
+
 /////////////////////////////////////////////////////////////////
 //CInitialiseKeyStore::
 ///////////////////////////////////////////////////////////////////
@@ -646,7 +704,7 @@
 }
 
 CInitialiseKeyStore::~CInitialiseKeyStore()
-{
+	{
 	delete iNewUnifiedKeyStore;
 	if (iKeyStoreLabel)
 	    {
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_keystore_actions.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_keystore_actions.h	Mon Oct 12 10:17:04 2009 +0300
@@ -30,7 +30,7 @@
 #include <badesca.h>
 #include "t_testaction.h"
 #include "t_output.h"
-#include <clientsession.h>
+#include "clientsession.h"
 #include <hash.h>
 #include <mctkeystore.h>
 #include <unifiedkeystore.h>
@@ -84,7 +84,20 @@
 							const TDesC& aResponse1, const TDesC& aResponse2);
 	TInt ReadDialogCountL();
 	void PrintKeyInfoL(const CCTKeyInfo& aKey);
-
+	void SetKeyType(const TDesC8& aKeyType);
+	void SetKeyStoreIndex(CUnifiedKeyStore* aUnifiedKeyStore);
+	
+public:
+	enum TKeyTypes
+		{
+		ERSASign,
+		EDSASign,
+		EDH,
+		EDecrypt,
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+		EECC,
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
+		};
 protected:
 	TUint iServerAlloc;
 	RFs& iFs;
@@ -99,7 +112,10 @@
 	TCTKeyAttributeFilter iFilter;
 	RMPointerArray<CCTKeyInfo> iKeys;
 	TInt iDisableCheckDialog;
-
+	TKeyTypes iType;
+	TInt iKeyStoreImplIndex;
+	TPtrC8 iKeyStoreImplLabel;
+	
 #ifdef SYMBIAN_AUTH_SERVER
 	// this variable would be used to retrieve the rom build variant 
 	// for key store.
@@ -108,6 +124,9 @@
 	TInt iFreshness;
 	TInt iDeauthenticate;
 #endif // SYMBIAN_AUTH_SERVER
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+	TInt iHardwareType;
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
 };
 
 class CInitialiseKeyStore : public CKeyStoreTestAction
@@ -258,6 +277,7 @@
 	void ConstructL(const TTestActionSpec& aTestActionSpec);
 	void SetKeySize(const TDesC8& aKeySize);
 	void SetListCount(const TDesC8& aListCount);
+	void SetListStatus(const TDesC8& aListStatus);
 	void AddFoundKeyL(const TDesC8& aFoundKey);
 private:	
 	enum TState
@@ -274,6 +294,7 @@
 	// Filter componenets
 	TUint iSize;
 	CCTKeyInfo::EKeyAccess iAccessType;
+	TDesC8* iListStatus;
 };
 
 /**
@@ -378,6 +399,11 @@
 	HBufC8*  iImportFileName;
 	HBufC8* iKeyData;
 	CCTKeyInfo* iKeyInfo;
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+	TUint iImportHardwareType;
+	HBufC8* iPublicKey;
+	HBufC8* iPrivateKey;
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
 private:
 	enum TState
 		{
@@ -552,8 +578,7 @@
 	void DoCheckResult(TInt aError);
 	COpenKey(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
 	void ConstructL(const TTestActionSpec& aTestActionSpec);
-	void SetKeyType(const TDesC8& aKeyType);
-private:
+
 private:	
 	enum TState
 		{
@@ -561,25 +586,27 @@
 		EOpenKey,
 		EFinished
 		};
-
-	enum TKeyTypes
+	
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+	enum TOperationType
 		{
-		ERSASign,
-		EDSASign,
-		EDH,
-		EDecrypt
+		ESigning,
+		EDecryption,
 		};
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
 private:
 	TState iState;
-
-	TKeyTypes iType;
-
 	TCTTokenObjectHandle iDeleteHandle;
 //	Filter components
 	MRSASigner* iRSASigner;
 	MDSASigner* iDSASigner;
 	MCTDecryptor* iDecryptor;
 	MCTDH* iDH;
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+	TOperationType iOperationType;
+	CryptoSpi::CSigner* iSigner;
+	CryptoSpi::CAsymmetricCipher* iDecrypt;
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
 };
 
 //	Allows script to sign, filter on keys algorithm (or all) and deletes listed keys
@@ -600,8 +627,8 @@
 	void ConstructL(const TTestActionSpec& aTestActionSpec);
 private:
 	void SetSignText(const TDesC8&);
-	void SetKeyType(const TDesC8& aKeyType);
 	void SetDigestSignL(const TDesC8&);
+	
 private:	
 	enum TState
 		{
@@ -610,20 +637,16 @@
 		ESign,
 		EExportPublic,
 		EVerify,
-		EFinished
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+		ESignInHardware,
+		EVerifyHwSignature,
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
+		EFinished,
 		};
 
-	enum TKeyTypes
-		{
-		ERSASign,
-		EDSASign,
-		EDH,
-		EDecrypt
-		};
 private:
 	TState iState;
 	TBool iVerifyResult;
-	TKeyTypes iType;
 	TCTTokenObjectHandle iExportHandle;
 //	Filter components
 	HBufC8* iReadText;		//	Text to sign, read in from script
@@ -635,8 +658,13 @@
 	CDSASignature* iDSASignature;
 	CRSASignature* iRSASignature;
 	CMessageDigest* iHash;
-	TBool iFailHashDigest;	//	Should hash the digest beforehand, but doesn't
-};							//	to test failure mode
+	TBool iFailHashDigest;	//	Should hash the digest beforehand, but doesn't to test failure mode
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+	CryptoSpi::CSigner* iSigner;
+	CryptoSpi::CCryptoParams* iSpiSignature;
+	TCTTokenObjectHandle iTokenHandle;
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
+};							
 
 class CDecrypt : public CKeyStoreTestAction
 {
@@ -676,6 +704,9 @@
 	TPtr8 iPlainTextPtr;
 	MCTDecryptor* iDecryptor;
 	HBufC8* iPublic;
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+	CryptoSpi::CAsymmetricCipher* iDecrypt;
+#endif
 };
 
 class CDHKeyPair;
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_keystore_defs.h	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_keystore_defs.h	Mon Oct 12 10:17:04 2009 +0300
@@ -140,6 +140,9 @@
 _LIT8(KAlgRSA, "RSA");
 _LIT8(KAlgDSA, "DSA");
 _LIT8(KAlgDH, "DH");
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+_LIT8(KAlgEcc,"ECC");
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
 _LIT8(KAlgBAD, "BAD");
 
 _LIT8(KKeyExportableStart, "<keyexportable>");
@@ -310,6 +313,14 @@
 _LIT8(KDisableDialogStart, "<disabledialogcheck>");
 _LIT8(KDisableDialogEnd, "</disabledialogcheck>");
 
+_LIT8(KListingStatusStart,"<listingstatus>");
+_LIT8(KListingStatusEnd,"</listingstatus>");
+_LIT8(KErrListingFailure,"fail");
+_LIT8(KErrListingSuccess,"pass");
+
+_LIT8(KUseKeyStoreStart,"<usekeystore>");
+_LIT8(KUseKeyStoreEnd,"</usekeystore>");
+
 #ifdef SYMBIAN_AUTH_SERVER
 // tags for authentication expression
 _LIT8(KAuthExpressionStart, "<authexpression>");
@@ -339,4 +350,16 @@
 
 #endif // SYMBIAN_AUTH_SERVER
 
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+_LIT8(KHwTypeStart, "<hwtype>");
+_LIT8(KHwTypeEnd, "</hwtype>");
+_LIT8(KPublicKeyStart, "<publickey>");
+_LIT8(KPublicKeyEnd, "</publickey>");
+_LIT8(KPrivateKeyStart, "<privatekey>");
+_LIT8(KPrivateKeyEnd, "</privatekey>");
+_LIT8(KOperationTypeStart, "<operationtype>");
+_LIT8(KOperationTypeEnd, "</operationtype>");
+
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
+
 #endif	//	__T_TCERTSTOREDEFS_H__
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_list.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_list.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -50,6 +50,7 @@
 	{
 	iKeys.Close();
 	iKeysToFind.Close();
+	delete iListStatus;
 	}
 
 CListKeys::CListKeys(RFs& aFs, CConsoleBase& aConsole, Output& aOut)
@@ -77,7 +78,7 @@
 	buf.Set(Input::ParseElement(aTestActionSpec.iActionBody, KListCountStart, KListCountEnd, pos, err));
 	if (err == KErrNone)
 		SetListCount(buf);
-
+	
 	do
 		{
 		buf.Set(Input::ParseElement(aTestActionSpec.iActionBody, 
@@ -86,6 +87,13 @@
 			AddFoundKeyL(buf);
 		} 
 	while (err == KErrNone);
+	
+	// set default outcome as success for listing keys
+	SetListStatus(KErrListingSuccess);
+	buf.Set(Input::ParseElement(aTestActionSpec.iActionBody, KListingStatusStart, KListingStatusEnd, pos, err ));
+		if (err == KErrNone)
+			SetListStatus(buf);
+
 }
 
 
@@ -103,6 +111,16 @@
 	lexer.Val(iResultCount);
 	}
 
+void CListKeys::SetListStatus(const TDesC8& aListStatus)
+	{
+	if(iListStatus != NULL)
+		{
+		delete iListStatus;
+		iListStatus = NULL;
+		}
+	iListStatus = aListStatus.AllocL();
+	}
+
 void CListKeys::AddFoundKeyL(const TDesC8& aFoundKey)
 	{
 	HBufC* buf = HBufC::NewLC(aFoundKey.Length());
@@ -128,16 +146,22 @@
 			{
 			TRequestStatus* status = &aStatus;
 			User::RequestComplete(status, aStatus.Int());
-			if (aStatus == iExpectedResult && (iResultCount < 0 ||
-											   iResultCount == iKeys.Count()))
+			if( iListStatus->Compare(KErrListingFailure) == 0 )
 				{
 				iResult = ETrue;
 				}
 			else
 				{
-				iResult = EFalse;
+				if (aStatus == iExpectedResult && (iResultCount < 0 ||
+												   iResultCount == iKeys.Count()))
+					{
+					iResult = ETrue;
+					}
+				else
+					{
+					iResult = EFalse;
+					}
 				}
-			
 			iActionState = EPostrequisite;				
 			}
 		}
@@ -205,7 +229,7 @@
 				iOut.writeNewLine();
 
 				TRAPD(err,PrintKeyInfoL(*iKeys[i])); 
-				_LIT(KFailed, "!!!Key listing failure!!!\n");
+				_LIT(KFailed, "!!!Key listing success!!!\n");
 				iConsole.Write(KFailed);
 				iOut.writeString(KFailed);
 				iOut.writeNum(err);
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_open.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_open.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -26,6 +26,13 @@
 #include <x509keys.h>
 #include <asymmetrickeys.h>
 
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+#include <cryptospidef.h>
+#include "cryptoasymmetriccipherapi.h"
+#include "cryptosignatureapi.h"
+#include <cryptospi/cryptoparams.h>
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC && SYMBIAN_ENABLE_SDP_ECC
+
 /*static*/ CTestAction* COpenKey::NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec)
 {
 	CTestAction* self = COpenKey::NewLC(aFs, aConsole, aOut, aTestActionSpec);
@@ -43,6 +50,10 @@
 
 COpenKey::~COpenKey()
 {
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+    delete iSigner;
+    delete iDecrypt;
+#endif
 	iKeys.Close();
 }
 
@@ -67,8 +78,8 @@
 			ASSERT(keyStore);	//	Flag it up
 			
 			TInt keyCount = iKeys.Count();
-
 			TInt i;
+			
 			for (i = 0; i < keyCount; i++)
 				{
 				CCTKeyInfo* keyInfo = iKeys[i];
@@ -89,61 +100,97 @@
 					case EDH:
 						keyStore->Open(*keyInfo, iDH, aStatus);
 						break;
+					#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+					case EECC:
+						{
+						ASSERT(iHardwareType);
+						if(iOperationType == ESigning)
+							{
+							keyStore->Open(keyInfo->Handle(),iSigner,aStatus);
+							}
+						if(iOperationType == EDecryption)
+							{
+							keyStore->Open(keyInfo->Handle(),iDecrypt,aStatus);
+							}
+						break;
+						}
+					#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
 						}
 					break;
 					}
 				}
-			iState = EFinished;
 			if (i == keyCount)
 				{
 				TRequestStatus* status = &aStatus;
 				User::RequestComplete(status, KErrNotFound);
 				}
+				
+			iState = EFinished;
+			
 		}
 		break;
 
 		case EFinished:
 			{
+			TInt completionCode = aStatus.Int();
 			HBufC* label = 0;
 			iKeys.Close();
 			if (aStatus.Int() == KErrNone)
 				{
 				switch (iType)
 					{
-				case ERSASign:
-					if (iRSASigner)
+					case ERSASign:
+						if (iRSASigner)
+							{
+							label = iRSASigner->Label().AllocLC();
+							iRSASigner->Release();
+							}
+						break;
+					case EDSASign:
+						if (iDSASigner)
+							{
+							label = iDSASigner->Label().AllocLC();
+							iDSASigner->Release();
+							}
+						break;
+					case EDecrypt:
+						if (iDecryptor)
+							{
+							label = iDecryptor->Label().AllocLC();
+							iDecryptor->Release();
+							}
+					case EDH:
+						if (iDH)
+							{
+							label = iDH->Label().AllocLC();
+							iDH->Release();
+							}
+						break;
+	#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+					case EECC:
 						{
-						label = iRSASigner->Label().AllocLC();
-						iRSASigner->Release();
-						}
-					break;
-				case EDSASign:
-					if (iDSASigner)
-						{
-						label = iDSASigner->Label().AllocLC();
-						iDSASigner->Release();
+						ASSERT(iHardwareType);
+						if(iOperationType == ESigning && iSigner == NULL
+								|| iOperationType == EDecryption && iDecrypt == NULL)
+							{
+							completionCode = KErrGeneral;
+							}
+						break;
 						}
-					break;
-				case EDecrypt:
-					if (iDecryptor)
-						{
-						label = iDecryptor->Label().AllocLC();
-						iDecryptor->Release();
-						}
-				case EDH:
-					if (iDH)
-						{
-						label = iDH->Label().AllocLC();
-						iDH->Release();
-						}
-					break;
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
+				} // switch
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+				if(iHardwareType == 0)
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
+					{
+					if (*label != *iLabel)
+						aStatus = KErrBadName;
+					CleanupStack::PopAndDestroy(label);
 					}
-				if (*label != *iLabel)
-					aStatus = KErrBadName;
-				CleanupStack::PopAndDestroy(label);
 				}
 			TRequestStatus* status = &aStatus;
-			User::RequestComplete(status, aStatus.Int());
+			User::RequestComplete(status, completionCode);
+
 			if (aStatus.Int()==iExpectedResult)
 				{
 				iResult = ETrue;
@@ -206,6 +253,12 @@
 		iDH->Release();
 		iDH = NULL;
 		}
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+    delete iSigner;
+    iSigner = NULL;
+    delete iDecrypt;
+    iDecrypt = NULL;
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
 	}
 
 void COpenKey::DoReportAction()
@@ -257,30 +310,23 @@
 	{
 	TInt pos = 0, err = 0;
 	CKeyStoreTestAction::ConstructL(aTestActionSpec);
-	SetKeyType(Input::ParseElement(aTestActionSpec.iActionBody, KOpenStart, KOpenEnd, pos, err));
+	
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+	pos = 0;
+	TPtrC8 operationType = Input::ParseElement(aTestActionSpec.iActionBody, KOperationTypeStart, KOperationTypeEnd, pos, err);
+	if(operationType.Compare(_L8("sign")) == 0)
+		{
+		iOperationType = ESigning;
+		}
+	else if (operationType.Compare(_L8("decrypt")) == 0)
+		{
+		iOperationType = EDecryption;
+		}
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
+	
 	iState = EListKeysPreOpen;
 
 	}
-void COpenKey::SetKeyType(const TDesC8& aKeyType)
-{
-	if (aKeyType.Compare(KAlgRSA)==0)
-	{
-		iType = ERSASign;
-	}
-	else if (aKeyType.Compare(KAlgDSA)==0)
-	{
-		iType = EDSASign;
-	}
-	else if (aKeyType.Compare(KDecryptUsage)==0)
-	{
-		iType = EDecrypt;
-	}
-	else if (aKeyType.Compare(KAlgDH)==0)
-	{
-		iType = EDH;
-	}
-}
-
 
 ////////////////////////////////////
 // CSign
@@ -308,6 +354,10 @@
 	delete iRSASignature;
 	delete iDSASignature;
 	delete iHash;
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+    delete iSigner;
+    delete iSpiSignature;
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
 }
 
 void CSign::PerformAction(TRequestStatus& aStatus)
@@ -319,34 +369,33 @@
 		}
 		
 	switch (iState)
-	{	
+		{	
 		case EListKeysPreOpen:
-		{            
+			{            
 			CUnifiedKeyStore* keyStore = CSharedKeyStores::TheUnifiedKeyStores().operator[](iKeystore);
 			ASSERT(keyStore);	//	Flag it up
 			if (keyStore)
 				keyStore->List(iKeys, iFilter, aStatus);
-			
 			iState = EOpenKey;
-		}
-		break;
+
+			}
+			break;
 		
 		case EOpenKey:
-		{
+			{
 			CUnifiedKeyStore* keyStore = CSharedKeyStores::TheUnifiedKeyStores().operator[](iKeystore);
-				ASSERT(keyStore);	//	Flag it up
-				
-				TInt keyCount = iKeys.Count();
+			ASSERT(keyStore);	//	Flag it up
+            TInt keyCount = iKeys.Count();
 
-				TInt i;
-				for (i = 0; i < keyCount; i++)
-					{
-					CCTKeyInfo* keyInfo = iKeys[i];
+            TInt i;
+            for (i = 0; i < keyCount; i++)
+                {
+                CCTKeyInfo* keyInfo = iKeys[i];
 
-					if (keyInfo->Label() == *iLabel)
-						{
-						switch (iType)
-							{
+                if (keyInfo->Label() == *iLabel)
+                    {
+                    switch (iType)
+                        {
 						case ERSASign:
 							keyStore->Open(*keyInfo, iRSASigner, aStatus);
 							break;
@@ -356,17 +405,34 @@
 						case EDH:
 						case EDecrypt:
 							break;	//	Nothing to do, for the compiler
+						
+						#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+						case EECC:
+							{
+							iTokenHandle = keyInfo->Handle();
+							if(iHardwareType == 0)
+								{
+								keyStore->Open(iTokenHandle, iSigner, aStatus);
+								}
+							else
+								{
+								TRequestStatus* status = &aStatus;
+								User::RequestComplete(status, KErrNone);
+								}
 							}
-						break;
-						}
-					}
-				iState = ESign;
-				if (i == keyCount)
+							break;
+						#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
+                        }
+                    } // if
+                if (i == keyCount)
 					{
 					TRequestStatus* status = &aStatus;
 					User::RequestComplete(status, KErrNotFound);
-					}					
-				}
+					}		
+                }// for
+			iState = ESign;
+						
+		}
 		break;
 
 		case ESign:
@@ -403,6 +469,39 @@
 					}
 				}
 				break;
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+                case EECC:
+                    {
+                    TRAPD(err, iSpiSignature = CryptoSpi::CCryptoParams::NewL());
+                    if(err == KErrNone)
+                        {
+                        if(iHardwareType)
+                            {
+                            CUnifiedKeyStore* keyStore = CSharedKeyStores::TheUnifiedKeyStores().operator[](iKeystore);
+                            ASSERT(keyStore);   //  Flag it up
+                            keyStore->Sign(iTokenHandle, *iReadText, iSpiSignature, aStatus);
+                            }
+                        else
+                            {
+                            if(iSigner)
+                                {
+                                TRAP(err, iSigner->SignL(*iReadText, *iSpiSignature));
+                                aStatus = err;
+                                }
+                            TRequestStatus* status = &aStatus;
+                            User::RequestComplete(status, aStatus.Int());
+                            }
+                        }
+                    else
+                        {
+                        aStatus = err;
+                        TRequestStatus* status = &aStatus;
+                        User::RequestComplete(status, aStatus.Int());
+                        }
+                    }
+                break;
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
+
 				default:
 					ASSERT(EFalse);
 			}					
@@ -410,10 +509,12 @@
 		}
 		break;
 
+	
 		case EExportPublic:
 			{
 			CUnifiedKeyStore* keyStore = CSharedKeyStores::TheUnifiedKeyStores().operator[](iKeystore);
-			ASSERT(keyStore);	//	Flag it up				
+			ASSERT(keyStore);   //  Flag it up              
+
 			TInt keyCount = iKeys.Count();
 			TInt i;
 			for (i = 0; i < keyCount; i++)
@@ -426,15 +527,23 @@
 
 					switch (iType)
 						{
-					case ERSASign:
-						keyStore->ExportPublic(iExportHandle, iExportedPublicKey,  aStatus);
-						break;
-					case EDSASign:
-						keyStore->ExportPublic(iExportHandle, iExportedPublicKey,  aStatus); 
-						break;
-					case EDH:
-					case EDecrypt:
-						break;	//	Nothing to do, for the compiler
+						case ERSASign:
+							keyStore->ExportPublic(iExportHandle, iExportedPublicKey,  aStatus);
+							break;
+						case EDSASign:
+							keyStore->ExportPublic(iExportHandle, iExportedPublicKey,  aStatus); 
+							break;
+						case EDH:
+						case EDecrypt:
+							break;	//	Nothing to do, for the compiler
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+						case EECC:
+							{
+							keyStore->ExportPublic(iExportHandle, iExportedPublicKey, aStatus);
+							iState = EVerify;
+							}
+							break;
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
 						}
 					break;
 					}
@@ -459,8 +568,11 @@
 				if (keyInfo->Label() == *iLabel)
 					{
 					iExportHandle = keyInfo->Handle();
-					CX509SubjectPublicKeyInfo* ki = 
-						CX509SubjectPublicKeyInfo::NewLC(*iExportedPublicKey);
+					CX509SubjectPublicKeyInfo* ki = NULL;
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+					if(iType != EECC)
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
+						ki = CX509SubjectPublicKeyInfo::NewLC(*iExportedPublicKey);
 
 					switch (iType)
 						{
@@ -514,13 +626,44 @@
 						CleanupStack::PopAndDestroy(key);
 						}
 						break;
+				
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+					case EECC:
+						{
+						iVerifyResult = EFalse;
+						if (iSpiSignature && iSpiSignature->IsPresent(CryptoSpi::KEccKeyTypeUid))
+							{
+							TDesC8* actualSignature = NULL;
+							TRAPD(err, actualSignature = const_cast<TDesC8*>(&(iSpiSignature->GetTDesC8L(CryptoSpi::KEccKeyTypeUid))));
+							if(err == KErrNone)
+							    {
+							    if(iExportedPublicKey->Des() == *actualSignature)
+							        {
+							        iVerifyResult = ETrue;
+							        }
+							    }
+							else
+							    {
+							    aStatus = err;
+							    }
+							}
+						_LIT(KReturned, "Returned... ");
+						iOut.writeString(KReturned);
+						iOut.writeNewLine();
+						}
+					break;
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC	
 					default:
 						ASSERT(EFalse);
 
 						}
-					CleanupStack::PopAndDestroy(ki);
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+					if(iType != EECC)
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
+						CleanupStack::PopAndDestroy(ki);
 					}
 				}
+
 			iState = EFinished;
 			TRequestStatus* status = &aStatus;
 			if (!iVerifyResult)		
@@ -535,7 +678,7 @@
 					aStatus = KErrGeneral;
 					}
 				}
-			User::RequestComplete(status, aStatus.Int());					
+			User::RequestComplete(status, aStatus.Int());
 			}
 			break;
 		
@@ -576,7 +719,6 @@
 		default:
 			ASSERT(EFalse);	
 	}
-
 }
 
 void CSign::PerformCancel()
@@ -641,6 +783,12 @@
 	iRSASignature = NULL;
 	delete iDSASignature;
 	iDSASignature = NULL;
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+	delete iSigner;
+	iSigner = NULL;
+	delete iSpiSignature;
+	iSpiSignature = NULL;
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
 	}
 
 void CSign::DoReportAction()
@@ -693,34 +841,13 @@
 {
 	CKeyStoreTestAction::ConstructL(aTestActionSpec);
 
-	SetKeyType(Input::ParseElement(aTestActionSpec.iActionBody, KOpenStart));	
 	SetDigestSignL(Input::ParseElement(aTestActionSpec.iActionBody, KSignDigestStart));
 	SetSignText(Input::ParseElement(aTestActionSpec.iActionBody, KTextStart, KTextEnd));
 
 	iFilter.iPolicyFilter = TCTKeyAttributeFilter::EAllKeys;
 	
 	iState = EListKeysPreOpen;
-}
-
-
-void CSign::SetKeyType(const TDesC8& aKeyType)
-{
-	if (aKeyType.Compare(KAlgRSA)==0)
-	{
-		iType = ERSASign;
-	}
-	else if (aKeyType.Compare(KAlgDSA)==0)
-	{
-		iType = EDSASign;
-	}
-	else if (aKeyType.Compare(KDecryptUsage)==0)
-	{
-		iType = EDecrypt;
-	}
-	else if (aKeyType.Compare(KAlgDH)==0)
-	{
-		iType = EDH;
-	}
+		
 }
 
 void CSign::SetDigestSignL(const TDesC8& aSignDigestDesc)
@@ -771,6 +898,9 @@
 	delete iReadText;
 	delete iPlainText;
 	delete iPublic;
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+    delete iDecrypt;
+#endif
 }
 
 void CDecrypt::PerformAction(TRequestStatus& aStatus)
@@ -784,23 +914,22 @@
 	switch (iState)
 	{	
 		case EListKeysPreOpen:
-		{//	Currently uses the first store, change to check the script for a specific store
+			{//	Currently uses the first store, change to check the script for a specific store
 			CUnifiedKeyStore* keyStore = CSharedKeyStores::TheUnifiedKeyStores().operator[](iKeystore);
 			ASSERT(keyStore);	//	Flag it up
 			if (keyStore)
 				keyStore->List(iKeys, iFilter, aStatus);
-			
+				
 			iState = EOpenKey;
-		}
+			}
 		break;
 		
 		case EOpenKey:
 		{
 			CUnifiedKeyStore* keyStore = CSharedKeyStores::TheUnifiedKeyStores().operator[](iKeystore);
 			ASSERT(keyStore);	//	Flag it up
-			
+
 			TInt keyCount = iKeys.Count();
-
 			TInt i;
 			for (i = 0; i < keyCount; i++)
 				{
@@ -808,10 +937,33 @@
 
 				if (keyInfo->Label() == *iLabel)
 					{
-					keyStore->Open(*keyInfo, iDecryptor, aStatus);
+					switch(iType)
+						{
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+						case EECC:
+						if(iHardwareType == 0)
+							{
+							keyStore->Open(keyInfo->Handle(), iDecrypt, aStatus);
+							}
+						else if(iHardwareType == 1 )
+							{
+							/**
+							 * Call the decrypt of hardware directly. iPlainText 
+							 * would be populated.
+							 */
+							keyStore->Decrypt(keyInfo->Handle(), *iReadText, iPlainText, aStatus);
+							}
+						break;
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
+					default:
+						{
+						keyStore->Open(*keyInfo, iDecryptor, aStatus);
+						}
+					} // switch
 					break;
-					}
-				}
+					} // if
+				} // for
+			
 			iState = EExportPublic;
 			if (i == keyCount)
 				{
@@ -837,10 +989,10 @@
 
 			CUnifiedKeyStore* keyStore = CSharedKeyStores::TheUnifiedKeyStores().operator[](iKeystore);
 			ASSERT(keyStore);	//	Flag it up
-			
+
 			TInt keyCount = iKeys.Count();
-
 			TInt i;
+			
 			for (i = 0; i < keyCount; i++)
 				{
 				CCTKeyInfo* keyInfo = iKeys[i];
@@ -872,52 +1024,121 @@
 				User::RequestComplete(status, aStatus.Int());
 				break;
 				}
-
-			CX509SubjectPublicKeyInfo* ki = 
-				CX509SubjectPublicKeyInfo::NewLC(*iPublic);
-
-			TX509KeyFactory factory; 
-			CRSAPublicKey* key = factory.RSAPublicKeyL(ki->KeyData());
-			CleanupStack::PushL(key);
-						
-		//	Encrypt with public key
-			CRSAPKCS1v15Encryptor* encryptor = CRSAPKCS1v15Encryptor::NewLC(*key);
-			HBufC8* cipherText = HBufC8::NewLC(encryptor->MaxOutputLength());
-			TPtr8 cipherTextPtr = cipherText->Des();
+			switch(iType)
+				{
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+				case EECC:
+					{
+					if(iHardwareType)
+						{
+						if(*iPlainText == *iPublic)
+							{
+							aStatus = KErrNone;
+							}
+						else
+							{
+							aStatus = KErrGeneral;
+							}
+						}
+					else
+						{
+                        aStatus = KErrGeneral;
+                        if (iDecrypt)
+                            {
+                            HBufC8* decryptedText = NULL;
+                            TRAPD(err, decryptedText = HBufC8::NewL(iDecrypt->GetMaximumOutputLengthL()));
+                            
+                            if (err == KErrNone)
+                                {
+                                CleanupStack::PushL(decryptedText);
+                                TPtr8 decryptedTextPtr = decryptedText->Des();
 
-			encryptor->EncryptL(*iReadText, cipherTextPtr);
-			
-		//	Now decrypt again
-			iPlainText = HBufC8::NewMaxL(100);
-			iPlainTextPtr.Set(iPlainText->Des());
-			iDecryptor->Decrypt(*cipherText, iPlainTextPtr, aStatus);
-			
-			CleanupStack::PopAndDestroy(cipherText);
-			CleanupStack::PopAndDestroy(encryptor);
-			CleanupStack::PopAndDestroy(key);
-			CleanupStack::PopAndDestroy(ki);
-			
-			iState = EFinished;
-			}
-			break;
+                                TRAP(err, (iDecrypt->ProcessL(*iReadText, decryptedTextPtr)));
+                                if(err != KErrNone)
+                                    {
+                                    aStatus = err;
+                                    }
+                                if ((err == KErrNone) && (decryptedTextPtr
+                                        == iPublic->Des()))
+                                    {
+                                    aStatus = KErrNone;
+                                    }
+                                CleanupStack::PopAndDestroy(decryptedText);
+                                }
+                            else
+                                {
+                                aStatus = err;
+                                }
+                            }
+                        }
+					iState = EFinished;
+					TRequestStatus* status = &aStatus;
+					User::RequestComplete(status, aStatus.Int());
+					}
+					break;
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
+				default:
+					{
+					CX509SubjectPublicKeyInfo* ki = 
+						CX509SubjectPublicKeyInfo::NewLC(*iPublic);
+		
+					TX509KeyFactory factory; 
+					CRSAPublicKey* key = factory.RSAPublicKeyL(ki->KeyData());
+					CleanupStack::PushL(key);
+								
+				//	Encrypt with public key
+					CRSAPKCS1v15Encryptor* encryptor = CRSAPKCS1v15Encryptor::NewLC(*key);
+					HBufC8* cipherText = HBufC8::NewLC(encryptor->MaxOutputLength());
+					TPtr8 cipherTextPtr = cipherText->Des();
+		
+					encryptor->EncryptL(*iReadText, cipherTextPtr);
+					
+				//	Now decrypt again
+					iPlainText = HBufC8::NewMaxL(100);
+					iPlainTextPtr.Set(iPlainText->Des());
+					iDecryptor->Decrypt(*cipherText, iPlainTextPtr, aStatus);
+					
+					CleanupStack::PopAndDestroy(cipherText);
+					CleanupStack::PopAndDestroy(encryptor);
+					CleanupStack::PopAndDestroy(key);
+					CleanupStack::PopAndDestroy(ki);
+					
+					iState = EFinished;
+					}
+				} // switch
+		}
+		break;
 
 		case EFinished:
 			{
-			if (aStatus == KErrNone && (!iPlainText || 
-										*iPlainText != *iReadText))
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+			if(iType == EECC)
 				{
-				aStatus = KErrGeneral;	//	Decryption failed
+				iActionState = EPostrequisite;
+				iResult = (aStatus.Int() == iExpectedResult);
+					
+				TRequestStatus* status = &aStatus;
+				User::RequestComplete(status, aStatus.Int());
 				}
-			
-			iActionState = EPostrequisite;
-			iResult = (aStatus.Int() == iExpectedResult);
-			
-			if (iDecryptor)
+			else
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
 				{
-				iDecryptor->Release();
+				if (aStatus == KErrNone && (!iPlainText || 
+											*iPlainText != *iReadText))
+					{
+					aStatus = KErrGeneral;	//	Decryption failed
+					}
+				
+				iActionState = EPostrequisite;
+				iResult = (aStatus.Int() == iExpectedResult);
+				
+				if (iDecryptor)
+					{
+					iDecryptor->Release();
+					}
+				TRequestStatus* status = &aStatus;
+				User::RequestComplete(status, aStatus.Int());
 				}
-			TRequestStatus* status = &aStatus;
-			User::RequestComplete(status, aStatus.Int());
 		}
 		break;
 		default:
@@ -968,16 +1189,18 @@
 	iPlainText = NULL;
 	delete iPublic;
 	iPublic = NULL;
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+    delete iDecrypt;
+    iDecrypt = NULL;
+#endif
 	}
 
 void CDecrypt::DoReportAction()
-{
+	{
 	_LIT(KSigning, "Decrypting... ");
 	iOut.writeString(KSigning);
 	iOut.writeNewLine();
-//	iOut.writeString(*iReadText);
-//	iOut.writeNewLine();
-}
+	}
 
 void CDecrypt::DoCheckResult(TInt aError)
 {
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/tkeystore.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/tkeystore.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -21,6 +21,8 @@
 @SYMPurpose t_keystore.exe Test harness for keystore
 */
 
+MACRO ALTERNATE=1
+
 TARGET	t_keystore.exe
 TARGETTYPE	exe
 
@@ -59,14 +61,31 @@
 #endif // SYMBIAN_AUTH_SERVER
 
 USERINCLUDE ../../../../cryptomgmtlibs/securitytestfw/test/testhandler2
+USERINCLUDE ../../../../cryptomgmtlibs/securitytestfw/inc
 USERINCLUDE ../tfiletokens
 
-SYSTEMINCLUDE ../../../../crypto/weakcrypto/inc
-SYSTEMINCLUDE ../../source/generic/client 
-SYSTEMINCLUDE ../../source/generic/common
-SYSTEMINCLUDE /epoc32/include
-SYSTEMINCLUDE /epoc32/include/ecom
-SYSTEMINCLUDE ../../Inc
+USERINCLUDE ../../../../crypto/weakcrypto/inc
+USERINCLUDE ../../source/generic/client 
+USERINCLUDE ../../source/generic/common
+USERINCLUDE ../../Inc
+
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+USERINCLUDE ../tcryptotokenhai
+USERINCLUDE	../../../../crypto/weakcryptospi/inc
+USERINCLUDE	../../../../crypto/weakcryptospi/inc/spi
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
+
+USERINCLUDE ../../../../crypto/weakcrypto/inc
+USERINCLUDE ../../source/generic/client
+USERINCLUDE ../../source/generic/common
+OS_LAYER_SYSTEMINCLUDE
+USERINCLUDE ../../Inc
+
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+SYSTEMINCLUDE	/epoc32/include/cryptospi
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
 
 LIBRARY	euser.lib efsrv.lib ecom.lib cryptography.lib
 LIBRARY certstore.lib crypto.lib hash.lib
@@ -77,4 +96,9 @@
 LIBRARY	authclient.lib
 #endif // SYMBIAN_AUTH_SERVER
 
+#if (defined(SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT) && defined(SYMBIAN_ENABLE_SDP_ECC))
+LIBRARY tcryptotokenhai.lib
+LIBRARY cryptospi.lib
+#endif // SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT && SYMBIAN_ENABLE_SDP_ECC
+
 SMPSAFE
--- a/cryptoservices/filebasedcertificateandkeystores/test/ttestplugin/dummykeystore.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/ttestplugin/dummykeystore.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -38,7 +38,7 @@
 target 101faaa3.rsc
 end
 
-SYSTEMINCLUDE 	/epoc32/include /epoc32/include/ecom /epoc32/include/ct
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY	euser.lib 
 LIBRARY ctframework.lib 
--- a/cryptoservices/filebasedcertificateandkeystores/test/ttestplugin/dummykeystoreman1.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/ttestplugin/dummykeystoreman1.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -38,7 +38,7 @@
 target 101faaa1.rsc
 end
 
-SYSTEMINCLUDE 	/epoc32/include /epoc32/include/ecom /epoc32/include/ct
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY	euser.lib 
 LIBRARY ctframework.lib 
--- a/cryptoservices/filebasedcertificateandkeystores/test/ttestplugin/dummykeystoreman2.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/ttestplugin/dummykeystoreman2.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -38,7 +38,7 @@
 target 101faaa5.rsc
 end
 
-SYSTEMINCLUDE 	/epoc32/include /epoc32/include/ecom /epoc32/include/ct
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY	euser.lib 
 LIBRARY ctframework.lib 
--- a/cryptoservices/filebasedcertificateandkeystores/test/ttesttools/ttesttools.mmp	Fri Oct 02 13:15:59 2009 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/test/ttesttools/ttesttools.mmp	Mon Oct 12 10:17:04 2009 +0300
@@ -31,9 +31,7 @@
 
 USERINCLUDE		.  
 
-SYSTEMINCLUDE   /epoc32/include
-SYSTEMINCLUDE   /epoc32/include/test
-
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY 		euser.lib 
 LIBRARY 		efsrv.lib 
Binary file securityanddataprivacytools/securityconfig/conf/securityconfig_2001ea7f.crml has changed