crypto/weakcrypto/test/tpbe/texternpbeparams.cpp
author hgs
Thu, 19 Aug 2010 11:18:56 +0530
changeset 94 0e6c5a9328b5
parent 72 de46a57f75fb
permissions -rw-r--r--
201033_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
72
de46a57f75fb 201023_02
hgs
parents:
diff changeset
     1
/*
de46a57f75fb 201023_02
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
de46a57f75fb 201023_02
hgs
parents:
diff changeset
     3
* All rights reserved.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
de46a57f75fb 201023_02
hgs
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
de46a57f75fb 201023_02
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
de46a57f75fb 201023_02
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
de46a57f75fb 201023_02
hgs
parents:
diff changeset
     8
*
de46a57f75fb 201023_02
hgs
parents:
diff changeset
     9
* Initial Contributors:
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    11
*
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    12
* Contributors:
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    13
*
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    14
* Description: 
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    15
*
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    16
*/
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    17
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    18
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    19
#include <s32mem.h>
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    20
#include <s32file.h>
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    21
#include "texternpbeparams.h"
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    22
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    23
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    24
CTestAction* CExternPbeParams::NewL(
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    25
	RFs& aFs, CConsoleBase& aConsole,
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    26
	Output& aOut, const TTestActionSpec& aTestActionSpec)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    27
/**
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    28
	Factory function allocates new instance of CExternPbeParams and extracts
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    29
	the element body from the supplied test action spec.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    30
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    31
	@param	aFs				Used to parse XML script file.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    32
	@param	aConsole		Required by CTestAction.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    33
	@param	aOut			Required by CTestAction.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    34
	@param	aTestActionSpec	Action specification contains type, name, and
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    35
							XML contents.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    36
	@return					New instance of CExternPbeParams, which is owned
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    37
							by the caller.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    38
 */
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    39
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    40
	CExternPbeParams* self = new(ELeave) CExternPbeParams(aConsole, aOut, aFs);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    41
	CleanupStack::PushL(self);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    42
	self->ConstructL(aTestActionSpec);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    43
	CleanupStack::Pop(self);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    44
	return self;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    45
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    46
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    47
CExternPbeParams::CExternPbeParams(CConsoleBase& aConsole, Output& aOut, RFs& aFs)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    48
/**
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    49
	This constructor exists to record the file server session and to initialize
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    50
	the CTestAction superclass.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    51
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    52
	@param	aConsole		Required by CTestAction.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    53
	@param	aOut			Required by CTestAction.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    54
	@param	aFs				Used to read from and write to files in PerformAction,
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    55
							which stores and restores the externalized params.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    56
 */
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    57
:	CTestAction(aConsole, aOut),
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    58
	iFs(aFs)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    59
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    60
	// empty.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    61
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    62
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    63
void CExternPbeParams::ConstructL(const TTestActionSpec& aTestActionSpec)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    64
/**
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    65
	Second phase initialization initializes the superclass and
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    66
	makes a copy of the test element.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    67
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    68
	@param	aTestActionSpec	Action specification contains type, name, and
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    69
							XML contents.	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    70
 */
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    71
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    72
	CTestAction::ConstructL(aTestActionSpec);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    73
	iBody = aTestActionSpec.iActionBody.AllocL();
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    74
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    75
	// iBody is deconstructed in DoPerformPrerequisite
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    76
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    77
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    78
CExternPbeParams::~CExternPbeParams()
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    79
/**
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    80
	Free resources allocated in ConstructL.  Specifically,
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    81
	deletes the copy of the element body text.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    82
 */
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    83
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    84
	delete iBody;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    85
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    86
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    87
// -------- implement CTestAction --------
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    88
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    89
void CExternPbeParams::DoPerformPrerequisite(TRequestStatus& aStatus)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    90
/**
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    91
	Override CTestAction by deconstructing element body allocated
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    92
	in ConstructL.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    93
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    94
	If this function fails then DoPerformPostrequisite must still
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    95
	be called.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    96
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    97
	@param	aStatus			This status is completed when the prerequisite
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    98
							has finished.  (This implementation is actually
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    99
							synchronous so the request will already be completed
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   100
							when it returns.)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   101
 */
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   102
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   103
	TRAPD(r, DoPerformPrerequisiteL());
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   104
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   105
	iActionState = CTestAction::EAction;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   106
	TRequestStatus* ps = &aStatus;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   107
	User::RequestComplete(ps, r);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   108
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   109
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   110
void CExternPbeParams::DoPerformPrerequisiteL()
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   111
/**
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   112
	Helper function for DoPerformPrerequisite contains resource allocation
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   113
	functions which can leave.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   114
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   115
	Extracts cipher, salt, iv, iter count, and kdf values.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   116
 */
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   117
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   118
	_LIT8(KOrigFileName, "orig-filename");
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   119
	iOrigFileName = ReadStringLC(*iBody, KOrigFileName);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   120
	CleanupStack::Pop(iOrigFileName);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   121
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   122
	_LIT8(KExpCipherElemName, "expected-cipher");
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   123
	iExpCipher = ReadDecStringL(*iBody, KExpCipherElemName);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   124
	_LIT8(KExpSaltElemName, "expected-salt");
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   125
	iExpSalt = ReadHexStringL(*iBody, KExpSaltElemName);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   126
	_LIT8(KExpIvElemName, "expected-iv");
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   127
	iExpIv = ReadHexStringL(*iBody, KExpIvElemName);	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   128
	_LIT8(KExpIterCountElemName, "expected-iter-count");
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   129
	iExpIterCount = ReadDecStringL(*iBody, KExpIterCountElemName);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   130
	_LIT8(KExpKdfElemName, "expected-kdf");
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   131
	iExpKdf = ReadDecStringL(*iBody, KExpKdfElemName);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   132
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   133
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   134
void CExternPbeParams::DoPerformPostrequisite(TRequestStatus& aStatus)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   135
/**
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   136
	Implements CTestAction by cleaning up data allocated in DoPerformPrerequisiteL.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   137
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   138
	@param	aStatus			This status is completed to indicate the
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   139
							postrequisite has finished.  (This function
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   140
							is synchronous so the status is completed before
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   141
							this function returns.)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   142
 */
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   143
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   144
	delete iExpIv;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   145
	iExpIv = 0;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   146
	delete iExpSalt;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   147
	iExpSalt = 0;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   148
	delete iOrigFileName;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   149
	iOrigFileName = NULL;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   150
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   151
	iFinished = ETrue;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   152
	TRequestStatus* ps = &aStatus;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   153
	User::RequestComplete(ps, KErrNone);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   154
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   155
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   156
void CExternPbeParams::PerformAction(TRequestStatus& aStatus)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   157
/**
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   158
	Implements CTestAction by running the actual tests.  This
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   159
	consists of:
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   160
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   161
	Reading an externalized CPBEncryptParms object and testing the
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   162
	cipher, salt, iv, iteration count, and KDF are as expected.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   163
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   164
	Externalizing the object to memory.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   165
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   166
	Testing the two externalizations are binary identical.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   167
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   168
	Creating an equivalent object from scratch and externalizing it.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   169
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   170
	Testing the externalizations are binary identical.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   171
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   172
	As well as testing the objects can be stored reliably, this
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   173
	test also ensures that old (pre-PKCS#12) files can still be
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   174
	read and, and that objects are stored in the old format if they
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   175
	do not use any PKCS#12-specific features.  (I.e., they use the
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   176
	default PKCS#5 KDF.)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   177
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   178
	@param	aStatus			This request status is completed when
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   179
							the action has finished, successfully
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   180
							or otherwise.  This implementation is
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   181
							synchronous, and so the status is actually
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   182
							completed before this function returns.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   183
 */
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   184
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   185
	TFileName fn;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   186
	fn.Copy(*iOrigFileName);	// convert from narrow
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   187
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   188
	// ensure reference file matches re-externalized form
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   189
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   190
	TRAPD(r,
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   191
		TestDecodeMatchesScriptL(fn);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   192
		TestReExternMatchesL(fn);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   193
		TestScratchExternL(fn) );
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   194
		
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   195
	iResult = (r == KErrNone);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   196
	iActionState = CTestAction::EPostrequisite;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   197
	TRequestStatus* status = &aStatus;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   198
	User::RequestComplete(status, KErrNone);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   199
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   200
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   201
CPBEncryptParms* CExternPbeParams::InternalizeEncryptionParamsLC(const TDesC& aFileName)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   202
/**
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   203
	Construct a CPBEncryptParms object from the externalized
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   204
	form in the named file.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   205
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   206
	@param	aFileName		File which contains externalized form.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   207
	@return					Internalized encryption parameters object
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   208
							which is placed on the cleanup stack.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   209
 */
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   210
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   211
	RFileReadStream frs;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   212
	TInt r = frs.Open(iFs, aFileName, EFileStream | EFileRead);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   213
	User::LeaveIfError(r);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   214
	CleanupClosePushL(frs);	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   215
	CPBEncryptParms* pbep = CPBEncryptParms::NewL(frs);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   216
	CleanupStack::PopAndDestroy(&frs);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   217
	CleanupStack::PushL(pbep);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   218
	return pbep;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   219
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   220
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   221
void CExternPbeParams::TestDecodeMatchesScriptL(const TDesC& aFileName)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   222
/**
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   223
	Test whether the encryption parameters which were externalized
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   224
	to the supplied file match those specified in the script file.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   225
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   226
	@param	aFileName		Name of file which contains externalized form.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   227
	@leave KErrGeneral		The internalized form doesn't match the parameters
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   228
							in the script.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   229
 */
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   230
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   231
	CPBEncryptParms* pbep = InternalizeEncryptionParamsLC(aFileName);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   232
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   233
	TBool match =
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   234
			pbep->Cipher() == iExpCipher
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   235
		&&	pbep->Salt() == *iExpSalt
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   236
		&&	pbep->Iterations() == iExpIterCount;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   237
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   238
	match = match && pbep->Kdf() == iExpKdf;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   239
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   240
	if (! match)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   241
		User::Leave(KErrGeneral);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   242
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   243
	CleanupStack::PopAndDestroy(pbep);	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   244
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   245
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   246
void CExternPbeParams::CompareAgainstTestFileL(
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   247
	const TDesC& aFileName, const CPBEncryptParms& aParams)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   248
/**
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   249
	Externalize the supplied parameters object and ensure it matches the
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   250
	test file.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   251
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   252
	@param	aFileName		File which contains externalized parameters.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   253
	@param	aParams			Test object to externalize.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   254
	@leave KErrGeneral The externalized forms do not match.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   255
 */
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   256
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   257
 	// open a file stream on the externalized form
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   258
	RFileReadStream frs;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   259
	TInt r = frs.Open(iFs, aFileName, EFileStream | EFileRead);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   260
	User::LeaveIfError(r);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   261
	CleanupClosePushL(frs);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   262
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   263
	// externalize the object to memory
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   264
	const TInt KMaxBufferLen = 128;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   265
	HBufC8* reExtBuf = HBufC8::NewLC(KMaxBufferLen);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   266
	TPtr8 reDes = reExtBuf->Des();
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   267
	RDesWriteStream dws(reDes);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   268
	CleanupClosePushL(dws);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   269
	aParams.ExternalizeL(dws);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   270
	dws.CommitL();
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   271
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   272
	// ensure the externalized forms are equal
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   273
	RDesReadStream drs(reDes);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   274
	TInt fLen = frs.Source()->SizeL();
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   275
	TInt mLen = drs.Source()->SizeL();
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   276
	if (fLen != mLen)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   277
		User::Leave(KErrGeneral);	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   278
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   279
	TBuf8<1> fByte;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   280
	TBuf8<1> mByte;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   281
	for (TInt i = 0; i < fLen; ++i)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   282
		{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   283
		frs.ReadL(fByte, 1);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   284
		drs.ReadL(mByte, 1);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   285
		if (fByte != mByte)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   286
			User::Leave(KErrGeneral);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   287
		}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   288
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   289
	CleanupStack::PopAndDestroy(3, &frs);	// frs, reExtBuf, dws	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   290
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   291
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   292
void CExternPbeParams::TestReExternMatchesL(const TDesC& aFileName)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   293
/**
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   294
	Read the CPBEncryptParms object which is externalized in
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   295
	the named file, re-externalize it, and check the two
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   296
	representations are binary equivalent.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   297
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   298
	@param	aFileName		Name of file which contains externalized form.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   299
	@leave	KErrGeneral		The externalized forms are different.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   300
 */
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   301
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   302
 	CPBEncryptParms* pbep = InternalizeEncryptionParamsLC(aFileName);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   303
 	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   304
 	CompareAgainstTestFileL(aFileName, *pbep);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   305
 	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   306
	CleanupStack::PopAndDestroy(pbep);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   307
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   308
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   309
void CExternPbeParams::TestScratchExternL(const TDesC& aFileName)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   310
/**
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   311
	Construct a CPBEncryptParams object from the parameter values
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   312
	in the script file.  Test it matches the test file.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   313
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   314
	@param	aFileName		Test file which contains externalized parameters.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   315
 */
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   316
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   317
	CPBEncryptParms* pbep = CPBEncryptParms::NewLC(
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   318
		static_cast<TPBECipher>(iExpCipher),
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   319
		*iExpSalt,
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   320
		*iExpIv,
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   321
		iExpIterCount);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   322
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   323
	pbep->SetKdf(static_cast<CPBEncryptParms::TKdf>(iExpKdf));
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   324
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   325
	CompareAgainstTestFileL(aFileName, *pbep);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   326
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   327
	CleanupStack::PopAndDestroy(pbep);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   328
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   329
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   330
void CExternPbeParams::DoReportAction(void)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   331
/**
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   332
	Implements CTestAction but is empty.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   333
 */
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   334
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   335
	// empty.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   336
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   337
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   338
void CExternPbeParams::DoCheckResult(TInt /*aError*/)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   339
/**
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   340
	Implements CTestAction but is empty.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   341
 */
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   342
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   343
	// empty.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   344
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   345
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   346
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   347
// -------- support functions --------
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   348
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   349
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   350
HBufC8* CExternPbeParams::ReadHexStringL(const TDesC8& aBody, const TDesC8& aTag)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   351
/**
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   352
	Convert a string in the test script to an 8-bit buffer.  The string
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   353
	is a sequence of hex digits, e.g. "abcdef01", which is converted to a
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   354
	descriptor containing the matching bytes {0xab, 0xcd, 0xef, 0x01}.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   355
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   356
	@param	aBody			Body of parent element.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   357
	@param	aTag			Bare tag name.  This function extracts the text
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   358
							between "<aTag>" and "</aTag>".
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   359
	@return					Newly-allocated buffer containing matching bytes.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   360
							This is owned by the caller.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   361
 */
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   362
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   363
 	HBufC8* scriptString = ReadStringLC(aBody, aTag);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   364
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   365
	TInt textLen = scriptString->Length();
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   366
	if ((textLen % 2) != 0)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   367
		User::Leave(KErrCorrupt);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   368
	TInt byteCount = textLen / 2;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   369
	HBufC8* procString = HBufC8::NewMaxLC(byteCount);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   370
	TPtr8 procDes = procString->Des();
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   371
	for (TInt i = 0; i < byteCount; ++i)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   372
		{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   373
		TUint8 byteVal;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   374
		TInt r = TLex8(scriptString->Mid(i * 2, 2)).Val(byteVal, EHex);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   375
		User::LeaveIfError(r);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   376
		procDes[i] = byteVal;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   377
		}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   378
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   379
	CleanupStack::Pop(procString);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   380
	CleanupStack::PopAndDestroy(scriptString);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   381
	return procString;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   382
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   383
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   384
TInt CExternPbeParams::ReadDecStringL(const TDesC8& aBody, const TDesC8& aTag)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   385
/**
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   386
	Finds a decimal text string in the script and returns the
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   387
	integer value which it represents.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   388
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   389
	@param	aBody			Body of parent element.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   390
	@param	aTag			Bare tag name.  This function extracts the text
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   391
							between "<aTag>" and "</aTag>".
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   392
	@return					Integer value encoded in the script file.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   393
 */
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   394
 	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   395
 	HBufC8* scriptString = ReadStringLC(aBody, aTag);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   396
 	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   397
 	TInt value;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   398
	User::LeaveIfError(TLex8(*scriptString).Val(value));
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   399
	CleanupStack::PopAndDestroy(scriptString);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   400
	return value;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   401
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   402
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   403
HBufC8* CExternPbeParams::ReadStringLC(const TDesC8& aBody, const TDesC8& aTag)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   404
/**
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   405
	Extracts a string from the supplied script file.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   406
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   407
	@param	aBody			Body of parent element.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   408
	@param	aTag			Bare tag name.  This function extracts the text
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   409
							between "<aTag>" and "</aTag>".
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   410
	@return					A copy of the string allocated on the heap.  The
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   411
							string is placed on the cleanup stack.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   412
 */
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   413
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   414
	TBuf8<32> startTag;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   415
	startTag.Format(_L8("<%S>"), &aTag);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   416
	TBuf8<32> endTag;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   417
	endTag.Format(_L8("</%S>"), &aTag);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   418
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   419
	TInt pos = 0;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   420
	TInt r;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   421
	const TPtrC8 contents = Input::ParseElement(
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   422
		aBody, startTag, endTag, pos, r);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   423
	User::LeaveIfError(r);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   424
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   425
	return contents.AllocLC();
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   426
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   427
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   428
/**
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   429
	This code was originally in PerformAction to create the initial
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   430
	data files.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   431
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   432
	// GENERATE PKCS5 TEST PARAMS FILE
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   433
	RFileWriteStream fws;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   434
	r = fws.Replace(iFs, _L("c:\\tpbe\\pkcs5-orig.dat"), EFileStream | EFileWrite);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   435
	User::LeaveIfError(r);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   436
	CleanupClosePushL(fws);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   437
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   438
	_LIT8(KSalt, "SALT4567");
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   439
	_LIT8(KIv, "IV23456789abcdef");
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   440
	const TInt KIterCount = 1234;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   441
	CPBEncryptParms* pbep = CPBEncryptParms::NewLC(
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   442
		ECipherAES_CBC_256, KSalt, KIv, KIterCount);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   443
	pbep->ExternalizeL(fws);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   444
	fws.CommitL();
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   445
	CleanupStack::PopAndDestroy(2, &fws);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   446
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   447
#ifdef SYMBIAN_PKCS12
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   448
	// GENERATE PKCS12 TEST PARAMS FILE
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   449
	RFileWriteStream fws;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   450
	r = fws.Replace(iFs, _L("c:\\tpbe\\pkcs12-first.dat"), EFileStream | EFileWrite);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   451
	User::LeaveIfError(r);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   452
	CleanupClosePushL(fws);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   453
	
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   454
	_LIT8(KSalt, "SALT4567");
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   455
	_LIT8(KIv, "IV23456789abcdef");
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   456
	const TInt KIterCount = 1234;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   457
	CPBEncryptParms* pbep = CPBEncryptParms::NewLC(
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   458
		ECipherAES_CBC_256, KSalt, KIv, KIterCount);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   459
	pbep->SetKdf(CPBEncryptParms::EKdfPkcs12);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   460
	pbep->ExternalizeL(fws);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   461
	fws.CommitL();
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   462
	CleanupStack::PopAndDestroy(2, &fws);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   463
#endif	// #ifdef SYMBIAN_PKCS12
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   464
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   465
 */