A public key is exported in the Distinguished Encoding Rules (DER)-encoded ASN.1 format.
The following steps explain the process of exporting a public key:
A public key is exported to the device memory.
The following code snippet shows how to set a file system session object, list the keys in the keystore and then export the selected public key.
//Create a file system session object RFs iFs; CleanupClosePushL(&iFs); //Initialise the keystore and member functions CUnifiedKeyStore* keyStore = CUnifiedKeyStore::NewL(iFs); keyStore->Initialize(iStatus); //iStatus is a TRequestStatus object //List the keys of the keystore RPointerArray<CCTKeyInfo> iKeys; // This variable will contain the result after the completion of the export operation TCTKeyAttributeFilter filter.iUsage = EPKCS15UsageAll; keyStore->List(iKeys, filter, iStatus); ... //Retrieve the handle of the public key to be exported _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; } } ... //Export the key HBufC8* iKeyData = NULL; TCTTokenObjectHandle aHandle = iKeys[keyIndex]->Handle(); keyStore->ExportPublic(aHandle, iKeyData, iStatus); //Clean up CleanupStack::PopAndDestroy(); // iFs