diff -r f5050f1da672 -r 04becd199f91 javaextensions/satsa/pki/src.s60/cmsmessagesignatureservice.cpp --- /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 +#include + +#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(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(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(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; +}