javaextensions/satsa/pki/src.s60/cmsmessagesignatureservice.cpp
branchRCL_3
changeset 14 04becd199f91
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javaextensions/satsa/pki/src.s60/cmsmessagesignatureservice.cpp	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,144 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+ *
+*/
+
+
+//  INCLUDE FILES
+#include <stdlib.h>
+#include <string.h>
+
+#include "javax_microedition_securityservice_CMSMessageSignatureService.h"
+#include "cstssignatureservice.h"
+#include "satsajnitools.h"
+#include "logger.h"
+#include "javajniutils.h"
+#include "jniarrayutils.h"
+#include "s60commonutils.h"
+
+
+
+JNIEXPORT jint JNICALL
+Java_javax_microedition_securityservice_CMSMessageSignatureService__1createSignatureService(
+    JNIEnv* /* aJniEnv */,
+    jobject /* aPeer */)
+{
+    LOG(ESATSA, EInfo, "+ Entering JNI function __1createSignatureService");
+    CSTSSignatureService* service = NULL;
+    TInt serviceHandle = KErrGeneral;
+    TRAPD(error, service = CSTSSignatureService::NewL());
+    if (service == NULL || KErrNone != error)
+    {
+        return error;
+    }
+    serviceHandle = reinterpret_cast<TInt>(service);
+    LOG(ESATSA, EInfo, "--  __1createSignatureService");
+    return serviceHandle;
+
+}
+
+JNIEXPORT jbyteArray
+JNICALL Java_javax_microedition_securityservice_CMSMessageSignatureService__1authenticate(
+    JNIEnv* aJniEnv,
+    jobject /* aPeer */,
+    jint aServiceHandle,
+    jbyteArray aByteArrayToAuthenticate, jint aOptions, jobjectArray aCaNames,
+    jstring aSecurityElementPrompt, jboolean aShowData, jintArray aError)
+{
+    LOG(ESATSA, EInfo, "+ Entering JNI function __1authenticate");
+    CSTSSignatureService* service =
+        reinterpret_cast<CSTSSignatureService *>(aServiceHandle);
+
+    HBufC8* retVal = NULL;
+    int ret=0;
+
+    TRAPD(err, ret = CSTSSignatureService::StaticAuthenticateL(aJniEnv,
+                     service, aByteArrayToAuthenticate, aOptions, aCaNames,
+                     aSecurityElementPrompt, aShowData, &retVal));
+    LOG(ESATSA, EInfo, "__1authenticate:After the call to StaticAuthenticateL");
+
+    STSSetJavaErrorCode(aJniEnv, aError, ret);
+    if ((ret != KErrNone) || (!retVal) || (KErrNone != err))
+    {
+        LOG(ESATSA, EInfo, "__1authenticate:Error !! ");
+        return NULL;
+    }
+
+    const TInt numElems = retVal->Length();
+    jbyteArray javaValue = aJniEnv->NewByteArray(numElems);
+
+    if (!javaValue)
+    {
+        LOG(ESATSA, EInfo, "__1authenticate:No Memory !! ");
+        STSSetJavaErrorCode(aJniEnv, aError, KErrNoMemory);
+        delete retVal;
+    }
+
+    if (numElems> 0)
+    {
+        LOG(ESATSA, EInfo, "__1authenticate:COpy to Java");
+        aJniEnv->SetByteArrayRegion(
+            javaValue, 0, numElems,
+            JAVA_PTR(retVal->Ptr()));
+    }
+
+    delete retVal;
+    LOG(ESATSA, EInfo, "-- __1authenticate");
+    return javaValue;
+}
+
+JNIEXPORT jbyteArray
+JNICALL Java_javax_microedition_securityservice_CMSMessageSignatureService__1sign(
+    JNIEnv* aJniEnv,
+    jobject /* aPeer */,
+    jint aServiceHandle,
+    jbyteArray aByteArrayToSign, jint aOptions, jobjectArray aCaNames,
+    jstring aSecurityElementPrompt, jintArray aError)
+{
+    LOG(ESATSA, EInfo, "+ Entering JNI function __1sign");
+
+    CSTSSignatureService* service =
+        reinterpret_cast<CSTSSignatureService *>(aServiceHandle);
+
+    HBufC8* retVal = NULL;
+    int ret=0;
+    TRAPD(err, ret = CSTSSignatureService::StaticSignL(aJniEnv, service, aByteArrayToSign, aOptions,
+                     aCaNames, aSecurityElementPrompt, &retVal));
+    LOG(ESATSA, EInfo, "__1sign:After the call to StaticSignL");
+
+    STSSetJavaErrorCode(aJniEnv, aError, ret);
+    if ((KErrNone != ret) || (!retVal) || (KErrNone != err))
+    {
+        return NULL;
+    }
+    const TInt numElems = retVal->Length();
+    jbyteArray javaValue = aJniEnv->NewByteArray(numElems);
+
+    if (!javaValue)
+    {
+        STSSetJavaErrorCode(aJniEnv, aError, KErrNoMemory);
+        delete retVal;
+    }
+
+    if (numElems> 0)
+    {
+        aJniEnv->SetByteArrayRegion(
+            javaValue, 0, numElems,
+            JAVA_PTR(retVal->Ptr()));
+    }
+    delete retVal;
+    LOG(ESATSA, EInfo, "--returning __1sign");
+    return javaValue;
+}