A use policy denotes the security check required to use the key. The use policy associated with the key is of type TSecurityPolicy . The policy can be set to check capabilities or the Secure ID associated with the calling process. The calling process should have a WriteUserData capability.
The following code snippet shows how to set use policy for a key.
// Create a file system session object
RFs iFs;
CleanupClosePushL(&iFs);
...
// Initialise the keystore and member functions
CUnifiedKeyStore* keyStore = CUnifiedKeyStore::NewL(fs);
keyStore->Initialize(iStatus); //iStatus is a TRequestStatus object
...
// Retrieve the handle of the key for which use policy has to be set
TCTKeyAttributeFilter filter.iUsage = EPKCS15UsageAll;
RPointerArray<CCTKeyInfo> iKeys; // This variable will contain the result of the set use policy operation
keyStore->List(iKeys, filter, iStatus);
...
// Retrieve the key handle of the appropriate key
_LIT(KLabel,”keylabel”);
// Select the key with the label you are looking for
TInt keyIndex;
for (TInt j = 0; j < iKeys.Count(); j++)
{
if (iKeys[j]->Label() == KLabel)
{
keyIndex = j;
break;
}
}
...
// Set the use policy
TSecurityPolicy usePolicy;
TUint secureId = 0x101FFFFF;
TCapability caps[3];
caps[0] = ECapabilityWriteUserData;
caps[1] = ECapabilityDRM;
caps[2] = ECapabilityReadUserData;
usePolicy = TSecurityPolicy(TSecureId(secureId), caps[0], caps[1], caps[2]);
keyStore->SetUsePolicy(*iKeys, usePolicy, iStatus);
// Clean up
CleanupStack::PopAndDestroy(); // iFs
Copyright ©2010 Nokia Corporation and/or its subsidiary(-ies).
All rights
reserved. Unless otherwise stated, these materials are provided under the terms of the Eclipse Public License
v1.0.