javaextensions/satsa/pki/src.s60/cstssignatureservice.cpp
changeset 50 023eef975703
parent 21 2a9601315dfc
child 56 abc41079b313
--- a/javaextensions/satsa/pki/src.s60/cstssignatureservice.cpp	Tue Jul 06 20:36:19 2010 +0300
+++ b/javaextensions/satsa/pki/src.s60/cstssignatureservice.cpp	Fri Jul 09 16:35:45 2010 +0300
@@ -15,8 +15,6 @@
  *
 */
 
-
-// INCLUDE FILES
 #include "cstssignatureservice.h"
 #include "tstsdistinguishednameconverter.h"
 #include "secdlg.h"
@@ -32,7 +30,7 @@
 #include <CCMSSignerInfo.h>
 #include <CCMSEncapsulatedContentInfo.h>
 #include <CCMSSignedData.h>
-#include <PKIDlg.h>
+
 #include "cstsseprompt.h"
 
 #include <hash.h>
@@ -42,7 +40,10 @@
 #include "logger.h"
 #include "jstringutils.h"
 
-// CONSTANTS
+#include <hbdevicemessageboxsymbian.h>
+#include <hbpopup.h>
+
+
 const TInt KDefaultGranularity = 1;
 
 const TInt KOptionIncludeContent = 1;
@@ -80,10 +81,7 @@
     {
         iDialog->Release(); // Release deletes the object
     }
-    if (iPKIDialog)
-    {
-        iPKIDialog->Release();
-    }
+    
     iCertificateArray.Close();
     iCertInfos.Close();
     delete iFilter;
@@ -126,14 +124,12 @@
         TInt aOptions, const CDesCArray& aCaNames,
         const TDesC& asecurityElementPrompt, TBool aShowData)
 {
-    LOG(ESATSA, EInfo, "+ CSTSSignatureService::AuthenticateL");
     if (iState != EReady)
     {
         ELOG(ESATSA, "CSTSSignatureService::AuthenticateL: Not Ready");
         User::Leave(KErrNotReady);
     }
 
-    LOG(ESATSA, EInfo, "CSTSSignatureService::AuthenticateL:After convertions");
     // First we need to convert the data to unicode, if we have to display it
     HBufC* textToDisplay = NULL;
     if (aShowData)
@@ -155,14 +151,9 @@
     iOptions = aOptions;
 
     iShowNotes = EFalse;
-
-    LOG(ESATSA, EInfo, "CSTSSignatureService::AuthenticateL:Going to call CreateSignatureL");
     // get handles to applicable certificates
     HBufC8* retVal = CreateSignatureL(aCaNames, EX509UsageDigitalSignature,
                                       asecurityElementPrompt);
-    LOG(ESATSA, EInfo, "CSTSSignatureService::AuthenticateL:After call to CreateSignatureL");
-
-    LOG(ESATSA, EInfo, "-- CSTSSignatureService::AuthenticateL");
     return retVal;
 }
 
@@ -171,7 +162,6 @@
         jint aOptions, jobjectArray aCaNames, jstring aSecurityElementPrompt,
         jboolean aShowData, HBufC8** aRetVal)
 {
-    LOG(ESATSA, EInfo, "+ CSTSSignatureService::StaticAuthenticateL");
     const TInt byteArrayLength = aJniEnv->GetArrayLength(
                                      aByteArrayToAuthenticate);
     jbyte* bytesToAuthenticate = aJniEnv->GetByteArrayElements(
@@ -189,20 +179,15 @@
     CDesCArrayFlat* nativeCaNames = STSCreateNativeStringArrayL(aJniEnv,
                                     aCaNames);
 
-    LOG(ESATSA, EInfo,  "CSTSSignatureService::StaticAuthenticateL: prepare se prompt");
     const JStringUtils securityElementPrompt(*aJniEnv, aSecurityElementPrompt);
 
-    LOG(ESATSA, EInfo,  "CSTSSignatureService::StaticAuthenticateL: start convertions to TInt");
     TBool ShowData = static_cast<TBool>(aShowData);
     const TDesC* sec = static_cast<const TDesC*>(&securityElementPrompt);
 
-    LOG(ESATSA, EInfo, "CSTSSignatureService::StaticAuthenticateL: After convertions,going to call CallMethodL");
     TRAPD(err, CallMethodL(*aRetVal, service,
                            &CSTSSignatureService::AuthenticateL, desToAuthenticate, aOptions,
                            *nativeCaNames, *sec, ShowData, service));
 
-    LOG(ESATSA, EInfo, "+ CSTSSignatureService::StaticAuthenticateL:After CallmethodL");
-    LOG(ESATSA, EInfo, "-- return CSTSSignatureService::StaticAuthenticateL");
     return err;
 
 }
@@ -216,15 +201,12 @@
 HBufC8* CSTSSignatureService::SignL(const TDesC8& aBytesToSign, TInt aOptions,
                                     const CDesCArray& aCaNames, const TDesC& aSecurityElementPrompt)
 {
-    LOG(ESATSA, EInfo, "+ CSTSSignatureService::SignL");
     if (iState != EReady)
     {
         ELOG(ESATSA, "CSTSSignatureService::SignL: Not Ready");
         User::Leave(KErrNotReady);
     }
 
-    LOG(ESATSA, EInfo, "CSTSSignatureService::SignL: start convertions!");
-    LOG(ESATSA, EInfo, "CSTSSignatureService::SignL: After convertions");
     // convert text from UTF8
     HBufC* textToDisplay = ConvertUTF8ToUnicodeL(aBytesToSign);
     delete iTextToDisplay;
@@ -238,12 +220,10 @@
 
     iShowNotes = ETrue;
 
-    LOG(ESATSA, EInfo, "CSTSSignatureService::SignL: Before call to CreateSignatureL");
     // get handles to applicable certificates
     HBufC8* retVal = CreateSignatureL(aCaNames, EX509UsageNonRepudiation,
                                       aSecurityElementPrompt);
 
-    LOG(ESATSA, EInfo, "-- return CSTSSignatureService::SignL");
     return retVal;
 }
 
@@ -256,13 +236,12 @@
                                        CSTSSignatureService* service, jbyteArray aBytesToSign, jint aOptions,
                                        jobjectArray aCaNames, jstring aSecurityElementPrompt, HBufC8** aRetVal)
 {
-    LOG(ESATSA, EInfo, "+ CSTSSignatureService::StaticSignL");
     const TInt byteArrayLength = aJniEnv->GetArrayLength(aBytesToSign);
     jbyte* bytesToSign = aJniEnv->GetByteArrayElements(aBytesToSign, NULL);
 
     if (!bytesToSign)
     {
-        LOG(ESATSA, EInfo, "CSTSSignatureService::StaticSignL: No memory");
+        ELOG(ESATSA, "CSTSSignatureService::StaticSignL: No memory");
         return NULL;
     }
 
@@ -273,15 +252,12 @@
 
     const JStringUtils securityElementPrompt(*aJniEnv, aSecurityElementPrompt);
 
-    LOG(ESATSA, EInfo, "CSTSSignatureService::StaticSignL: Start convertions");
-    LOG(ESATSA, EInfo, "CSTSSignatureService::StaticSignL: Before callmethodl");
-
+    
     const TDesC* sec = static_cast<const TDesC*>(&securityElementPrompt);
 
     TRAPD(err, CallMethodL(*aRetVal, service, &CSTSSignatureService::SignL,
                            desToSign, aOptions, *nativeCaNames, *sec, service));
 
-    LOG(ESATSA, EInfo, "-- ret CSTSSignatureService::StaticSignL");
     return err;
 }
 
@@ -292,28 +268,50 @@
 //
 void CSTSSignatureService::RunL()
 {
-    LOG(ESATSA, EInfo, "+ CSTSSignatureService::RunL");
     if (iStatus == KErrCancel)
     {
-        LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: KErrCancel");
         if (iShowNotes)
         {
-            LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: ShowNote");
             iState = EFinalNote;
             iStatus = KErrNone;
-            iPKIDialog->Note(MPKIDialog::ESigningCancelled, iStatus);
+            
+            // Using Orbit API 
+            CHbDeviceMessageBoxSymbian* messageBox
+                = CHbDeviceMessageBoxSymbian::NewL(CHbDeviceMessageBoxSymbian::EWarning);
+            CleanupStack::PushL(messageBox);
+
+            _LIT(KQuestion, "Do you want to sign the data?");
+            messageBox->SetTextL(KQuestion);
+            messageBox->SetTimeout(HbPopup::NoTimeout);
+
+            // Read localised versions instead of hard coded values.
+            _LIT(KAllowButtonText, "Allow");
+            _LIT(KDenyButtonText, "Deny");
+
+            messageBox->SetButtonTextL(CHbDeviceMessageBoxSymbian::EAcceptButton, KAllowButtonText);
+            messageBox->SetButton(CHbDeviceMessageBoxSymbian::EAcceptButton, ETrue);
+            messageBox->SetButtonTextL(CHbDeviceMessageBoxSymbian::ERejectButton, KDenyButtonText);
+            messageBox->SetButton(CHbDeviceMessageBoxSymbian::ERejectButton, ETrue);
+
+            // by default the answer is Allow
+            if (messageBox->ExecL() == CHbDeviceMessageBoxSymbian::ERejectButton)
+            {
+                
+            }
+
+            messageBox->Close();
+            CleanupStack::PopAndDestroy(messageBox);
+            
             SetActive();
-            LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: Done ShowNote");
-        }
+         }
         else
         {
-            LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: Complete");
-            Complete(KErrNone);
+             Complete(KErrNone);
         }
     }
     else if (iStatus != KErrNone)
     {
-        LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: Error occured");
+        ELOG(ESATSA, "CSTSSignatureService::RunL: Error occured");
         // Error has occured; inform java
         Complete(iStatus.Int());
     }
@@ -323,29 +321,23 @@
         {
         case EInitialising:
         {
-            LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: case EInitialising");
             iState = EKeyStoreInit;
             iKeyStore->Initialize(iStatus);
             SetActive();
-            LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: over case EInitialising");
             break;
         }
         case EKeyStoreInit:
         {
-            LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: case EKeyStoreInit");
             Complete(KErrNone);
             break;
         }
         case EListing:
         {
-            LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: case EListing");
             HandlesFromCertInfosL();
-            LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: over case EListing");
             break;
         }
         case EDialog:
         {
-            LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: case EDialog");
             iState = EGetCert;
             if (iCertificate)
             {
@@ -360,12 +352,10 @@
 
             iCertStore->GetCert(iCertificate, iCertificateHandle, iStatus);
             SetActive();
-            LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: over case EDialog");
             break;
         }
         case EGetCert:
         {
-            LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: case EGetCert");
             if (iX509Certificate)
             {
                 delete iX509Certificate;
@@ -374,44 +364,35 @@
             iState = ERetrieveCert;
             iCertStore->Retrieve(*iCertificate, iX509Certificate, iStatus);
             SetActive();
-            LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: over case EGetCert");
             break;
         }
         case ERetrieveCert:
         {
-            LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: case ERetrieveCert");
             FindKeyL();
             break;
         }
         case EFindKey:
         {
-            LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: case EFindKey");
             OpenSignerL();
             break;
         }
         case EOpenSigner:
         {
-            LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: case EOpenSigner");
             SignL();
             break;
         }
         case ESign:
         {
-            LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: case ESign");
             CreateSignedDataL();
-            LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: over case ESign");
             break;
         }
         case EFinalNote:
         {
-            LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: case EFinalNote");
             Complete(KErrNone);
-            LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: over case EFinalNote");
             break;
         }
         default:
         {
-            LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: case default");
             Complete(KErrGeneral);
         }
         }
@@ -425,7 +406,6 @@
 //
 TInt CSTSSignatureService::RunError(TInt aError)
 {
-    LOG(ESATSA, EInfo, "+ CSTSSignatureService::RunError");
     Complete(aError);
     return KErrNone;
 }
@@ -524,8 +504,7 @@
 {
     User::LeaveIfError(iFileServer.Connect());
     iDialog = SecurityDialogFactory::CreateL();
-    iPKIDialog = PKIDialogFactory::CreateNoteL();
-
+        
     iFilter = CCertAttributeFilter::NewL();
 
     iWait = new(ELeave) CActiveSchedulerWait;
@@ -542,7 +521,6 @@
 //
 void CSTSSignatureService::Complete(TInt aError)
 {
-    LOG(ESATSA, EInfo, "+ CSTSSignatureService::Complete");
     if (KErrNone == aError)
     {
         iState = EReady;
@@ -553,7 +531,7 @@
         iError = aError;
     }
     iWait->AsyncStop();
-    LOG(ESATSA, EInfo, "-- ret CSTSSignatureService::Complete");
+    
 }
 
 // -----------------------------------------------------------------------------
@@ -563,17 +541,14 @@
 //
 void CSTSSignatureService::WaitForCompletionL()
 {
-    LOG(ESATSA, EInfo, "+ CSTSSignatureService::WaitForCompletionL");
     SetActive();
     iWait->Start();
     if (iState != EReady)
     {
         // we need to be ready for the next request
         iState = EReady;
-
         User::Leave(iError);
     }
-    LOG(ESATSA, EInfo, "- ret CSTSSignatureService::WaitForCompletionL");
 }
 
 // -----------------------------------------------------------------------------
@@ -584,7 +559,6 @@
 HBufC8* CSTSSignatureService::CreateSignatureL(const CDesCArray& aCaNames,
         const TKeyUsageX509 aUsage, const TDesC& aSecurityElementPrompt)
 {
-    LOG(ESATSA, EInfo, "+ CSTSSignatureService::CreateSignatureL");
     HBufC* sePrompt = NULL;
     if (aSecurityElementPrompt != KNullDesC())
     {
@@ -592,14 +566,10 @@
     }
     delete iSecurityElementPrompt;
     iSecurityElementPrompt = sePrompt;
-    LOG(ESATSA, EInfo, "CSTSSignatureService::CreateSignatureL: call findcertificates");
     FindCertificatesL(aCaNames, aUsage);
-    LOG(ESATSA, EInfo, "CSTSSignatureService::CreateSignatureL: After call to findcertificates");
     WaitForCompletionL();
-    LOG(ESATSA, EInfo, "CSTSSignatureService::CreateSignatureL: call WaitForCompletion");
     HBufC8* retVal = iSignature;
     iSignature = NULL;
-    LOG(ESATSA, EInfo, "-- ret CSTSSignatureService::CreateSignatureL");
     return retVal;
 }
 // -----------------------------------------------------------------------------
@@ -611,7 +581,6 @@
         const TKeyUsageX509 aUsage)
 {
 
-    LOG(ESATSA, EInfo, "+ CSTSSignatureService::FindCertificatesL");
     iFilter->SetKeyUsage(aUsage);
     iFilter->SetOwnerType(EUserCertificate);
     iFilter->SetFormat(EX509Certificate);
@@ -654,7 +623,7 @@
         iState = EListing;
         iCertStore->List(iCertInfos, *iFilter, iDERNames, iStatus);
     }
-    LOG(ESATSA, EInfo, "-- ret CSTSSignatureService::FindCertificatesL");
+    
 }
 
 // -----------------------------------------------------------------------------
@@ -664,7 +633,6 @@
 //
 void CSTSSignatureService::HandlesFromCertInfosL()
 {
-    LOG(ESATSA, EInfo, "+ CSTSSignatureService::HandlesFromCertInfosL");
     TInt certificateCount = iCertInfos.Count();
     if (certificateCount == 0)
     {
@@ -675,7 +643,6 @@
     iCertificateArray.Reset();
     for (TInt i = 0; i < certificateCount; i++)
     {
-        LOG(ESATSA, EInfo, "+ CSTSSignatureService::HandlesFromCertInfosL: No Certificates");
         User::LeaveIfError(iCertificateArray.Append(iCertInfos[i]->Handle()));
     }
 
@@ -684,18 +651,60 @@
     {
     case EAuthWithoutText:
     {
-        LOG(ESATSA, EInfo, "CSTSSignatureService::HandlesFromCertInfosL: case EAuthWithoutText");
-        iPKIDialog->UserAuthentication(iCertificateArray, iCertificateHandle,
-                                       iStatus);
-        LOG(ESATSA, EInfo, "CSTSSignatureService::HandlesFromCertInfosL: over case EAuthWithoutText");
+        // Use Orbit API
+        CHbDeviceMessageBoxSymbian* messageBox
+            = CHbDeviceMessageBoxSymbian::NewL(CHbDeviceMessageBoxSymbian::EWarning);
+        CleanupStack::PushL(messageBox);
+
+        _LIT(KQuestion, "Do you want to sign the data?");
+        messageBox->SetTextL(KQuestion);
+        messageBox->SetTimeout(HbPopup::NoTimeout);
+
+        // Read localised versions instead of hard coded values.
+        _LIT(KAllowButtonText, "Allow");
+        _LIT(KDenyButtonText, "Deny");
+
+        messageBox->SetButtonTextL(CHbDeviceMessageBoxSymbian::EAcceptButton, KAllowButtonText);
+        messageBox->SetButton(CHbDeviceMessageBoxSymbian::EAcceptButton, ETrue);
+        messageBox->SetButtonTextL(CHbDeviceMessageBoxSymbian::ERejectButton, KDenyButtonText);
+        messageBox->SetButton(CHbDeviceMessageBoxSymbian::ERejectButton, ETrue);
+
+        // by default the answer is Allow
+        if (messageBox->ExecL() == CHbDeviceMessageBoxSymbian::ERejectButton)
+        {
+        
+        }
+        messageBox->Close();
+        CleanupStack::PopAndDestroy(messageBox);
         break;
     }
     case EAuthWithText:
     {
-        LOG(ESATSA, EInfo, "CSTSSignatureService::HandlesFromCertInfosL: case EAuthWithText");
-        iPKIDialog->UserAuthenticationText(*iTextToDisplay, iCertificateArray,
-                                           iCertificateHandle, iStatus);
-        LOG(ESATSA, EInfo, "CSTSSignatureService::HandlesFromCertInfosL: over case EAuthWithText");
+        // Use Orbit API
+        CHbDeviceMessageBoxSymbian* messageBox
+            = CHbDeviceMessageBoxSymbian::NewL(CHbDeviceMessageBoxSymbian::EWarning);
+        CleanupStack::PushL(messageBox);
+
+        _LIT(KQuestion, "Do you want to sign the data?");
+        messageBox->SetTextL(KQuestion);
+        messageBox->SetTimeout(HbPopup::NoTimeout);
+
+        // Read localised versions instead of hard coded values.
+        _LIT(KAllowButtonText, "Allow");
+        _LIT(KDenyButtonText, "Deny");
+
+        messageBox->SetButtonTextL(CHbDeviceMessageBoxSymbian::EAcceptButton, KAllowButtonText);
+        messageBox->SetButton(CHbDeviceMessageBoxSymbian::EAcceptButton, ETrue);
+        messageBox->SetButtonTextL(CHbDeviceMessageBoxSymbian::ERejectButton, KDenyButtonText);
+        messageBox->SetButton(CHbDeviceMessageBoxSymbian::ERejectButton, ETrue);
+
+        // by default the answer is Allow
+        if (messageBox->ExecL() == CHbDeviceMessageBoxSymbian::ERejectButton)
+        {
+        
+        }
+        messageBox->Close();
+        CleanupStack::PopAndDestroy(messageBox);
         break;
     }
     case ESignWithText:
@@ -721,7 +730,6 @@
 //
 void CSTSSignatureService::FindKeyL()
 {
-    LOG(ESATSA, EInfo, "+ CSTSSignatureService::FindKeyL");
     iKeyFilter.iKeyAlgorithm = CKeyInfoBase::EInvalidAlgorithm;
     iKeyFilter.iKeyId = iCertificate->SubjectKeyId();
 
@@ -740,7 +748,6 @@
 //
 void CSTSSignatureService::OpenSignerL()
 {
-    LOG(ESATSA, EInfo, "+ CSTSSignatureService::OpenSignerL");
     // if key is not found, display security element prompt and search again
     if (iKeys.Count() == 0)
     {
@@ -803,8 +810,6 @@
 //
 void CSTSSignatureService::SignL()
 {
-    LOG(ESATSA, EInfo, "+ CSTSSignatureService::SignL");
-
     // first we create a digest of the message
 
     CSHA1* sha = CSHA1::NewL();
@@ -892,7 +897,6 @@
 //
 void CSTSSignatureService::CreateSignedDataL()
 {
-    LOG(ESATSA, EInfo, "+ CSTSSignatureService::CreateSignedDataL");
     CCTKeyInfo* keyInfo = iKeys[0];
 
     HBufC8* signature = NULL;
@@ -987,14 +991,39 @@
     if (iShowNotes)
     {
         iState = EFinalNote;
-        iPKIDialog->Note(MPKIDialog::ESignatureDone, iStatus);
+     
+        //proper string for user prompt
+        CHbDeviceMessageBoxSymbian* messageBox
+        = CHbDeviceMessageBoxSymbian::NewL(CHbDeviceMessageBoxSymbian::EWarning);
+        CleanupStack::PushL(messageBox);
+
+        _LIT(KQuestion, "Do you want to sign the data?");
+        messageBox->SetTextL(KQuestion);
+        messageBox->SetTimeout(HbPopup::NoTimeout);
+
+        // Read localised versions instead of hard coded values.
+        _LIT(KAllowButtonText, "Allow");
+        _LIT(KDenyButtonText, "Deny");
+
+        messageBox->SetButtonTextL(CHbDeviceMessageBoxSymbian::EAcceptButton, KAllowButtonText);
+        messageBox->SetButton(CHbDeviceMessageBoxSymbian::EAcceptButton, ETrue);
+        messageBox->SetButtonTextL(CHbDeviceMessageBoxSymbian::ERejectButton, KDenyButtonText);
+        messageBox->SetButton(CHbDeviceMessageBoxSymbian::ERejectButton, ETrue);
+
+        // by default the answer is Allow
+        if (messageBox->ExecL() == CHbDeviceMessageBoxSymbian::ERejectButton)
+        {
+        
+        }
+        messageBox->Close();
+        CleanupStack::PopAndDestroy(messageBox);
         SetActive();
     }
     else
     {
         Complete(KErrNone);
     }
-    LOG(ESATSA, EInfo, "-- ret CSTSSignatureService::CreateSignedDataL");
+
 }
 
 // -----------------------------------------------------------------------------