--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javaextensions/satsa/pki/src.s60/usercredentialmanager.cpp Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,219 @@
+/*
+* 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 "javax_microedition_pki_UserCredentialManager.h"
+#include "cstscredentialmanager.h"
+#include "satsajnitools.h"
+#include "s60commonutils.h"
+#include "fs_methodcall.h"
+
+
+
+LOCAL_C void CallCreateCredentialManagerAddToEventSourceL(
+ TInt* aManagerHandle)
+{
+ CSTSCredentialManager* manager = CSTSCredentialManager::NewLC();
+ TInt managerHandle = reinterpret_cast<TInt>(manager) ;
+ CleanupStack::Pop(manager);
+ *aManagerHandle = managerHandle;
+}
+
+JNIEXPORT jint JNICALL
+Java_javax_microedition_pki_UserCredentialManager__1createUCManager(
+ JNIEnv* /* aJniEnv */,
+ jobject /* aPeer */)
+{
+
+
+ TInt managerHandle = KErrGeneral;
+
+ TInt error = KErrNone;
+ TRAP(error,
+ CallCreateCredentialManagerAddToEventSourceL(
+ &managerHandle));
+
+ if (error != KErrNone)
+ {
+ return error;
+ }
+
+ return managerHandle;
+}
+
+JNIEXPORT jint
+JNICALL Java_javax_microedition_pki_UserCredentialManager__1addCredential(
+ JNIEnv* aJniEnv,
+ jobject /* aPeer */,
+ jint aManagerHandle,
+ jstring aCertDisplayName, jbyteArray aPkiPath)
+{
+
+
+ CSTSCredentialManager* manager =
+ reinterpret_cast<CSTSCredentialManager *>(aManagerHandle);
+
+ const RJString certDisplayName(*aJniEnv, aCertDisplayName);
+ const TInt pkiPathLength = aJniEnv->GetArrayLength(aPkiPath);
+ jbyte* pkiPath = aJniEnv->GetByteArrayElements(aPkiPath, NULL);
+ if (!pkiPath)
+ {
+ return KErrNoMemory;
+ }
+ TPtrC8 pkiDes(reinterpret_cast< const TUint8 * >(pkiPath),
+ pkiPathLength);
+
+ TBool completed = EFalse;
+ TInt arg1 = reinterpret_cast<TInt>(&certDisplayName);
+ TInt arg2 = reinterpret_cast<TInt>(&pkiDes);
+
+ TInt error = KErrNone;
+ TRAP(error,CallMethodL(completed,manager,
+ &CSTSCredentialManager::AddCredentialL,
+ arg1,
+ arg2,manager));
+
+ aJniEnv->ReleaseByteArrayElements(aPkiPath, pkiPath, 0);
+
+ if (error == KErrNone)
+ {
+ return !completed;
+ }
+ return error;
+}
+
+JNIEXPORT jint
+JNICALL Java_javax_microedition_pki_UserCredentialManager__1removeCredential(
+ JNIEnv* aJniEnv,
+ jobject /* aPeer */,
+ jint aManagerHandle,
+ jstring aCertDisplayName, jbyteArray aIssuerAndSerialNumber,
+ jstring aSecurityElementID, jstring aSecurityElementPrompt)
+{
+
+ CSTSCredentialManager* manager =
+ reinterpret_cast<CSTSCredentialManager *>(aManagerHandle);
+
+ const RJString certDisplayName(*aJniEnv, aCertDisplayName);
+ const TInt issuerLength =
+ aJniEnv->GetArrayLength(aIssuerAndSerialNumber);
+ jbyte* issuerAndSerialNumber =
+ aJniEnv->GetByteArrayElements(aIssuerAndSerialNumber, NULL);
+ if (!issuerAndSerialNumber)
+ {
+ return KErrNoMemory;
+ }
+
+ TPtrC8 issuerDes(
+ reinterpret_cast< const TUint8 * >(issuerAndSerialNumber),
+ issuerLength);
+
+ const RJString securityElementID(*aJniEnv, aSecurityElementID);
+ const RJString securityElementPrompt(*aJniEnv, aSecurityElementPrompt);
+
+ TBool completed = EFalse;
+ TInt arg1 = reinterpret_cast<TInt>(&certDisplayName);
+ TInt arg2 = reinterpret_cast<TInt>(&issuerDes);
+ TInt arg3 = reinterpret_cast<TInt>(&securityElementID);
+ TInt arg4 = reinterpret_cast<TInt>(&securityElementPrompt);
+ TInt arg5 = reinterpret_cast<TInt>(&completed);
+
+ TInt error = KErrNone;
+ TRAP(error,
+ CallMethodL(manager,&CSTSCredentialManager::StaticRemoveCredentialL,
+ arg1,
+ arg2,
+ arg3,
+ arg4,
+ arg5,manager));
+
+ aJniEnv->ReleaseByteArrayElements(aIssuerAndSerialNumber,
+ issuerAndSerialNumber, 0);
+
+
+ if (error == KErrNone)
+ {
+ return completed ? 0 : 1;
+ }
+ return error;
+}
+
+
+JNIEXPORT jbyteArray
+JNICALL Java_javax_microedition_pki_UserCredentialManager__1generateCSR(
+ JNIEnv* aJniEnv,
+ jobject /*aPeer*/,
+ jint aManagerHandle, jstring aNameInfo,
+ jstring aAlgorithm, jint aKeyLen, jint aKeyUsage,
+ jstring aSecurityElementID, jstring aSecurityElementPrompt,
+ jintArray aError)
+{
+ CSTSCredentialManager* manager =
+ reinterpret_cast<CSTSCredentialManager *>(aManagerHandle);
+
+ const RJString nameInfo(*aJniEnv, aNameInfo);
+ const RJString algorithm(*aJniEnv, aAlgorithm);
+ const RJString securityElementID(*aJniEnv, aSecurityElementID);
+ const RJString securityElementPrompt(*aJniEnv, aSecurityElementPrompt);
+
+ TDesC8* retVal = NULL;
+
+ CSTSCredentialManager::TGenerateCSRParams params =
+ {
+ static_cast< const TDesC* >(&nameInfo),
+ static_cast< const TDesC* >(&algorithm),
+ aKeyLen, aKeyUsage,
+ static_cast< const TDesC* >(&securityElementID),
+ static_cast< const TDesC* >(&securityElementPrompt)
+ };
+
+ TInt arg1 = reinterpret_cast<TInt>(¶ms);
+ TInt arg2 = reinterpret_cast<TInt>(&retVal);
+
+ TInt error = KErrNone;
+ TRAP(error,
+ CallMethodL(manager,&CSTSCredentialManager::StaticGenerateCSRL,
+ arg1, arg2,
+ manager));
+
+
+ STSSetJavaErrorCode(aJniEnv, aError, error);
+
+ if (error != KErrNone)
+ {
+ return NULL;
+ }
+
+ const TInt numBytes = retVal->Length();
+ jbyteArray javaValue = aJniEnv->NewByteArray(numBytes);
+
+ if (!javaValue)
+ {
+ STSSetJavaErrorCode(aJniEnv, aError, KErrNoMemory);
+ return NULL;
+ }
+
+ if (numBytes > 0)
+ {
+ aJniEnv->SetByteArrayRegion(
+ javaValue, 0, numBytes,
+ JAVA_PTR(retVal->Ptr()));
+ }
+ return javaValue;
+}