Importing Keys

This section describes how to import a key from a file using the keystore.

An externally generated key can be stored in the keystore using the import functionality. Use the CUnifiedKeyStore::ImportKey() function to import a key into the keystore.

The following steps explain the process of importing keys:

  1. Create a file system session using an RFs object.

  2. Create an object of type CUnifiedKeyStore using CUnifiedKeyStore::NewL() or CUnifiedKeyStore::NewLC() function.

  3. Initialize the member functions and keystore using the asynchronous function CUnifiedKeyStore::Initialize() .

  4. Open the file in read-only mode using the RFile object.

  5. Import the key using CUnifiedKeyStore::ImportKey() .

The required key is imported into the selected keystore.


The following code snippet shows how to create a file system session object, initialize keystore and member functions, and import a key.

       //Create a file system session object
RFs iFs;

//Initialise the keystore and member functions
CUnifiedKeyStore* keyStore = CUnifiedKeyStore::NewL(iFs);
keyStore->Initialize(iStatus); //iStatus is a TRequestStatus object


HBufC8* keyData = NULL;

// Specify the path of the file containing the key details
TDriveUnit sysDrive (RFs::GetSystemDrive());
TFileName keyDataFile (sysDrive.Name());
keyDataFile.Append(_LIT("<path where key is located; relative to the system drive in this case.>"));

//Specify the filename
TFileName buf;
buf.Copy(aDes); //Filename

//Open the file in read-only mode
RFile file;
User::LeaveIfError(file.Open(iFs, keyDataFile, EFileRead));

TInt fileSize = 0;
HBufC8* iKeyData;

if (fileSize > 0)
     iKeyData = HBufC8::NewMaxLC(fileSize);    
     TPtr8 data(iKeyData->Des());
     User::LeaveIfError(file.Read(data, fileSize));

//Import the key into the keystore
keyStore->ImportKey(0, iKeyData->Des(), usage, KLabel, accessType,
                TTime(0), keyInfo, iStatus);

//Clean up
CleanupStack::PopAndDestroy(); // file
CleanupStack::PopAndDestroy(); // iFs
Related concepts
Unified Keystore