--- a/javaextensions/satsa/pki/src.s60/cstssignatureservice.cpp Wed Sep 15 12:05:25 2010 +0300
+++ b/javaextensions/satsa/pki/src.s60/cstssignatureservice.cpp Wed Oct 13 14:23:59 2010 +0300
@@ -15,6 +15,8 @@
*
*/
+
+// INCLUDE FILES
#include "cstssignatureservice.h"
#include "tstsdistinguishednameconverter.h"
#include "secdlg.h"
@@ -30,11 +32,7 @@
#include <CCMSSignerInfo.h>
#include <CCMSEncapsulatedContentInfo.h>
#include <CCMSSignedData.h>
-
-#ifndef RD_JAVA_S60_RELEASE_10_1_ONWARDS
#include <PKIDlg.h>
-#endif
-
#include "cstsseprompt.h"
#include <hash.h>
@@ -44,7 +42,7 @@
#include "logger.h"
#include "jstringutils.h"
-
+// CONSTANTS
const TInt KDefaultGranularity = 1;
const TInt KOptionIncludeContent = 1;
@@ -82,12 +80,10 @@
{
iDialog->Release(); // Release deletes the object
}
-#ifndef RD_JAVA_S60_RELEASE_10_1_ONWARDS
if (iPKIDialog)
{
iPKIDialog->Release();
}
-#endif
iCertificateArray.Close();
iCertInfos.Close();
delete iFilter;
@@ -130,12 +126,14 @@
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)
@@ -157,9 +155,14 @@
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;
}
@@ -168,6 +171,7 @@
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(
@@ -185,15 +189,20 @@
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;
}
@@ -207,12 +216,15 @@
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;
@@ -226,10 +238,12 @@
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;
}
@@ -242,12 +256,13 @@
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)
{
- ELOG(ESATSA, "CSTSSignatureService::StaticSignL: No memory");
+ LOG(ESATSA, EInfo, "CSTSSignatureService::StaticSignL: No memory");
return NULL;
}
@@ -258,12 +273,15 @@
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;
}
@@ -274,25 +292,28 @@
//
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;
-#ifndef RD_JAVA_S60_RELEASE_10_1_ONWARDS
iPKIDialog->Note(MPKIDialog::ESigningCancelled, iStatus);
-#endif
SetActive();
- }
+ LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: Done ShowNote");
+ }
else
{
- Complete(KErrNone);
+ LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: Complete");
+ Complete(KErrNone);
}
}
else if (iStatus != KErrNone)
{
- ELOG(ESATSA, "CSTSSignatureService::RunL: Error occured");
+ LOG(ESATSA, EInfo, "CSTSSignatureService::RunL: Error occured");
// Error has occured; inform java
Complete(iStatus.Int());
}
@@ -302,23 +323,29 @@
{
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)
{
@@ -333,10 +360,12 @@
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;
@@ -345,35 +374,44 @@
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);
}
}
@@ -387,6 +425,7 @@
//
TInt CSTSSignatureService::RunError(TInt aError)
{
+ LOG(ESATSA, EInfo, "+ CSTSSignatureService::RunError");
Complete(aError);
return KErrNone;
}
@@ -485,9 +524,8 @@
{
User::LeaveIfError(iFileServer.Connect());
iDialog = SecurityDialogFactory::CreateL();
-#ifndef RD_JAVA_S60_RELEASE_10_1_ONWARDS
iPKIDialog = PKIDialogFactory::CreateNoteL();
-#endif
+
iFilter = CCertAttributeFilter::NewL();
iWait = new(ELeave) CActiveSchedulerWait;
@@ -504,6 +542,7 @@
//
void CSTSSignatureService::Complete(TInt aError)
{
+ LOG(ESATSA, EInfo, "+ CSTSSignatureService::Complete");
if (KErrNone == aError)
{
iState = EReady;
@@ -514,7 +553,7 @@
iError = aError;
}
iWait->AsyncStop();
-
+ LOG(ESATSA, EInfo, "-- ret CSTSSignatureService::Complete");
}
// -----------------------------------------------------------------------------
@@ -524,14 +563,17 @@
//
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");
}
// -----------------------------------------------------------------------------
@@ -542,6 +584,7 @@
HBufC8* CSTSSignatureService::CreateSignatureL(const CDesCArray& aCaNames,
const TKeyUsageX509 aUsage, const TDesC& aSecurityElementPrompt)
{
+ LOG(ESATSA, EInfo, "+ CSTSSignatureService::CreateSignatureL");
HBufC* sePrompt = NULL;
if (aSecurityElementPrompt != KNullDesC())
{
@@ -549,10 +592,14 @@
}
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;
}
// -----------------------------------------------------------------------------
@@ -564,6 +611,7 @@
const TKeyUsageX509 aUsage)
{
+ LOG(ESATSA, EInfo, "+ CSTSSignatureService::FindCertificatesL");
iFilter->SetKeyUsage(aUsage);
iFilter->SetOwnerType(EUserCertificate);
iFilter->SetFormat(EX509Certificate);
@@ -606,7 +654,7 @@
iState = EListing;
iCertStore->List(iCertInfos, *iFilter, iDERNames, iStatus);
}
-
+ LOG(ESATSA, EInfo, "-- ret CSTSSignatureService::FindCertificatesL");
}
// -----------------------------------------------------------------------------
@@ -616,6 +664,7 @@
//
void CSTSSignatureService::HandlesFromCertInfosL()
{
+ LOG(ESATSA, EInfo, "+ CSTSSignatureService::HandlesFromCertInfosL");
TInt certificateCount = iCertInfos.Count();
if (certificateCount == 0)
{
@@ -626,6 +675,7 @@
iCertificateArray.Reset();
for (TInt i = 0; i < certificateCount; i++)
{
+ LOG(ESATSA, EInfo, "+ CSTSSignatureService::HandlesFromCertInfosL: No Certificates");
User::LeaveIfError(iCertificateArray.Append(iCertInfos[i]->Handle()));
}
@@ -634,18 +684,18 @@
{
case EAuthWithoutText:
{
-#ifndef RD_JAVA_S60_RELEASE_10_1_ONWARDS
+ LOG(ESATSA, EInfo, "CSTSSignatureService::HandlesFromCertInfosL: case EAuthWithoutText");
iPKIDialog->UserAuthentication(iCertificateArray, iCertificateHandle,
iStatus);
-#endif
+ LOG(ESATSA, EInfo, "CSTSSignatureService::HandlesFromCertInfosL: over case EAuthWithoutText");
break;
}
case EAuthWithText:
{
-#ifndef RD_JAVA_S60_RELEASE_10_1_ONWARDS
+ LOG(ESATSA, EInfo, "CSTSSignatureService::HandlesFromCertInfosL: case EAuthWithText");
iPKIDialog->UserAuthenticationText(*iTextToDisplay, iCertificateArray,
iCertificateHandle, iStatus);
-#endif
+ LOG(ESATSA, EInfo, "CSTSSignatureService::HandlesFromCertInfosL: over case EAuthWithText");
break;
}
case ESignWithText:
@@ -671,6 +721,7 @@
//
void CSTSSignatureService::FindKeyL()
{
+ LOG(ESATSA, EInfo, "+ CSTSSignatureService::FindKeyL");
iKeyFilter.iKeyAlgorithm = CKeyInfoBase::EInvalidAlgorithm;
iKeyFilter.iKeyId = iCertificate->SubjectKeyId();
@@ -689,6 +740,7 @@
//
void CSTSSignatureService::OpenSignerL()
{
+ LOG(ESATSA, EInfo, "+ CSTSSignatureService::OpenSignerL");
// if key is not found, display security element prompt and search again
if (iKeys.Count() == 0)
{
@@ -751,6 +803,8 @@
//
void CSTSSignatureService::SignL()
{
+ LOG(ESATSA, EInfo, "+ CSTSSignatureService::SignL");
+
// first we create a digest of the message
CSHA1* sha = CSHA1::NewL();
@@ -838,6 +892,7 @@
//
void CSTSSignatureService::CreateSignedDataL()
{
+ LOG(ESATSA, EInfo, "+ CSTSSignatureService::CreateSignedDataL");
CCTKeyInfo* keyInfo = iKeys[0];
HBufC8* signature = NULL;
@@ -932,16 +987,14 @@
if (iShowNotes)
{
iState = EFinalNote;
-#ifndef RD_JAVA_S60_RELEASE_10_1_ONWARDS
iPKIDialog->Note(MPKIDialog::ESignatureDone, iStatus);
-#endif
SetActive();
}
else
{
Complete(KErrNone);
}
-
+ LOG(ESATSA, EInfo, "-- ret CSTSSignatureService::CreateSignedDataL");
}
// -----------------------------------------------------------------------------