Moving micasa 1.5 trunk to Novell forge.

This commit is contained in:
Cameron (Kamran) Mashayekhi
2005-10-11 19:51:00 +00:00
parent 082db33275
commit efe0a5e13c
691 changed files with 116628 additions and 0 deletions

BIN
c_test/c_sample/CSample.ncb Normal file

Binary file not shown.

View File

@@ -0,0 +1,21 @@
Microsoft Visual Studio Solution File, Format Version 8.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NativeSample", "NativeSample.vcproj", "{2635AF48-A4B2-42BD-97E2-A9AD9FF79E8C}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfiguration) = preSolution
Debug = Debug
Release = Release
EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution
{2635AF48-A4B2-42BD-97E2-A9AD9FF79E8C}.Debug.ActiveCfg = Debug|Win32
{2635AF48-A4B2-42BD-97E2-A9AD9FF79E8C}.Debug.Build.0 = Debug|Win32
{2635AF48-A4B2-42BD-97E2-A9AD9FF79E8C}.Release.ActiveCfg = Release|Win32
{2635AF48-A4B2-42BD-97E2-A9AD9FF79E8C}.Release.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection
EndGlobal

BIN
c_test/c_sample/CSample.suo Normal file

Binary file not shown.

View File

@@ -0,0 +1,154 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="cSample"
ProjectGUID="{2635AF48-A4B2-42BD-97E2-A9AD9FF79E8C}"
SccProjectName=""
SccLocalPath="">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="D:\ccm\SSClient\SecretStoreClient_src\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
BasicRuntimeChecks="3"
RuntimeLibrary="5"
UsePrecompiledHeader="2"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="4"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="micasa_mdd.lib odbc32.lib odbccp32.lib"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="D:\ccm\SSClient\SecretStoreClient_src\bin\w32\mdd"
GenerateDebugInformation="TRUE"
SubSystem="1"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"
TypeLibraryName=".\Debug/sshtst.tlb"
HeaderFileName=""/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory=".\Release"
IntermediateDirectory=".\Release"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="D:\ccm\SSClient\SecretStoreClient_src\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="TRUE"
RuntimeLibrary="4"
EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="2"
AssemblerListingLocation=".\Release/"
ObjectFile=".\Release/"
ProgramDataBaseFileName=".\Release/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="micasa.lib odbc32.lib odbccp32.lib"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="D:\ccm\SSClient\SecretStoreClient_src\lib\w32"
SubSystem="1"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"
TypeLibraryName=".\Release/sshtst.tlb"
HeaderFileName=""/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<File
RelativePath=".\cSample.c">
</File>
<File
RelativePath="..\..\include\micasa.h">
</File>
<File
RelativePath="..\..\include\micasa_mgmd.h">
</File>
<File
RelativePath="..\..\include\micasa_types.h">
</File>
<File
RelativePath="..\..\include\sscs_utf8.h">
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

19
c_test/c_sample/Makefile Normal file
View File

@@ -0,0 +1,19 @@
#
# configure environment
#
TARGET = cSample
include global.mak
include defaults.$(PLAT)
include rules.mak
BIN_NAME = $(TARGET).exe
#
# target object and source files
#
include objs.$(PLAT)
#
# targets
#
include target

444
c_test/c_sample/cSample.c Normal file
View File

@@ -0,0 +1,444 @@
/**************************************************************************
Copyright (c) [2005] Novell, Inc. All Rights Reserved.
This library is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the Free Software Foundation;
version 2.1 of the License.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this library; if not, if not, contact Novell, Inc.
To contact Novell about this file by physical or electronic mail,
you may find current contact information at www.novell.com.
**************************************************************************/
/* Sample code for C Language miCASA APIs */
#include <stdio.h>
#include <stdlib.h>
#ifdef WIN32
#include <conio.h>
#include <windows.h>
#else
#define getch(x) getchar(x);
#endif
#include <time.h>
#include <string.h>
#include <micasa_mgmd.h>
#include <sscs_utf8.h>
///////////////////////////////////////////////////////////////////////
void Pause()
{
printf("\nPress a key ==>\n");
getch();
} /* end of Pause */
void AddSecret()
{
int rcode = 0;
char inputID[20];
char inputUsername[20];
char inputPassword[20];
SSCS_BASIC_CREDENTIAL credential = {0};
SSCS_SECRET_ID_T appSecretId = {0};
SSCS_SECRET_ID_T sharedSecretId = {0};
SSCS_EXT_T ext = {0};
printf("Enter secretID: ");
gets(inputID);
printf("Enter Username: ");
gets(inputUsername);
printf("Enter Password: ");
gets(inputPassword);
if ((sscs_Utf8Strlen(inputID) > 0) &&
(sscs_Utf8Strlen(inputUsername) > 0) &&
(sscs_Utf8Strlen(inputPassword) > 0))
{
appSecretId.len = sscs_Utf8Strlen(inputID) + 1;
sscs_Utf8Strcpy(appSecretId.id, inputID);
credential.unFlags = USERNAME_TYPE_CN_F;
sscs_Utf8Strcpy(credential.username, inputUsername);
credential.unLen = sscs_Utf8Strlen(inputUsername) + 1;
sscs_Utf8Strcpy(credential.password, inputPassword);
credential.pwordLen = sscs_Utf8Strlen(inputPassword) + 1;
// sets the credential for this app
rcode = miCASASetCredential(
0,
&appSecretId,
NULL,
SSCS_CRED_TYPE_BASIC_F,
&credential,
NULL
);
if (rcode)
{
printf("Add Secret returned %d\r\n", rcode);
Pause();
}
}
}
void DisplaySecret()
{
int rcode = 0;
char inputID[20];
SSCS_BASIC_CREDENTIAL credential = {0};
SSCS_SECRET_ID_T appSecretId = {0};
SSCS_SECRET_ID_T sharedSecretId = {0};
SSCS_EXT_T ext = {0};
printf("Enter secretID to display: ");
gets(inputID);
if (sscs_Utf8Strlen(inputID) > 0)
{
appSecretId.len = sscs_Utf8Strlen(inputID) + 1;
sscs_Utf8Strcpy(appSecretId.id, inputID);
// set name type we desire
credential.unFlags = USERNAME_TYPE_CN_F;
// gets the credential
rcode = miCASAGetCredential(
0,
&appSecretId,
NULL,
SSCS_CRED_TYPE_BASIC_F,
&credential,
NULL
);
if (rcode == NSSCS_SUCCESS)
{
printf("Credential for: %s\r\n", appSecretId.id);
printf("Username: %s\r\n", credential.username);
printf("Password: %s\r\n", credential.password);
}
else
{
printf("Error: %d\r\n", rcode);
Pause();
}
}
}
void RemoveSecret()
{
int rcode = 0;
char inputID[20];
SSCS_BASIC_CREDENTIAL credential = {0};
SSCS_SECRET_ID_T appSecretId = {0};
SSCS_SECRET_ID_T sharedSecretId = {0};
SSCS_EXT_T ext = {0};
printf("Enter secretID to remove: ");
gets(inputID);
if (sscs_Utf8Strlen(inputID) > 0)
{
appSecretId.len = sscs_Utf8Strlen(inputID) + 1;
sscs_Utf8Strcpy(appSecretId.id, inputID);
// set name type we desire
credential.unFlags = USERNAME_TYPE_CN_F;
// gets the credential
rcode = miCASARemoveCredential(
0,
&appSecretId,
NULL,
NULL
);
if (rcode == NSSCS_SUCCESS)
{
printf("Credential %s removed\r\n", inputID);
}
else
{
printf("Error: %d\r\n", rcode);
Pause();
}
}
}
void RunTest()
{
{
SSCS_BASIC_CREDENTIAL credential = {0};
SSCS_SECRET_ID_T appSecretId = {0};
int rcode = 0;
int iFlags = 0;
sscs_Utf8Strcpy(appSecretId.id, "NativeC.AppSecretID");
appSecretId.len = sscs_Utf8Strlen(appSecretId.id) + 1;
credential.unFlags = USERNAME_TYPE_CN_F;
sscs_Utf8Strcpy((char*)credential.username, "SampleUsername");
credential.unLen = sscs_Utf8Strlen(credential.username) + 1;
sscs_Utf8Strcpy((char*)credential.password, "SamplePassword");
credential.pwordLen = sscs_Utf8Strlen(credential.password) + 1;
printf("Setting %s\r\n", appSecretId.id);
printf(" Username: %s\r\n", credential.username);
printf(" Password: %s\r\n", credential.password);
// sets the credential for this app
rcode = miCASASetCredential(
iFlags,
&appSecretId,
NULL,
SSCS_CRED_TYPE_BASIC_F,
&credential,
NULL
);
credential.unFlags = USERNAME_TYPE_EMAIL_F;
sscs_Utf8Strcpy((char*)credential.username, "Username@novell.com");
credential.unLen = sscs_Utf8Strlen(credential.username) + 1;
sscs_Utf8Strcpy((char*)credential.password, "SamplePassword");
credential.pwordLen = sscs_Utf8Strlen(credential.password) + 1;
// sets the credential for this app
rcode = miCASASetCredential(
iFlags,
&appSecretId,
NULL,
SSCS_CRED_TYPE_BASIC_F,
&credential,
NULL
);
credential.unFlags = USERNAME_TYPE_LDAP_DN_F;
sscs_Utf8Strcpy((char*)credential.username, "cn=user,o=novell");
credential.unLen = sscs_Utf8Strlen(credential.username) + 1;
sscs_Utf8Strcpy((char*)credential.password, "SamplePassword");
credential.pwordLen = sscs_Utf8Strlen(credential.password) + 1;
// sets the credential for this app
rcode = miCASASetCredential(
iFlags,
&appSecretId,
NULL,
SSCS_CRED_TYPE_BASIC_F,
&credential,
NULL
);
credential.unFlags = USERNAME_TYPE_NDS_DN_F;
sscs_Utf8Strcpy((char*)credential.username, "Username.novell");
credential.unLen = sscs_Utf8Strlen(credential.username) + 1;
sscs_Utf8Strcpy((char*)credential.password, "SamplePassword");
credential.pwordLen = sscs_Utf8Strlen(credential.password) + 1;
// sets the credential for this app
rcode = miCASASetCredential(
iFlags,
&appSecretId,
NULL,
SSCS_CRED_TYPE_BASIC_F,
&credential,
NULL
);
// get the stuff back now
memset(&credential, 0, sizeof(SSCS_BASIC_CREDENTIAL));
credential.unLen = NSSCS_MAX_USERID_LEN;
credential.pwordLen = NSSCS_MAX_PWORD_LEN;
credential.unFlags = USERNAME_TYPE_CN_F;
// gets the specific credential
rcode = miCASAGetCredential(
iFlags,
&appSecretId,
NULL,
SSCS_CRED_TYPE_BASIC_F,
&credential,
NULL
);
if (rcode == NSSCS_SUCCESS)
{
printf("Getting Credential: %s\r\n", appSecretId.id);
printf(" Username: %s\r\n", credential.username);
printf(" Password: %s\r\n", credential.password);
}
else
{
printf("ERROR getting Credential: %d\r\n", rcode);
Pause();
}
printf("Removing Credential\r\n");
rcode = miCASARemoveCredential(
iFlags,
&appSecretId,
NULL,
NULL
);
if (rcode != NSSCS_SUCCESS)
printf("Error removing Credential: %d\r\n", rcode);
// get the stuff back now
memset(&credential, 0, sizeof(SSCS_BASIC_CREDENTIAL));
credential.unLen = NSSCS_MAX_USERID_LEN;
credential.pwordLen = NSSCS_MAX_PWORD_LEN;
credential.unFlags = USERNAME_TYPE_CN_F;
// gets the specific credential
rcode = miCASAGetCredential(
iFlags,
&appSecretId,
NULL,
SSCS_CRED_TYPE_BASIC_F,
&credential,
NULL
);
if (rcode == NSSCS_E_INVALID_SECRET_ID)
printf("Credential does not exist as expected -- SUCCESS\r\n");
else
{
printf("Credential exists, when it should not -- FAILED\r\n");
Pause();
}
printf("Test completed\r\n");
}
}
void RunTests()
{
char runtimes[6];
int iCount = 1;
int iTemp = 0;
int i = 0;
printf("Enter number interations to run (default 1): ");
gets(runtimes);
iTemp = atoi(runtimes);
if (iTemp > 1)
iCount=iTemp;
for (i=0; i<iCount; i++)
{
RunTest();
printf("\r\n");
}
}
void displayMenu()
{
int c;
while (1)
{
printf("\r\n");
printf("********** Menu **********\r\n");
printf("* 1. Add secret *\r\n");
printf("* 2. Display secret *\r\n");
printf("* 3. Remove secret *\r\n");
printf("* 4. Run automated test *\r\n");
printf("* 5. Quit *\r\n");
printf("**************************\r\n");
printf("Select option and press Enter\r\n");
c = getchar();
// get return
getchar();
if (c == '5')
return;
else if (c == '1')
AddSecret();
else if (c == '2')
DisplaySecret();
else if (c == '3')
RemoveSecret();
else if (c == '4')
RunTests();
}
}
/*
* NAME - main
*
* DESCRIPTION
* miCASA test program.
*
*/
int main
(
int argc,
char **argv
)
{ /* beginning of the call */
/* ########################## DECLARATIONS START HERE ######################### */
/* ############################## CODE STARTS HERE ############################ */
printf("***************************************************************\r\n");
printf("************** miCASA Sample program in C **************\r\n");
printf("***************************************************************\r\n");
displayMenu();
exit(0);
/* ########################## CODE ENDS HERE ##################### */
}

12
c_test/c_sample/link.w32 Normal file
View File

@@ -0,0 +1,12 @@
LINK_DEF_BLD = \
echo "$(addprefix ,$(ROOT)obj/w32/md/$(notdir $(OBJS)))" > $(LINKDEF);\
echo "$(ROOT)lib/w32/micasa.lib" >> $(LINKDEF);\
echo "$(MSC)lib/kernel32.lib" >> $(LINKDEF);\
echo "/LIBPATH:$(MSC)lib" >> $(LINKDEF);\
echo "/NODEFAULTLIB:uuid" >> $(LINKDEF);\
echo "/NOLOGO" >> $(LINKDEF);\
echo "/SUBSYSTEM:CONSOLE" >> $(LINKDEF);\
echo "/INCREMENTAL:NO" >> $(LINKDEF);\
echo "/PDB:Release/cSample.pdb" >> $(LINKDEF);\
echo "/OUT:Release/cSample.exe" >> $(LINKDEF);\
echo "/MACHINE:IX86" >> $(LINKDEF);\

View File

@@ -0,0 +1,12 @@
LINK_DEF_BLD = \
echo "$(addprefix ,$(ROOT)obj/w32/mdd/$(notdir $(OBJS)))" > $(LINKDEF);\
echo "$(ROOT)lib/w32/micasa_mdd.lib" >> $(LINKDEF);\
echo "$(MSC)lib/kernel32.lib" >> $(LINKDEF);\
echo "/LIBPATH:$(MSC)lib" >> $(LINKDEF);\
echo "/NODEFAULTLIB:uuid" >> $(LINKDEF);\
echo "/NOLOGO" >> $(LINKDEF);\
echo "/SUBSYSTEM:CONSOLE" >> $(LINKDEF);\
echo "/INCREMENTAL:NO" >> $(LINKDEF);\
echo "/PDB:Debug/cSample.pdb" >> $(LINKDEF);\
echo "/OUT:Debug/cSample.exe" >> $(LINKDEF);\
echo "/MACHINE:IX86" >> $(LINKDEF);

3
c_test/c_sample/objs.lux Normal file
View File

@@ -0,0 +1,3 @@
OBJS=\
cSample.$(O)

3
c_test/c_sample/objs.w32 Normal file
View File

@@ -0,0 +1,3 @@
OBJS=\
cSample.$(O)

26
c_test/c_sample/target Normal file
View File

@@ -0,0 +1,26 @@
include link$(xtra).$(PLAT)
all : $(BIN_NAME)
$(BIN_NAME) : $(OBJS)
@echo Linking $@ ...
@$(LINK_DEF_BLD)
$(LINK)
$(RM) $(LINKDEF)
$(TSTPACK)
@echo
install :
@echo client Installing $< ...
## The binaries
ifeq ($(PLAT),w32)
$(CP) Release/$(BIN_NAME) $(INSTALLDIR)tools/w32
else
$(CP) $(BINDIR)$(basename $(BIN_NAME)).$(BIN) $(INSTALLDIR)tools/lux
endif
clean :
@echo Cleaning ...
$(RM) *.err *.bak *.i *.res $(OBJDIR)*.$(O) $(OBJDIR)*.res Release/*.*

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,76 @@
/**************************************************************************
Copyright (c) [2005] Novell, Inc. All Rights Reserved.
This library is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the Free Software Foundation;
version 2.1 of the License.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this library; if not, if not, contact Novell, Inc.
To contact Novell about this file by physical or electronic mail,
you may find current contact information at www.novell.com.
**************************************************************************/
using System.Reflection;
using System.Runtime.CompilerServices;
//
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
//
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
//
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.*")]
//
// In order to sign your assembly you must specify a key to use. Refer to the
// Microsoft .NET Framework documentation for more information on assembly signing.
//
// Use the attributes below to control which key is used for signing.
//
// Notes:
// (*) If no key is specified, the assembly is not signed.
// (*) KeyName refers to a key that has been installed in the Crypto Service
// Provider (CSP) on your machine. KeyFile refers to a file which contains
// a key.
// (*) If the KeyFile and the KeyName values are both specified, the
// following processing occurs:
// (1) If the KeyName can be found in the CSP, that key is used.
// (2) If the KeyName does not exist and the KeyFile does exist, the key
// in the KeyFile is installed into the CSP and used.
// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.
// When specifying the KeyFile, the location of the KeyFile should be
// relative to the project output directory which is
// %Project Directory%\obj\<configuration>. For example, if your KeyFile is
// located in the project directory, you would specify the AssemblyKeyFile
// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
// documentation for more information on this.
//
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]
[assembly: AssemblyKeyName("")]

View File

@@ -0,0 +1,20 @@
#
# configure environment
#
TARGET = cSharpSample
CS_NAME = $(TARGET)$(xtra).exe
include global.mak
include defaults.$(PLAT)
include rules.mak
#
# target object and source files
#
include src.$(PLAT)
include objs.$(PLAT)
#
# targets
#
include target.cs

View File

@@ -0,0 +1,257 @@
/**************************************************************************
Copyright (c) [2005] Novell, Inc. All Rights Reserved.
This library is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the Free Software Foundation;
version 2.1 of the License.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this library; if not, if not, contact Novell, Inc.
To contact Novell about this file by physical or electronic mail,
you may find current contact information at www.novell.com.
**************************************************************************/
using System;
using Novell.CASA;
namespace cSharpTest
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
private static string APPID = "cSharpAppID";
//private static string SHARED_ID = "cSharp_SharedID";
private static string USERNAME = "Admin.nov<6F>ll";
private static string PASSWORD = "PasswordFor<6F>Admin";
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
Console.WriteLine("**************************************************");
Console.WriteLine("********** miCASA Sample written in C# ***********");
Console.WriteLine("**************************************************");
ShowMenu();
}
static private void ShowMenu()
{
while (true)
{
Console.WriteLine();
Console.WriteLine("********** Menu ***********");
Console.WriteLine("* 1. Add secret *");
Console.WriteLine("* 2. Display secret *");
Console.WriteLine("* 3. Remove secret *");
Console.WriteLine("* 4. Run automated test *");
Console.WriteLine("* 5. Quit *");
Console.WriteLine("***************************");
Console.WriteLine("Select option and Press enter");
String line = Console.ReadLine();
if (line.Length > 0)
{
char[] c = line.Substring(0, 1).ToCharArray();
if (c.Length > 0)
{
if (c[0].Equals('5'))
break;
if (c[0].Equals('1'))
AddSecret();
else if (c[0].Equals('2'))
DisplaySecret();
else if (c[0].Equals('3'))
RemoveSecret();
else if (c[0].Equals('4'))
RunTest();
}
}
}
}
static private void AddSecret()
{
while (true)
{
Console.Write("Enter SecretID: ");
String sID = Console.ReadLine();
Console.Write("Enter Username: ");
String sUsername = Console.ReadLine();
Console.Write("Enter Password: ");
String sPassword = Console.ReadLine();
if (sID != null && sUsername != null && sPassword != null)
{
try
{
//miCASA.SetBasicCredential(sID, null, sUsername, sPassword);
miCASA.SetCredential(0, sID, null, miCASA.USERNAME_TYPE_CN_F, sUsername, sPassword);
}
catch (miCasaException e)
{
Console.WriteLine(e.getMessage());
}
return;
}
else
{
Console.WriteLine("Invalid input, try again");
}
}
}
static private void RemoveSecret()
{
Console.Write("Enter SecretID to remove: ");
String sID = Console.ReadLine();
if (sID != null)
{
try
{
miCASA.RemoveBasicCredential(sID, null);
}
catch (miCasaException e)
{
Console.WriteLine(e.getMessage());
}
}
}
static private void DisplaySecret()
{
Console.Write("Enter SecretID to display: ");
String sID = Console.ReadLine();
if (sID != null)
{
try
{
BasicCredential bc;
//bc = miCASA.GetBasicCredential(sID, null);
bc = miCASA.GetCredential(0, sID, null, miCASA.USERNAME_TYPE_CN_F);
if (bc != null)
{
Console.WriteLine("Data for "+sID);
Console.WriteLine("------------------------");
Console.WriteLine("Username:" + bc.GetUsername());
Console.WriteLine("Password:" + bc.GetPassword());
Console.WriteLine("------------------------");
Console.WriteLine("Press the Enter key to continue");
Console.ReadLine();
}
else
Console.WriteLine(sID + " not found");
}
catch (miCasaException e)
{
Console.WriteLine(e.getMessage());
}
}
}
static private void RunTest()
{
int count = 1;
Console.Write("Enter times to run: ");
String sCount = Console.ReadLine();
try
{
int icount = int.Parse(sCount);
count = icount;
}
catch (Exception)
{
}
for (int i=0; i<count; i++)
{
Console.Write("Setting Credential .....");
try
{
miCASA.SetBasicCredential(APPID, null, USERNAME, PASSWORD);
Console.WriteLine("Succeeded");
}
catch (Exception e)
{
Console.WriteLine("Failed");
Console.WriteLine(e.ToString());
Console.WriteLine(e.StackTrace.ToString());
return;
}
Console.WriteLine("");
// did we get it the credential back
Console.WriteLine("Getting Credential .....");
try
{
BasicCredential bc = miCASA.GetBasicCredential(APPID, null);
if (bc != null)
{
if (bc.GetUsername().Equals(USERNAME))
Console.WriteLine(" Username matched : "+bc.GetUsername());
if (bc.GetPassword().Equals(PASSWORD))
Console.WriteLine(" Password matched : "+bc.GetPassword());
}
else
{
Console.WriteLine("Failed");
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
try
{
Console.WriteLine("\r\nRemoving Credential");
miCASA.RemoveBasicCredential(APPID, null);
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
try
{
BasicCredential bc = miCASA.GetBasicCredential(APPID, null);
if (bc != null)
{
Console.WriteLine("\r\nCredential exists and should not - FAILED!");
}
else
Console.WriteLine("\r\nCredential not found as expected - SUCCESS!");
}
catch (Exception)
{
Console.WriteLine("\r\n Credential not found as expected - SUCCESS!");
}
Console.WriteLine("Test completed ");
}
}
}
}

View File

@@ -0,0 +1,109 @@
<VisualStudioProject>
<CSHARP
ProjectType = "Local"
ProductVersion = "7.10.3077"
SchemaVersion = "2.0"
ProjectGuid = "{3FB57160-F475-4650-A45C-19D020661A2D}"
>
<Build>
<Settings
ApplicationIcon = "App.ico"
AssemblyKeyContainerName = ""
AssemblyName = "CSharpSample"
AssemblyOriginatorKeyFile = ""
DefaultClientScript = "JScript"
DefaultHTMLPageLayout = "Grid"
DefaultTargetSchema = "IE50"
DelaySign = "false"
OutputType = "Exe"
PreBuildEvent = ""
PostBuildEvent = ""
RootNamespace = "cSharpTest"
RunPostBuildEvent = "OnBuildSuccess"
StartupObject = ""
>
<Config
Name = "Debug"
AllowUnsafeBlocks = "false"
BaseAddress = "285212672"
CheckForOverflowUnderflow = "false"
ConfigurationOverrideFile = ""
DefineConstants = "DEBUG;TRACE"
DocumentationFile = ""
DebugSymbols = "true"
FileAlignment = "4096"
IncrementalBuild = "false"
NoStdLib = "false"
NoWarn = ""
Optimize = "false"
OutputPath = "bin\Debug\"
RegisterForComInterop = "false"
RemoveIntegerChecks = "false"
TreatWarningsAsErrors = "false"
WarningLevel = "4"
/>
<Config
Name = "Release"
AllowUnsafeBlocks = "false"
BaseAddress = "285212672"
CheckForOverflowUnderflow = "false"
ConfigurationOverrideFile = ""
DefineConstants = "TRACE"
DocumentationFile = ""
DebugSymbols = "false"
FileAlignment = "4096"
IncrementalBuild = "false"
NoStdLib = "false"
NoWarn = ""
Optimize = "true"
OutputPath = "bin\Release\"
RegisterForComInterop = "false"
RemoveIntegerChecks = "false"
TreatWarningsAsErrors = "false"
WarningLevel = "4"
/>
</Settings>
<References>
<Reference
Name = "System"
AssemblyName = "System"
HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll"
/>
<Reference
Name = "System.Data"
AssemblyName = "System.Data"
HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
/>
<Reference
Name = "System.XML"
AssemblyName = "System.Xml"
HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
/>
<Reference
Name = "Novell.CASA.miCASAWrapper"
Project = "{E21DD887-22F4-4935-9851-409715F663B0}"
Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
/>
</References>
</Build>
<Files>
<Include>
<File
RelPath = "App.ico"
BuildAction = "Content"
/>
<File
RelPath = "AssemblyInfo.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "cSharpSample.cs"
SubType = "Code"
BuildAction = "Compile"
/>
</Include>
</Files>
</CSHARP>
</VisualStudioProject>

View File

@@ -0,0 +1,48 @@
<VisualStudioProject>
<CSHARP LastOpenVersion = "7.10.3077" >
<Build>
<Settings ReferencePath = "D:\ccm\SSClient\SecretStoreClient_src\c_sharp\NSSCSWrapper\bin\Debug\;D:\ccm\SSClient\SecretStoreClient_src\c_sharp\NSSCSWrapper\bin\Release\" >
<Config
Name = "Debug"
EnableASPDebugging = "false"
EnableASPXDebugging = "false"
EnableUnmanagedDebugging = "false"
EnableSQLServerDebugging = "false"
RemoteDebugEnabled = "false"
RemoteDebugMachine = ""
StartAction = "Project"
StartArguments = "1"
StartPage = ""
StartProgram = ""
StartURL = ""
StartWorkingDirectory = ""
StartWithIE = "true"
/>
<Config
Name = "Release"
EnableASPDebugging = "false"
EnableASPXDebugging = "false"
EnableUnmanagedDebugging = "false"
EnableSQLServerDebugging = "false"
RemoteDebugEnabled = "false"
RemoteDebugMachine = ""
StartAction = "Project"
StartArguments = "2"
StartPage = ""
StartProgram = ""
StartURL = ""
StartWorkingDirectory = ""
StartWithIE = "false"
/>
</Settings>
</Build>
<OtherProjectSettings
CopyProjectDestinationFolder = ""
CopyProjectUncPath = ""
CopyProjectOption = "0"
ProjectView = "ProjectFiles"
ProjectTrust = "0"
/>
</CSHARP>
</VisualStudioProject>

View File

@@ -0,0 +1,21 @@
Microsoft Visual Studio Solution File, Format Version 8.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cSharpSample", "cSharpSample.csproj", "{3FB57160-F475-4650-A45C-19D020661A2D}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfiguration) = preSolution
Debug = Debug
Release = Release
EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution
{3FB57160-F475-4650-A45C-19D020661A2D}.Debug.ActiveCfg = Debug|.NET
{3FB57160-F475-4650-A45C-19D020661A2D}.Debug.Build.0 = Debug|.NET
{3FB57160-F475-4650-A45C-19D020661A2D}.Release.ActiveCfg = Release|.NET
{3FB57160-F475-4650-A45C-19D020661A2D}.Release.Build.0 = Release|.NET
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection
EndGlobal

Binary file not shown.

View File

@@ -0,0 +1,8 @@
OBJS=\
BasicCredential\
miCASA\
AssemblyInfo\
NativeCalls\
Secret\
SecretStore

View File

@@ -0,0 +1,4 @@
OBJS=\
cSharpSample\
AssemblyInfo

View File

@@ -0,0 +1,8 @@
SRC=\
BasicCredential.cs\
miCASA.cs\
AssemblyInfo.cs\
NativeCalls.cs\
Secret.cs\
SecretStore.cs

View File

@@ -0,0 +1,3 @@
SRC=\
cSharpSample.cs\
AssemblyInfo.cs

166
c_test/dev_test/enumerate.c Normal file
View File

@@ -0,0 +1,166 @@
#include "sscs_cache.h"
#include <wchar.h>
#include <assert.h>
#define MAX_ID_LIST_BUF 4*1024
#define MAX_SECRET_VAL_LEN 1024
#define MAX_RETURNED_IDS 10
void enumerateIDs(SSCS_SECRETSTORE_HANDLE_T *ssHandle,int type,
SSCS_KEYCHAIN_ID_T *keychainID)
{
SSCS_KEYCHAIN_ID_LIST_T kcIDList;
SSCS_SECRET_ID_LIST_T secretIDList;
uint32_t ssFlags = 0;
int retVal,i=0;
SSCS_SECRET_T mySecret;
SSCS_PASSWORD_T epPassword = {0,0,""};
uint32_t bytesRequired = 0;
if(type == 0) //keychains
{
printf("Enumerate keychains\n----------------------\n");
kcIDList.keyChainIDList = (SSCS_KEYCHAIN_ID_T *)malloc(
sizeof(SSCS_KEYCHAIN_ID_T) * MAX_RETURNED_IDS );
assert(kcIDList.keyChainIDList);
kcIDList.returnedIDs = MAX_RETURNED_IDS;
retVal = sscs_CacheEnumerateKeychainIDs(ssHandle, ssFlags,NULL, &kcIDList,NULL);
if(retVal != 0)
{
printf("sscs_CacheEnumerateKeychainIDs failed: %d\n",retVal);
}
for( i = 0 ; i < kcIDList.returnedIDs; i++ )
{
printf("%s\n",kcIDList.keyChainIDList[i].keychainID);
}
free(kcIDList.keyChainIDList);
}
else //secrets
{
mySecret.data = (char *)malloc(MAX_SECRET_VAL_LEN);
assert(mySecret.data);
printf("Enumerating secrets\n-----------------\n");
secretIDList.secIDList = (SSCS_SECRET_ID_T*)malloc(
sizeof(SSCS_SECRET_ID_T)* MAX_RETURNED_IDS);
assert(secretIDList.secIDList);
secretIDList.returnedIDs = MAX_RETURNED_IDS;
retVal = sscs_CacheEnumerateSecretIDs(ssHandle, ssFlags, keychainID, NULL, &secretIDList, NULL);
if(retVal != 0)
{
printf("sscs_CacheEnumerateSecretIDs failed: %d\n",retVal);
}
for( i = 0 ; i < secretIDList.returnedIDs; i++ )
{
SSCS_SECRET_ID_T secId;
strcpy(secId.id,secretIDList.secIDList[i].id);
secId.len = strlen(secretIDList.secIDList[i].id)+1;
mySecret.len = MAX_SECRET_VAL_LEN;
memset(mySecret.data,0,MAX_SECRET_VAL_LEN);
retVal = sscs_CacheReadSecret(ssHandle, ssFlags, keychainID,&secId, &mySecret, &epPassword, &bytesRequired, NULL);
if(retVal != 0)
{
printf("sscs_CacheReadSecret failed: %d\n",retVal);
}
else
{
printf("Read secretID - %s\n",secretIDList.secIDList[i].id);
printf("SecretVal is : \n%s\n",mySecret.data);
}
}
free(secretIDList.secIDList);
free(mySecret.data);
}
printf("---------------------------------\n");
}
int main(int argc, char** argv)
{
int n = 0,z=0;
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
uint32_t bytesRequired;
wchar_t *testssName;
unsigned char testssNameUTF[1024];
wchar_t *testkcId;
unsigned char testkcIdUTF[1024];
wchar_t *testsecretId;
unsigned char testsecretIdUTF[1024];
wchar_t **wptr = NULL;
uint32_t ssFlags = 0;
int retVal = 0;
int i;
SSCS_SECRET_T mySecret;
SSCS_PASSWORD_T epPassword = {0,0,""};
SSCS_SECRET_ID_T mySecretID;
SSCS_KEYCHAIN_ID_T mykeychainID;
SSCS_KEYCHAIN_ID_T newkeychainID;
memset(&mykeychainID,0,sizeof(SSCS_KEYCHAIN_ID_T));
testkcId = (wchar_t*)malloc(1024*sizeof(wchar_t));
assert(testkcId);
//All this required when we have some real wchars :-)
wcscpy(testkcId,L"SSCS_SESSION_KEY_CHAIN_ID");
wptr = &testkcId;
mykeychainID.len = wcsrtombs(testkcIdUTF,wptr,1024,NULL);
mykeychainID.len+=1;
memcpy(mykeychainID.keychainID,testkcIdUTF,mykeychainID.len);
memset(&mySecretID,0,sizeof(mySecretID));
testsecretId = (wchar_t*)malloc(1024*sizeof(wchar_t));
assert(testsecretId);
wcscpy(testsecretId,L"MySecret");
wptr = &testsecretId;
mySecretID.len = wcsrtombs(testsecretIdUTF,wptr,1024,NULL);
mySecretID.len +=1;
memcpy(mySecretID.id,testsecretIdUTF,mySecretID.len);
mySecret.len = MAX_SECRET_VAL_LEN;
mySecret.data = (char *)malloc(MAX_SECRET_VAL_LEN);
assert(mySecret.data);
secID.version = 0x00040000;
testssName = (wchar_t*)malloc(1024*sizeof(wchar_t));
assert(testssName);
wcscpy(testssName,L"SecretStoreName");
wptr = &testssName;
n = wcsrtombs(testssNameUTF,wptr,1024,NULL);
memcpy(secID.ssName,testssNameUTF,n);
ssHandle = sscs_CacheOpenSecretStore(&secID,ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
printf("sscs_CacheOpenSecretStore succesful\n");
enumerateIDs(ssHandle,0,NULL);
enumerateIDs(ssHandle, 1,&mykeychainID);
retVal = sscs_CacheCloseSecretStore(ssHandle,ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
else
printf("sscs_CacheCloseSecretStore success: %d\n",retVal);
free(testkcId);
free(testsecretId);
free(mySecret.data);
free(testssName);
printf("Completed testing\n");
return 0;
}

8
c_test/dev_test/makefile Normal file
View File

@@ -0,0 +1,8 @@
all: sample enumerate
sample:
gcc -g -o sample -I../../include/ -L../../lib/lux/dbg/ -lmicasa ./sample.c
enumerate:
gcc -g -o enumerate -I../../include enumerate.c -L../../lib/lux/dbg/ -lmicasacache
clean:
rm ./sample
rm ./enumerate

1779
c_test/dev_test/sample.c Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -0,0 +1,21 @@
Microsoft Visual Studio Solution File, Format Version 8.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sshtst", "sshtst.vcproj", "{48BF7628-6AD4-4FF7-AD10-AA87F541385E}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfiguration) = preSolution
Debug = Debug
Release = Release
EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution
{48BF7628-6AD4-4FF7-AD10-AA87F541385E}.Debug.ActiveCfg = Debug|Win32
{48BF7628-6AD4-4FF7-AD10-AA87F541385E}.Debug.Build.0 = Debug|Win32
{48BF7628-6AD4-4FF7-AD10-AA87F541385E}.Release.ActiveCfg = Release|Win32
{48BF7628-6AD4-4FF7-AD10-AA87F541385E}.Release.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection
EndGlobal

Binary file not shown.

View File

@@ -0,0 +1,19 @@
#
# configure environment
#
TARGET = sshtst
include global.mak
include defaults.$(PLAT)
include rules.mak
BIN_NAME = $(TARGET).exe
#
# target object and source files
#
include objs.$(PLAT)
#
# targets
#
include target

View File

@@ -0,0 +1,374 @@
/**************************************************************************
%name: displaycache.c %
%version: 3 %
%date_modified: Fri May 20 15:09:50 2005 %
**************************************************************************/
/***************************************************************
*** This code is available at "www.developer.novell.com/ndk/ **
***************************************************************/
/* Sample code for C Language SecretStore Client Service APIs */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <micasa_mgmd.h>
#include <micasa.h>
#define GSS_BLD_STR "4.0.1"
#define SSCS_BINARY_TYPE_F 0x00000004L
static char SSCS_APP_SECRET[] = {'S','S','_','A','p','p', 0};
///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
/*
* Global data
*/
int optErr = 1; // if error message should be printed
int optIdx = 1; // index into parent argv vector
int optionString = 1; // character checked for validity
char *optArg = NULL; // argument associated with option
#define BADCHAR (int)'?'
#define ERRMSG ""
/* interactive flag */
static int aFlag = 1;
void Pause()
{ /* beginning of the call */
/* ############################## CODE STARTS HERE ############################ */
if(aFlag)
{
}
/* ########################## CODE ENDS HERE ######################### */
} /* end of Pause */
/* */
/*
* NAME - main
*
* DESCRIPTION
* SecretStore SharedSecret test program.
*
*/
void main
(
int argc,
char **argv
)
{ /* beginning of the call */
/* ########################## DECLARATIONS START HERE ######################### */
SSCS_SECRETSTORE_T ssid = {0};
SSCS_SECRETSTORE_INFO_T ssInfo = {0};
SSCS_KEYCHAIN_ID_T keyChainID = {0};
SSCS_READEXT_T rInfo = {0};
void *ssContext = NULL;
int appTstFlag = 0, multiCredTstFlag = 0, multiEntryTstFlag = 0;
char *secret;
static char multiEntryCredSet[] = {'S','h','a','r','e','d','S','e','c','r','e','t',' ','M','u','l','t','i','p','l','e',' ','E','n','t','r','y',' ','C','r','e','d','S','e','t',' ','T','e','s','t',0};
int rcode = NSSCS_SUCCESS;
int exCount = 1, i, j, remLock = 0, unlock = 0,
master = 0, rCount = 1;
long opCount, bufSize = NSSCS_MAX_SECRET_BUF_LEN;
unsigned long startTime, endTime, pFlag = 0L, count = 0;
SSCS_SECRET_ID_T secretID = {0};
// SharedSecret data
void *secretHandle; // handle for passing to functions
SSCS_SH_SECRET_ID_T shSecret; // SharedSecret struct
char *key = NULL;
unsigned char *value = NULL;
int kLen = 0;
int vLen = 0;
SSCS_SH_SECRET_ID_LIST_T shSecIDList = {0};
SSCS_BASIC_CREDENTIAL credential = {0};
SSCS_SECRET_ID_T appSecretId = {0};
SSCS_SECRET_ID_T sharedSecretId = {0};
SSCS_EXT_T ext = {0};
/* ############################## CODE STARTS HERE ############################ */
if((secret = (char *)malloc(NSSCS_MAX_SECRET_BUF_LEN)) == NULL)
{
printf("\nSecret Buffer Malloc Failed!!!\n");
exit(-1);
}
if((value = (unsigned char *)malloc(NSSCS_MAX_SECRET_BUF_LEN)) == NULL)
{
printf("\nValue Buffer Malloc Failed!!!\n");
exit(-1);
}
if((key = (char *)malloc(NSSCS_MAX_SECRET_ID_LEN)) == NULL)
{
printf("\nKey Buffer Malloc Failed!!!\n");
exit(-1);
}
memset(key, 0, NSSCS_MAX_SECRET_ID_LEN);
memset(value, 0, NSSCS_MAX_SECRET_BUF_LEN);
memset(secret, 0, NSSCS_MAX_SECRET_BUF_LEN);
//printf("\nSecretStore Client Service NDK Test Program version %s ...\n\n", GSS_BLD_STR);
// Initialize the SID to the user ID if the owner
strcpy(ssid.ssName, "testuser");
ssid.version = NSSCS_VERSION_NUMBER;
// printf("Execution Count Set to: [%d]\n", exCount);
// printf("Initializing...\n");
startTime = time(NULL);
// printf("Done...\n");
// Pause();
if((ssContext = miCASAOpenSecretStoreCache(&ssid, 0, NULL)) == NULL)
{
rcode = NSSCS_E_CANT_OPEN_CLIENT_CACHE;
printf("\nCache Failed to Open!!!\n");
goto ERROR_1;
}
else
{
printf("\nCache Opened...\n");
}
keyChainID.len = SSCS_S_KC_ID_CHARS;
strcpy(keyChainID.keychainID, SSCS_SESSION_KEY_CHAIN_ID);
for(j = 0, opCount = 0; j < exCount; j++)
{
// ***************************************************
// ********* Enumerting Secrets *********
// ***************************************************
printf("\nEnumerating the Secrets ....\r\n ");
shSecIDList.enumHandle = 1;
shSecIDList.returnedIDs = 20;
shSecIDList.secIDList = (SSCS_SH_SECRET_ID_T *)malloc(20 * sizeof(SSCS_SH_SECRET_ID_T));
if(shSecIDList.secIDList)
{
memset(shSecIDList.secIDList, 0 , 20 * sizeof(SSCS_SH_SECRET_ID_T));
do
{
if((rcode = miCASAEnumerateSecretIDs(ssContext, &keyChainID, 0, NULL, &shSecIDList, NULL)) == NSSCS_SUCCESS)
{
if (shSecIDList.returnedIDs > 0)
{
for(i = 0; i < (int)shSecIDList.returnedIDs; i++)
{
if(shSecIDList.secIDList[i].type & SSCS_APPLICATION_TYPE_F)
{
printf("\nSS_App:\r\n");
}
else if(shSecIDList.secIDList[i].type & SSCS_CREDENTIAL_TYPE_F)
{
printf("\nSS_CredSet:\r\n");
}
else if(shSecIDList.secIDList[i].type & SSCS_BINARY_TYPE_F)
{
printf("\nSS_Binary:\r\n");
}
else
{
printf("\n Unsupported SecretID type .... ");
}
//printf("\nLength of the SecretID [%ld]\n", shSecIDList.secIDList[i].len);
printf("SecretID [%s]\n", shSecIDList.secIDList[i].name);
if(shSecIDList.secIDList[i].type & SSCS_CREDENTIAL_TYPE_F)
// dump the values
{
shSecret.type = SSCS_CREDENTIAL_TYPE_F;
//strcpy(shSecret.name, shSecIDList.secIDList[i].name);
strncpy(shSecret.name, (&(shSecIDList.secIDList[i]).name[11]), shSecIDList.secIDList[i].len -11);
shSecret.len = strlen(shSecret.name)+1;
secretHandle = miCASA_CreateSHSHandle(); // create a new secretHandle
if(!secretHandle)
{
goto ERROR_1;
}
rcode = miCASAReadSecret(ssContext, &keyChainID, 0, secretHandle, &shSecret, NULL, &rInfo, NULL);
if(rcode != NSSCS_SUCCESS)
{
printf("\nmiCASAReadSecret returned [%d] when reading [%s]\n\n", rcode, multiEntryCredSet);
Pause();
goto ERROR_1;
}
if(!(rcode = miCASA_GetNextSHSEntry(1, secretHandle, &kLen, key, &vLen, value)))
{
while(rcode == NSSCS_SUCCESS)
{
if(0 == strlen(key))
{
break;
}
strcpy(secret, key);
strcat(secret, "=");
strcat(secret, (char *)value);
printf("\t [%s]=[%s]\n", key, value);
// clear the buffers
memset(key, 0, NSSCS_MAX_SECRET_ID_LEN);
memset(value, 0, NSSCS_MAX_SECRET_BUF_LEN);
memset(secret, 0, NSSCS_MAX_SECRET_BUF_LEN);
rcode = miCASA_GetNextSHSEntry(0, secretHandle, &kLen, key, &vLen, value);
}
}
miCASA_DestroySHSHandle(secretHandle); // destroy the secretHandle
}
}
}
else
{
printf("No secrets found in cache\r\n");
return;
}
}
else
{
printf("Enumerate secrets returned %d\r\n", rcode);
// resize the array based on the count returned because the cache engine below
// does not support iterations
if(rcode == NSSCS_E_ENUM_BUFF_TOO_SHORT)
{
shSecIDList.enumHandle = 1;
free(shSecIDList.secIDList);
shSecIDList.secIDList = (SSCS_SH_SECRET_ID_T *)malloc(shSecIDList.returnedIDs * sizeof(SSCS_SH_SECRET_ID_T));
}
if((rcode = miCASAEnumerateSecretIDs(ssContext, &keyChainID, 0, NULL, &shSecIDList, NULL)) == NSSCS_SUCCESS)
{
for(i = 0; i < (int)shSecIDList.returnedIDs; i++)
{
if(shSecIDList.secIDList[i].type & SSCS_APPLICATION_TYPE_F)
{
printf("\nSS_App:\r\n");
}
else if(shSecIDList.secIDList[i].type & SSCS_CREDENTIAL_TYPE_F)
{
printf("\nSS_CredSet:\r\n");
}
else if(shSecIDList.secIDList[i].type & SSCS_BINARY_TYPE_F)
{
printf("\nSS_Binary:\r\n ");
}
else
{
printf("\n Unsupported SecretID type .... ");
}
//printf("Length of the SecretID [%ld]\n", shSecIDList.secIDList[i].len);
printf("SecretID [%s]\n", shSecIDList.secIDList[i].name);
}
}
else
{
printf("Enumerate secrets returned %d\r\n", rcode);
}
}
}
while(shSecIDList.enumHandle);
}
else
{
printf("\nEnum Malloc fialed .... ");
}
} /* end for */
endTime = time(NULL);
/* ########################## CODE EXITS HERE ##################### */
ERROR_1:
if(secret)
{
memset(secret, 0, NSSCS_MAX_SECRET_BUF_LEN);
free(secret);
}
if(value)
{
memset(value, 0, NSSCS_MAX_SECRET_BUF_LEN);
free(value);
}
if(key)
{
memset(key, 0, NSSCS_MAX_SECRET_ID_LEN);
free(key);
}
if(ssContext)
{
rcode = miCASACloseSecretStoreCache(ssContext, 0, NULL);
}
if(shSecIDList.secIDList)
{
free(shSecIDList.secIDList);
}
Pause();
exit(rcode);
/* ########################## CODE ENDS HERE ##################### */
}

View File

@@ -0,0 +1,153 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="DisplayCache"
ProjectGUID="{534B797C-48CF-45F9-9591-654ABA0B4934}"
SccProjectName=""
SccLocalPath="">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="D:\ccm\SSClient\SecretStoreClient_src\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
BasicRuntimeChecks="3"
RuntimeLibrary="5"
UsePrecompiledHeader="2"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="4"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="micasa_mdd.lib odbc32.lib odbccp32.lib"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="D:\casa2\lib\w32"
GenerateDebugInformation="TRUE"
SubSystem="1"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"
TypeLibraryName=".\Debug/sshtst.tlb"
HeaderFileName=""/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory=".\Release"
IntermediateDirectory=".\Release"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="D:\ccm\SSClient\SecretStoreClient_src\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="TRUE"
RuntimeLibrary="4"
EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="2"
PrecompiledHeaderFile=".\Release/sshtst.pch"
AssemblerListingLocation=".\Release/"
ObjectFile=".\Release/"
ProgramDataBaseFileName=".\Release/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="micasa.lib odbc32.lib odbccp32.lib"
OutputFile="$(OutDir)/$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="D:\ccm\SSClient\SecretStoreClient_src\lib\w32"
SubSystem="1"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"
TypeLibraryName=".\Release/sshtst.tlb"
HeaderFileName=""/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<File
RelativePath=".\displaycache.c">
</File>
<File
RelativePath="..\..\include\micasa.h">
</File>
<File
RelativePath="..\..\include\micasa_mgmd.h">
</File>
<File
RelativePath="..\..\include\sscs_ipc.h">
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,15 @@
LINK_DEF_BLD = \
echo "$(addprefix ,$(ROOT)obj/w32/md/$(notdir $(OBJS)))" > $(LINKDEF);\
echo "$(ROOT)lib/w32/micasa.lib" >> $(LINKDEF);\
echo "$(MSC)lib/kernel32.lib" >> $(LINKDEF);\
echo "$(MSC)lib/libc.lib" >> $(LINKDEF);\
echo "/LIBPATH:$(MSC)lib" >> $(LINKDEF);\
echo "/NODEFAULTLIB:uuid" >> $(LINKDEF);\
echo "/NOLOGO" >> $(LINKDEF);\
echo "/SUBSYSTEM:CONSOLE" >> $(LINKDEF);\
echo "/INCREMENTAL:NO" >> $(LINKDEF);\
echo "/PDB:Release/displaycache.pdb" >> $(LINKDEF);\
echo "/OUT:Release/DisplayCache.exe" >> $(LINKDEF);\
echo "/MACHINE:IX86" >> $(LINKDEF);\
echo "/VERSION:$(BLD_VER)" >> $(LINKDEF);\
echo "/WARN:3" >> $(LINKDEF);

View File

@@ -0,0 +1,15 @@
LINK_DEF_BLD = \
echo "$(addprefix ,$(ROOT)obj/w32/mdd/$(notdir $(OBJS)))" > $(LINKDEF);\
echo "$(ROOT)lib/w32/micasa_mdd.lib" >> $(LINKDEF);\
echo "$(MSC)lib/kernel32.lib" >> $(LINKDEF);\
echo "$(MSC)lib/libc.lib" >> $(LINKDEF);\
echo "/LIBPATH:$(MSC)lib" >> $(LINKDEF);\
echo "/NODEFAULTLIB:uuid" >> $(LINKDEF);\
echo "/NOLOGO" >> $(LINKDEF);\
echo "/SUBSYSTEM:CONSOLE" >> $(LINKDEF);\
echo "/INCREMENTAL:NO" >> $(LINKDEF);\
echo "/PDB:Debug/displaycache.pdb" >> $(LINKDEF);\
echo "/OUT:Debug/DisplayCache.exe" >> $(LINKDEF);\
echo "/MACHINE:IX86" >> $(LINKDEF);\
echo "/VERSION:$(BLD_VER)" >> $(LINKDEF);\
echo "/WARN:3" >> $(LINKDEF);

View File

@@ -0,0 +1,3 @@
OBJS=\
displaycache.$(O)

View File

@@ -0,0 +1,3 @@
OBJS=\
displaycache.$(O)

View File

@@ -0,0 +1,15 @@
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by lsstest.rc
//
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 101
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

View File

@@ -0,0 +1,152 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="DisplayCache"
SccProjectName=""
SccLocalPath="">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="D:\ccm\SSClient\SecretStoreClient_src\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
BasicRuntimeChecks="3"
RuntimeLibrary="5"
UsePrecompiledHeader="2"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="4"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="micasa_mdd.lib odbc32.lib odbccp32.lib"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="D:\ccm\SSClient\SecretStoreClient_src\bin\w32\mdd"
GenerateDebugInformation="TRUE"
SubSystem="1"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"
TypeLibraryName=".\Debug/sshtst.tlb"
HeaderFileName=""/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory=".\Release"
IntermediateDirectory=".\Release"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="D:\ccm\SSClient\SecretStoreClient_src\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="TRUE"
RuntimeLibrary="4"
EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="2"
PrecompiledHeaderFile=".\Release/sshtst.pch"
AssemblerListingLocation=".\Release/"
ObjectFile=".\Release/"
ProgramDataBaseFileName=".\Release/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="micasa.lib odbc32.lib odbccp32.lib"
OutputFile="$(OutDir)/$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="D:\ccm\SSClient\SecretStoreClient_src\lib\w32"
SubSystem="1"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"
TypeLibraryName=".\Release/sshtst.tlb"
HeaderFileName=""/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<File
RelativePath=".\displaycache.c">
</File>
<File
RelativePath="..\..\include\micasa.h">
</File>
<File
RelativePath="..\..\include\micasa_mgmd.h">
</File>
<File
RelativePath="..\..\include\sscs_ipc.h">
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,26 @@
include link$(xtra).$(PLAT)
all : $(BIN_NAME)
$(BIN_NAME) : $(OBJS)
@echo Linking $@ ...
@$(LINK_DEF_BLD)
$(LINK)
$(RM) $(LINKDEF)
$(TSTPACK)
@echo
install :
@echo client Installing $< ...
## The binaries
ifeq ($(PLAT),w32)
$(CP) Release/$(BIN_NAME) $(INSTALLDIR)tools/w32
else
$(CP) $(BINDIR)$(basename $(BIN_NAME)).$(BIN) $(INSTALLDIR)tools/lux
endif
clean :
@echo Cleaning ...
$(RM) *.err *.bak *.i *.res $(OBJDIR)*.$(O) $(OBJDIR)*.res Release/*.*

View File

@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="3" relativePaths="false">
<component name="ProjectRootManager" version="2">
<jdk name="java version &quot;1.4.1_01&quot;" />
<library name="miCasa" />
<projectPath>
<root type="composite">
<root type="simple" url="file://$PROJECT_DIR$" />
</root>
</projectPath>
<sourcePath>
<root type="composite">
<root type="simple" url="file://$PROJECT_DIR$/src" />
<root type="jdk" rootType="sourcePath" name="java version &quot;1.4.1_01&quot;" />
<root type="library" rootType="sourcePath" name="miCasa" />
<root type="simple" url="file://D:/ccm/SSClient/SecretStoreClient_src/c_jwrapper/src" />
</root>
</sourcePath>
<classPath>
<root type="composite">
<root type="output" />
<root type="jdk" rootType="classPath" name="java version &quot;1.4.1_01&quot;" />
<root type="library" rootType="classPath" name="miCasa" />
</root>
</classPath>
<excludePath>
<root type="composite">
<root type="excludedOutput" />
</root>
</excludePath>
<javadocPath>
<root type="composite">
<root type="jdk" rootType="javadocPath" name="java version &quot;1.4.1_01&quot;" />
<root type="library" rootType="javadocPath" name="miCasa" />
</root>
</javadocPath>
<assert_keyword enabled="no" />
<exclude_output enabled="yes" />
</component>
<component name="CompilerConfiguration">
<option name="DEFAULT_COMPILER" value="Javac" />
<option name="SYNCHRONIZE_OUTPUT_DIRECTORY" value="false" />
<option name="DEFAULT_OUTPUT_PATH" value="$PROJECT_DIR$/classes" />
<option name="OUTPUT_MODE" value="single" />
<resourceExtensions>
<entry name=".+\.(properties|xml|html)" />
<entry name=".+\.(gif|png|jpeg|jpg)" />
</resourceExtensions>
</component>
<component name="JavacSettings">
<option name="DEBUGGING_INFO" value="true" />
<option name="GENERATE_NO_WARNINGS" value="false" />
<option name="DEPRECATION" value="true" />
<option name="ADDITIONAL_OPTIONS_STRING" value="" />
<option name="MAXIMUM_HEAP_SIZE" value="128" />
</component>
<component name="JikesSettings">
<option name="JIKES_PATH" value="" />
<option name="DEBUGGING_INFO" value="true" />
<option name="DEPRECATION" value="true" />
<option name="GENERATE_NO_WARNINGS" value="false" />
<option name="GENERATE_MAKE_FILE_DEPENDENCIES" value="false" />
<option name="DO_FULL_DEPENDENCE_CHECK" value="false" />
<option name="IS_EMACS_ERRORS_MODE" value="true" />
<option name="ADDITIONAL_OPTIONS_STRING" value="" />
</component>
<component name="AntConfiguration">
<option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="JavadocGenerationManager">
<option name="OUTPUT_DIRECTORY" />
<option name="OPTION_SCOPE" value="protected" />
<option name="OPTION_HIERARCHY" value="true" />
<option name="OPTION_NAVIGATOR" value="true" />
<option name="OPTION_INDEX" value="true" />
<option name="OPTION_SEPARATE_INDEX" value="true" />
<option name="OPTION_DOCUMENT_TAG_USE" value="false" />
<option name="OPTION_DOCUMENT_TAG_AUTHOR" value="false" />
<option name="OPTION_DOCUMENT_TAG_VERSION" value="false" />
<option name="OPTION_DOCUMENT_TAG_DEPRECATED" value="true" />
<option name="OPTION_DEPRECATED_LIST" value="true" />
<option name="OTHER_OPTIONS" value="" />
<option name="HEAP_SIZE" />
<option name="OPEN_IN_BROWSER" value="true" />
</component>
<component name="WebManager">
<option enabled="false" />
</component>
<component name="WebRootContainer" />
<component name="EjbManager" enabled="false" />
<component name="JUnitProjectSettings">
<option name="TEST_RUNNER" value="UI" />
</component>
<component name="EntryPointsManager">
<entry_points />
</component>
<component name="EjbActionsConfiguration">
<option name="NEW_MESSAGE_BEAN_LAST_PACKAGE" value="" />
<option name="NEW_ENTITY_BEAN_LAST_PACKAGE" value="" />
<option name="NEW_SESSION_BEAN_LAST_PACKAGE" value="" />
</component>
<component name="CodeStyleManager">
<option name="USE_DEFAULT_CODE_STYLE_SCHEME" value="true" />
<option name="CODE_STYLE_SCHEME" value="Default" />
</component>
<component name="ExportToHTMLSettings">
<option name="PRINT_LINE_NUMBERS" value="false" />
<option name="OPEN_IN_BROWSER" value="false" />
<option name="OUTPUT_DIRECTORY" />
</component>
<component name="WebReferencesManager" />
</project>

View File

@@ -0,0 +1,490 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="3" relativePaths="false">
<component name="WebReferencesConfigurable">
<property name="CUSTOM_MAP_LOOKUP" type="list" />
<property name="INTERFACE_POSTFIX" value="" type="string" />
<property name="electric.home" value="/electric" type="string" />
<property name="INTERFACE_PREFIX" value="I" type="string" />
<property name="INCLUDE_SYSTEM_MAP" value="true" type="boolean" />
<property name="THROW_EXCEPTIONS" value="false" type="boolean" />
<property name="ENABLED" value="false" type="boolean" />
</component>
<component name="FileEditorManager">
<history>
<source-position-entry url="jar://D:/ccm/iMan202_FPx/iManager/tools/jdk/jre/lib/rt.jar!/java/lang/String.class" line="12" column="19" vertical-scroll-proportion="0.20307167" horizontal-scroll-proportion="0.15182649" />
<source-position-entry url="file://$PROJECT_DIR$/src/JavaSample.java" line="106" column="0" vertical-scroll-proportion="0.5633803" horizontal-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</source-position-entry>
<source-position-entry url="file://D:/ccm/SSClient/SecretStoreClient_src/c_jwrapper/src/com/novell/casa/MiCasa.java" line="77" column="34" vertical-scroll-proportion="2.633803" horizontal-scroll-proportion="0.2713797" />
</history>
<open-files>
<source-position-entry url="file://$PROJECT_DIR$/src/JavaSample.java" line="106" column="0" vertical-scroll-proportion="0.5633803" horizontal-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</source-position-entry>
<source-position-entry url="file://D:/ccm/SSClient/SecretStoreClient_src/c_jwrapper/src/com/novell/casa/MiCasa.java" line="77" column="34" vertical-scroll-proportion="2.633803" horizontal-scroll-proportion="0.2713797" selected="true" />
</open-files>
</component>
<component name="ToolWindowManager">
<frame x="-4" y="-4" width="1288" height="1002" extended-state="0" />
<editor active="false" />
<layout>
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.25" order="1" />
<window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="true" weight="0.36259976" order="2" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.25" order="2" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.32930845" order="7" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="sliding" type="sliding" visible="false" weight="0.4" order="0" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="docked" type="docked" visible="true" weight="0.237751" order="0" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.36800894" order="3" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.25" order="1" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.3295325" order="1" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="true" internal_type="sliding" type="sliding" visible="false" weight="0.3295325" order="8" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.4" order="6" />
<window_info id="Web" active="false" anchor="left" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.25" order="2" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.25" order="5" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.33" order="0" />
<window_info id="EJB" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.25" order="4" />
</layout>
</component>
<component name="Debugger">
<line_breakpoints>
<breakpoint url="file://$PROJECT_DIR$/src/JavaSample.java" line="106">
<option name="ENABLED" value="true" />
<option name="SUSPEND_VM" value="true" />
<option name="COUNT_FILTER_ENABLED" value="false" />
<option name="COUNT_FILTER" value="0" />
<option name="CONDITION_ENABLED" value="false" />
<option name="CONDITION" />
<option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" />
<option name="LOG_MESSAGE" />
<option name="CLASS_FILTERS_ENABLED" value="false" />
<option name="INVERSE_CLASS_FILLTERS" value="false" />
<option name="SUSPEND_POLICY" value="SuspendAll" />
</breakpoint>
</line_breakpoints>
<exception_breakpoints>
<breakpoint_any>
<option name="NOTIFY_CAUGHT" value="true" />
<option name="NOTIFY_UNCAUGHT" value="true" />
<option name="ENABLED" value="false" />
<option name="SUSPEND_VM" value="true" />
<option name="COUNT_FILTER_ENABLED" value="false" />
<option name="COUNT_FILTER" value="0" />
<option name="CONDITION_ENABLED" value="false" />
<option name="CONDITION" />
<option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" />
<option name="LOG_MESSAGE" />
<option name="CLASS_FILTERS_ENABLED" value="false" />
<option name="INVERSE_CLASS_FILLTERS" value="false" />
<option name="SUSPEND_POLICY" value="SuspendAll" />
</breakpoint_any>
</exception_breakpoints>
<field_breakpoints />
<method_breakpoints />
</component>
<component name="DebuggerManager">
<watch_expression value="rcode" />
</component>
<component name="DebuggerSettings">
<option name="TRACING_FILTERS_ENABLED" value="true" />
<option name="TOSTRING_CLASSES_ENABLED" value="false" />
<option name="VALUE_LOOKUP_DELAY" value="700" />
<option name="DEBUGGER_TRANSPORT" value="0" />
<option name="FORCE_CLASSIC_VM" value="true" />
<option name="HIDE_DEBUGGER_ON_PROCESS_TERMINATION" value="false" />
<option name="SKIP_SYNTHETIC_METHODS" value="true" />
<option name="SKIP_CONSTRUCTORS" value="false" />
<option name="STEP_THREAD_SUSPEND_POLICY" value="SuspendThread" />
<default_breakpoint_settings>
<option name="NOTIFY_CAUGHT" value="true" />
<option name="NOTIFY_UNCAUGHT" value="true" />
<option name="WATCH_MODIFICATION" value="true" />
<option name="WATCH_ACCESS" value="true" />
<option name="WATCH_ENTRY" value="true" />
<option name="WATCH_EXIT" value="true" />
<option name="ENABLED" value="true" />
<option name="SUSPEND_VM" value="true" />
<option name="COUNT_FILTER_ENABLED" value="false" />
<option name="COUNT_FILTER" value="0" />
<option name="CONDITION_ENABLED" value="false" />
<option name="CONDITION" />
<option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" />
<option name="LOG_MESSAGE" />
<option name="CLASS_FILTERS_ENABLED" value="false" />
<option name="INVERSE_CLASS_FILLTERS" value="false" />
<option name="SUSPEND_POLICY" value="SuspendAll" />
</default_breakpoint_settings>
<filter>
<option name="PATTERN" value="com.sun.*" />
<option name="ENABLED" value="true" />
</filter>
<filter>
<option name="PATTERN" value="java.*" />
<option name="ENABLED" value="true" />
</filter>
<filter>
<option name="PATTERN" value="javax.*" />
<option name="ENABLED" value="true" />
</filter>
<filter>
<option name="PATTERN" value="org.omg.*" />
<option name="ENABLED" value="true" />
</filter>
<filter>
<option name="PATTERN" value="sun.*" />
<option name="ENABLED" value="true" />
</filter>
<filter>
<option name="PATTERN" value="junit.*" />
<option name="ENABLED" value="true" />
</filter>
</component>
<component name="CompilerWorkspaceConfiguration">
<option name="COMPILE_IN_BACKGROUND" value="false" />
<option name="AUTO_SHOW_ERRORS_IN_EDITOR" value="true" />
</component>
<component name="ErrorTreeViewConfiguration">
<option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
<option name="HIDE_WARNINGS" value="false" />
</component>
<component name="DaemonCodeAnalyzer">
<disable_hints />
</component>
<component name="StructureViewFactory">
<option name="SORT_MODE" value="0" />
<option name="GROUP_OVERRIDINGS" value="true" />
<option name="GROUP_IMPLEMENTINGS" value="true" />
<option name="AUTOSCROLL_MODE" value="true" />
<option name="SHOW_METHODS" value="true" />
<option name="SHOW_FIELDS" value="true" />
<option name="AUTOSCROLL_FROM_SOURCE" value="false" />
<option name="GROUP_GETTERS_AND_SETTERS" value="true" />
</component>
<component name="CvsConfiguration">
<Checkout>
<option name="DATE_TAG" value="" />
<option name="REVISION_TAG" value="" />
<option name="PRUNE_EMPTY_DIRS" value="true" />
<option name="RESET_STICKY_TAGS" value="false" />
<option name="NON_RECURSIVE" value="false" />
<option name="CREATE_WORKING_DIR" value="" />
<option name="ADDITIONAL_OPTIONS" value="" />
</Checkout>
<Update>
<option name="DATE_TAG" value="" />
<option name="REVISION_TAG" value="" />
<option name="PRUNE_EMPTY_DIRS" value="true" />
<option name="RESET_STICKY_TAGS" value="false" />
<option name="NON_RECURSIVE" value="false" />
<option name="CREATE_MISSING_DIRECTORIES" value="true" />
<option name="DONT_CHANGE_FILES" value="false" />
<option name="QUIET_MODE" value="false" />
<option name="ADDITIONAL_OPTIONS" value="" />
</Update>
<Commit>
<option name="NON_RECURSIVE" value="false" />
<option name="REVISION_TAG" value="" />
<option name="LOG_MESSAGE" value="" />
<option name="ADDITIONAL_OPTIONS" value="" />
</Commit>
<Diff>
<option name="REVISION_TAG" value="HEAD" />
<option name="DATE_TAG" value="" />
<option name="IGNORE_WHITESPACE" value="false" />
</Diff>
<Add>
<option name="ADD_AS_BINARY" value="false" />
<option name="LOG_MESSAGE" value="" />
</Add>
<Status>
<option name="NON_RECURSIVE" value="false" />
<option name="INCLUDE_TAGS" value="false" />
</Status>
<Edit>
<option name="NON_RECURSIVE" value="false" />
<option name="FORCE_RECURSIVE" value="false" />
<option name="EDIT" value="false" />
<option name="UNEDIT" value="false" />
<option name="COMMIT" value="false" />
<option name="ALL" value="true" />
<option name="NONE" value="false" />
</Edit>
<Remove>
<option name="NON_RECURSIVE" value="false" />
<option name="FORCE_RECURSIVE" value="false" />
<option name="DELETE_FILE" value="false" />
</Remove>
<Log>
<option name="DEFAULT_BRANCH" value="false" />
<option name="NON_RECURSIVE" value="false" />
<option name="QUIET_MODE" value="true" />
<option name="ADDITIONAL_OPTIONS" value="" />
</Log>
<Editors>
<option name="NON_RECURSIVE" value="false" />
<option name="FORCE_RECURSIVE" value="false" />
</Editors>
<option name="CLIENT_PATH" value="" />
<option name="EXTERNAL_DIFF_PATH" />
<option name="USE_EXTERNAL_DIFF" value="false" />
<option name="WORKING_FILES_READONLY" value="false" />
<option name="COMPRESSION_LEVEL" value="0" />
<option name="ADDITIONAL_OPTIONS" value="" />
<option name="BINARY_FILES_EXTENSIONS" />
<option name="REUSE_LAST_LOG_MESSAGE" value="false" />
<option name="PUT_FOCUS_INTO_LOG_MESSAGE" value="false" />
<option name="SHOW_UPDATE_OPTIONS" value="true" />
<option name="SHOW_COMMIT_OPTIONS" value="true" />
<option name="SHOW_DIFF_OPTIONS" value="true" />
<option name="SHOW_ADD_OPTIONS" value="true" />
<option name="SHOW_STATUS_OPTIONS" value="true" />
<option name="SHOW_EDIT_OPTIONS" value="true" />
<option name="SHOW_UNEDIT_OPTIONS" value="true" />
<option name="SHOW_REMOVE_OPTIONS" value="true" />
<option name="SHOW_LOG_OPTIONS" value="true" />
<option name="SHOW_EDITORS_OPTIONS" value="true" />
<option name="HIDE_UNKNOWN_FILES" value="false" />
<option name="HIDE_MISSING_FILES" value="false" />
<option name="HIDE_UP_TO_DATE_FILES" value="false" />
</component>
<component name="CvsVcs">
<expanded_paths />
</component>
<component name="ProjectViewSettings">
<navigator currentView="ProjectPane" flattenPackages="false" showMembers="false" showStructure="false" autoscrollToSource="false" splitterProportion="0.5" />
<view id="ProjectPane">
<expanded_node type="directory" url="file://$PROJECT_DIR$/src" />
<expanded_node type="directory" url="file://$PROJECT_DIR$" />
</view>
<view id="SourcepathPane" />
<view id="ClasspathPane" />
</component>
<component name="RunManager">
<option name="SHOW_SETTINGS_BEFORE_RUNNING" value="false" />
<option name="COMPILE_BEFORE_RUNNING" value="true" />
<activeType name="Application" />
<configuration name="&lt;template&gt;" type="Application" default="true" selected="false">
<option name="MAIN_CLASS_NAME" />
<option name="VM_PARAMETERS" />
<option name="PROGRAM_PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
</configuration>
<configuration name="&lt;template&gt;" type="Applet" default="true" selected="false">
<option name="MAIN_CLASS_NAME" />
<option name="HTML_FILE_NAME" />
<option name="HTML_USED" value="false" />
<option name="WIDTH" value="400" />
<option name="HEIGHT" value="300" />
<option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
<option name="VM_PARAMETERS" />
</configuration>
<configuration name="&lt;template&gt;" type="JUnit" default="true" selected="false">
<option name="PACKAGE_NAME" />
<option name="MAIN_CLASS_NAME" />
<option name="METHOD_NAME" />
<option name="TEST_OBJECT" />
<option name="VM_PARAMETERS" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
</configuration>
<configuration name="&lt;template&gt;" type="Remote" default="true" selected="false">
<option name="USE_SOCKET_TRANSPORT" value="true" />
<option name="SERVER_MODE" value="false" />
<option name="SHMEM_ADDRESS" value="javadebug" />
<option name="HOST" value="localhost" />
<option name="PORT" value="5005" />
</configuration>
<configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false">
<WebServerIntegration name="" />
<Host>localhost</Host>
<Port>5050</Port>
<LaunchServer>false</LaunchServer>
</configuration>
<configuration name="Unnamed" type="Application" default="false" selected="true">
<option name="MAIN_CLASS_NAME" value="JavaSample" />
<option name="VM_PARAMETERS" />
<option name="PROGRAM_PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
</configuration>
</component>
<component name="BookmarkManager" />
<component name="Commander">
<leftPanel view="Project" />
<rightPanel view="Project" />
<splitter proportion="0.5" />
</component>
<component name="PropertiesComponent">
<property name="MemberChooser.copyJavadoc" value="false" />
<property name="GoToClass.includeLibraries" value="false" />
<property name="MemberChooser.showClasses" value="true" />
<property name="MemberChooser.sorted" value="false" />
<property name="GoToFile.includeJavaFiles" value="false" />
<property name="GoToClass.toSaveIncludeLibraries" value="false" />
</component>
<component name="SelectInManager" />
<component name="VssConfiguration">
<CheckoutOptions>
<option name="COMMENT" value="" />
<option name="DO_NOT_GET_LATEST_VERSION" value="false" />
<option name="REPLACE_WRITABLE" value="false" />
<option name="RECURSIVE" value="false" />
</CheckoutOptions>
<CheckinOptions>
<option name="COMMENT" value="" />
<option name="KEEP_CHECKED_OUT" value="false" />
<option name="RECURSIVE" value="false" />
</CheckinOptions>
<AddOptions>
<option name="COMMENT" value="" />
<option name="STORE_ONLY_LATEST_VERSION" value="false" />
<option name="CHECK_OUT_IMMEDIATELY" value="false" />
<option name="FILE_TYPE" value="0" />
</AddOptions>
<UndocheckoutOptions>
<option name="MAKE_WRITABLE" value="false" />
<option name="REPLACE_LOCAL_COPY" value="0" />
<option name="RECURSIVE" value="false" />
</UndocheckoutOptions>
<DiffOptions>
<option name="IGNORE_WHITE_SPACE" value="false" />
<option name="IGNORE_CASE" value="false" />
</DiffOptions>
<GetOptions>
<option name="REPLACE_WRITABLE" value="0" />
<option name="MAKE_WRITABLE" value="false" />
<option name="RECURSIVE" value="false" />
</GetOptions>
<option name="CLIENT_PATH" value="" />
<option name="SRCSAFEINI_PATH" value="" />
<option name="USER_NAME" value="" />
<option name="PWD" value="" />
<option name="SHOW_CHECKOUT_OPTIONS" value="true" />
<option name="SHOW_CHECKIN_OPTIONS" value="true" />
<option name="SHOW_ADD_OPTIONS" value="true" />
<option name="SHOW_UNDOCHECKOUT_OPTIONS" value="true" />
<option name="SHOW_DIFF_OPTIONS" value="true" />
<option name="SHOW_GET_OPTIONS" value="true" />
<option name="USE_EXTERNAL_DIFF" value="false" />
<option name="EXTERNAL_DIFF_PATH" value="" />
<option name="REUSE_LAST_COMMENT" value="false" />
<option name="PUT_FOCUS_INTO_COMMENT" value="false" />
</component>
<component name="HierarchyBrowserManager">
<option name="SHOW_PACKAGES" value="false" />
<option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
<option name="SORT_ALPHABETICALLY" value="false" />
</component>
<component name="WebViewSettings">
<webview flattenPackages="false" showMembers="false" autoscrollToSource="false" />
</component>
<component name="EjbViewSettings">
<EjbView showMembers="false" autoscrollToSource="false" />
</component>
<component name="LvcsConfiguration">
<option name="LOCAL_VCS_ENABLED" value="true" />
<option name="LOCAL_VCS_PURGING_PERIOD" value="259200000" />
<option name="ADD_LABEL_ON_PROJECT_OPEN" value="true" />
<option name="ADD_LABEL_ON_PROJECT_COMPILATION" value="true" />
<option name="ADD_LABEL_ON_FILE_PACKAGE_COMPILATION" value="true" />
<option name="ADD_LABEL_ON_PROJECT_MAKE" value="true" />
<option name="ADD_LABEL_ON_RUNNING" value="true" />
<option name="ADD_LABEL_ON_DEBUGGING" value="true" />
<option name="ADD_LABEL_ON_UNIT_TEST" value="true" />
<option name="MARK_EXTERNAL_CHANGES_AS_UP_TO_DATE" value="true" />
</component>
<component name="InspectionManager">
<option name="AUTOSCROLL_TO_SOURCE" value="false" />
<option name="SPLITTER_PROPORTION" value="0.5" />
<inspection_tool class="Unused declaration" enabled="false">
<option name="ADD_MAINS_TO_ENTRIES" value="true" />
<option name="ADD_JUNIT_TO_ENTRIES" value="true" />
<option name="ADD_EJB_TO_ENTRIES" value="true" />
<option name="ADD_APPLET_TO_ENTRIES" value="true" />
<option name="ADD_SERVLET_TO_ENTRIES" value="true" />
<option name="ADD_NONJAVA_TO_ENTRIES" value="true" />
</inspection_tool>
<inspection_tool class="Declaration access can be weaker" enabled="false">
<option name="SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS" value="true" />
<option name="SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES" value="true" />
<option name="SUGGEST_PRIVATE_FOR_INNERS" value="false" />
</inspection_tool>
<inspection_tool class="Declaration can have static modifier" enabled="false" />
<inspection_tool class="Declaration can have final modifier" enabled="false">
<option name="REPORT_CLASSES" value="true" />
<option name="REPORT_METHODS" value="true" />
<option name="REPORT_FIELDS" value="true" />
</inspection_tool>
<inspection_tool class="Unused method parameters" enabled="false" />
<inspection_tool class="Actual method parameter is the same constant" enabled="false" />
<inspection_tool class="Unused method return value" enabled="false" />
<inspection_tool class="Method returns the same value" enabled="false" />
<inspection_tool class="Empty method" enabled="false" />
<inspection_tool class="Redundant throws clause" enabled="false" />
<inspection_tool class="Constant conditions &amp; exceptions" enabled="false" />
<inspection_tool class="Unused assignment" enabled="false" />
<inspection_tool class="Redundant type cast" enabled="false" />
<inspection_tool class="Local variable or parameter can be final" enabled="false">
<option name="REPORT_VARIABLES" value="true" />
<option name="REPORT_PARAMETERS" value="true" />
</inspection_tool>
<inspection_tool class="Declaration has javadoc problems" enabled="false">
<option name="TOP_LEVEL_CLASS_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="public" />
<option name="REQUIRED_TAGS" value="" />
</value>
</option>
<option name="INNER_CLASS_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="protected" />
<option name="REQUIRED_TAGS" value="" />
</value>
</option>
<option name="METHOD_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="protected" />
<option name="REQUIRED_TAGS" value="@return@param@throws or @exception" />
</value>
</option>
<option name="FIELD_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="protected" />
<option name="REQUIRED_TAGS" value="" />
</value>
</option>
</inspection_tool>
<inspection_tool class="Deprecated API usage" enabled="false" />
<inspection_tool class="equals() and hashCode() not paired" enabled="false" />
</component>
<component name="TodoView" selected-index="0">
<todo-panel id="selected-file">
<are-packages-shown value="false" />
<flatten-packages value="false" />
<is-autoscroll-to-source value="true" />
</todo-panel>
<todo-panel id="all">
<are-packages-shown value="true" />
<flatten-packages value="false" />
<is-autoscroll-to-source value="true" />
</todo-panel>
</component>
<component name="VcsManagerConfiguration">
<option name="ACTIVE_VCS_NAME" value="" />
</component>
<component name="StarteamConfiguration">
<option name="SERVER" value="" />
<option name="PORT" value="49201" />
<option name="USER" value="" />
<option name="PASSWORD" value="" />
<option name="PROJECT" value="" />
<option name="VIEW" value="" />
<option name="ALTERNATIVE_WORKING_PATH" value="" />
</component>
</project>

View File

@@ -0,0 +1,218 @@
/**************************************************************************
Copyright (c) [2005] Novell, Inc. All Rights Reserved.
This library is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the Free Software Foundation;
version 2.1 of the License.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this library; if not, if not, contact Novell, Inc.
To contact Novell about this file by physical or electronic mail,
you may find current contact information at www.novell.com.
**************************************************************************/
import com.novell.casa.MiCasa;
import com.novell.casa.MiCasaException;
import com.novell.casa.NetCredential;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class JavaSample {
static String APPID = "JavaSampleApp";
static String USERNAME = "JavaSampl<EFBFBD>User";
static String PASSWORD = "JavaSampl<EFBFBD>Password";
public static void main(String[] args) {
System.out.println("*******************************************************");
System.out.println("******** miCASA Sample Program written in Java ******");
System.out.println("*******************************************************");
ShowMenu();
return;
}
static private void ShowMenu() {
while (true) {
System.out.println("");
System.out.println("********** Menu *********");
System.out.println("* 1. Add secret *");
System.out.println("* 2. Display secret *");
System.out.println("* 3. Remove secret *");
System.out.println("* 4. Run automated test *");
System.out.println("* 5. Quit *");
System.out.println("***************************");
System.out.println("Select option and Press enter");
try {
byte[] ba = new byte[100];
int bytesRead;
bytesRead = System.in.read(ba);
if (ba[0] == ('5'))
break;
if (ba[0] == '1')
AddSecret();
else if (ba[0] == ('3'))
RemoveSecret();
else if (ba[0] == ('2'))
DisplaySecret();
else if (ba[0] == ('4'))
RunTest();
} catch (Exception e) {
}
}
}
static String GetInfo(String prompt) {
System.out.print("Enter " + prompt);
BufferedReader keyb = new BufferedReader(new InputStreamReader(System.in));
try {
String line = keyb.readLine();
return line;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
static private void AddSecret() {
while (true) {
String sID = GetInfo("SecretID: ");
String sUsername = GetInfo("Username: ");
String sPassword = GetInfo("Password: ");
if (sID != null && sUsername != null && sPassword != null) {
try {
MiCasa.setCredential(0, sID, null, MiCasa.USERNAME_TYPE_OTHER_F, sUsername, sPassword);
} catch (MiCasaException e) {
System.out.println(e.getMessage());
} catch (Exception e) {
e.printStackTrace();
}
return;
} else {
System.out.println("Invalid input, try again");
}
}
}
static private void RemoveSecret() {
String sID = GetInfo("SecretID to remove: ");
if (sID != null) {
try {
MiCasa.removeCredential(0, sID, null);
} catch (MiCasaException e) {
System.out.println(e.getMessage());
} catch (Exception e) {
e.printStackTrace();
}
}
}
static private void DisplaySecret() {
String sID = GetInfo("SecretID to display: ");
if (sID != null) {
try {
NetCredential nc = MiCasa.getCredential(0, sID, null, MiCasa.USERNAME_TYPE_CN_F);
if (nc != null) {
System.out.println("Username:" + nc.getUsername());
System.out.println("Password:" + nc.getPassword());
} else
System.out.println(sID + " not found");
} catch (MiCasaException e) {
System.out.println(e.getMessage());
} catch (Exception e) {
e.printStackTrace();
}
}
}
static private void RunTest() {
int count = 1;
String sCount = GetInfo("times to run: ");
try {
int icount = Integer.parseInt(sCount);
count = icount;
} catch (Exception e) {
}
for (int i = 0; i < count; i++) {
System.out.println("Setting Credential .....");
try {
MiCasa.setCredential(0, APPID, null, 0, USERNAME, PASSWORD);
System.out.println("Succeeded");
} catch (Exception e) {
System.out.println("Failed");
System.out.println(e.toString());
return;
}
System.out.println("");
// did we get it the credential back
System.out.println("Getting Credential .....");
try {
NetCredential bc = MiCasa.getCredential(0, APPID, null, 0);
if (bc != null) {
if (bc.getUsername().equals(USERNAME))
System.out.println(" Username matched : " + bc.getUsername());
if (bc.getPassword().equals(PASSWORD))
System.out.println(" Password matched : " + bc.getPassword());
} else {
System.out.println("Failed");
}
} catch (Exception e) {
System.out.println(e.toString());
}
try {
System.out.println("\r\nRemoving Credential");
MiCasa.removeCredential(0, APPID, null);
} catch (Exception e) {
System.out.println(e.toString());
}
try {
NetCredential bc = MiCasa.getCredential(0, APPID, null, 0);
if (bc != null) {
System.out.println("\r\nCredential exists and should not - FAILED!");
} else
System.out.println("\r\nCredential not found as expected - SUCCESS!");
} catch (Exception e) {
System.out.println("\r\n Credential not found as expected - SUCCESS!");
}
System.out.println("Test completed ");
}
}
}

View File

@@ -0,0 +1,19 @@
#
# configure environment
#
TARGET = sshtst
include global.mak
include defaults.$(PLAT)
include rules.mak
BIN_NAME = $(TARGET).exe
#
# target object and source files
#
include objs.$(PLAT)
#
# targets
#
include target

View File

@@ -0,0 +1,15 @@
LINK_DEF_BLD = \
echo "$(addprefix ,$(ROOT)obj/w32/md/$(notdir $(OBJS)))" > $(LINKDEF);\
echo "$(ROOT)lib/w32/nsscssdk.lib" >> $(LINKDEF);\
echo "$(MSC)lib/kernel32.lib" >> $(LINKDEF);\
echo "$(MSC)lib/libc.lib" >> $(LINKDEF);\
echo "/LIBPATH:$(MSC)lib" >> $(LINKDEF);\
echo "/NODEFAULTLIB:uuid" >> $(LINKDEF);\
echo "/NOLOGO" >> $(LINKDEF);\
echo "/SUBSYSTEM:CONSOLE" >> $(LINKDEF);\
echo "/INCREMENTAL:NO" >> $(LINKDEF);\
echo "/PDB:Release/sshtst.pdb" >> $(LINKDEF);\
echo "/OUT:Release/sshtst.exe" >> $(LINKDEF);\
echo "/MACHINE:IX86" >> $(LINKDEF);\
echo "/VERSION:$(BLD_VER)" >> $(LINKDEF);\
echo "/WARN:3" >> $(LINKDEF);

View File

@@ -0,0 +1,15 @@
LINK_DEF_BLD = \
echo "$(addprefix ,$(ROOT)obj/w32/mdd/$(notdir $(OBJS)))" > $(LINKDEF);\
echo "$(ROOT)lib/w32/nsscssdk_mdd.lib" >> $(LINKDEF);\
echo "$(MSC)lib/kernel32.lib" >> $(LINKDEF);\
echo "$(MSC)lib/libc.lib" >> $(LINKDEF);\
echo "/LIBPATH:$(MSC)lib" >> $(LINKDEF);\
echo "/NODEFAULTLIB:uuid" >> $(LINKDEF);\
echo "/NOLOGO" >> $(LINKDEF);\
echo "/SUBSYSTEM:CONSOLE" >> $(LINKDEF);\
echo "/INCREMENTAL:NO" >> $(LINKDEF);\
echo "/PDB:Debug/sshtst.pdb" >> $(LINKDEF);\
echo "/OUT:Debug/sshtst.exe" >> $(LINKDEF);\
echo "/MACHINE:IX86" >> $(LINKDEF);\
echo "/VERSION:$(BLD_VER)" >> $(LINKDEF);\
echo "/WARN:3" >> $(LINKDEF);

View File

@@ -0,0 +1,3 @@
OBJS=\
sshtst.$(O)

View File

@@ -0,0 +1,3 @@
OBJS=\
sshtst.$(O)

View File

@@ -0,0 +1,15 @@
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by lsstest.rc
//
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 101
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

1757
c_test/sdk_sshtst/sshtst.c Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,90 @@
# Microsoft Developer Studio Project File - Name="sshtst" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=sshtst - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "sshtst.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "sshtst.mak" CFG="sshtst - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "sshtst - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "sshtst - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "sshtst - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "I:\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 nsss.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"I:\bin\w32\md"
!ELSEIF "$(CFG)" == "sshtst - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "I:\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 nsscssdk_mdd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"I:\bin\w32\mdd"
!ENDIF
# Begin Target
# Name "sshtst - Win32 Release"
# Name "sshtst - Win32 Debug"
# Begin Source File
SOURCE=.\sshtst.c
# End Source File
# End Target
# End Project

View File

@@ -0,0 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "sshtst"=.\sshtst.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

Binary file not shown.

138
c_test/sdk_sshtst/sshtst.rc Normal file
View File

@@ -0,0 +1,138 @@
/******************************************************************************
%name: sshtst.rc %
%version: 1 %
%date_modified: Mon Dec 06 20:46:04 2004 %
*
* File Name: sshtst.rc
*
* Description: This is the sshtst resource file.
*
* Author(s): Cameron Mashayekhi
*
* Modifier(s): None.
*
* Unpublished Copyright (c) (1998-2003) Novell, All Rights Reserved.
*
* THIS WORK IS SUBJECT TO U.S. AND INTERNATIONAL COPYRIGHT LAWS AND TREATIES.
* USE AND REDISTRIBUTION OF THIS WORK IS SUBJECT TO THE LICENSE AGREEMENT
* ACCOMPANYING THE SOFTWARE DEVELOPMENT KIT (SDK) THAT CONTAINS THIS WORK.
* PURSUANT TO THE SDK LICENSE AGREEMENT, NOVELL HEREBY GRANTS TO DEVELOPER A
* ROYALTY-FREE, NON-EXCLUSIVE LICENSE TO INCLUDE NOVELL'S SAMPLE CODE IN ITS
* PRODUCT. NOVELL GRANTS DEVELOPER WORLDWIDE DISTRIBUTION RIGHTS TO MARKET,
* DISTRIBUTE, OR SELL NOVELL'S SAMPLE CODE AS A COMPONENT OF DEVELOPER'S
* PRODUCTS. NOVELL SHALL HAVE NO OBLIGATIONS TO DEVELOPER OR DEVELOPER'S
* CUSTOMERS WITH RESPECT TO THIS CODE.
*
*****************************************************************************/
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
#include "ssbldver.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
#ifndef _MAC
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION WSS_BLD_NO
PRODUCTVERSION WSS_BLD_NO
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "FileDescription", SSS_WSSHTEST_PR_STRING
VALUE "OriginalFilename", SSS_WSSHTEST_STR
VALUE "Comments", SSS_WCLUTIL_STRING
VALUE "CompanyName", SSS_COMPANY_STR
VALUE "FileVersion", WSS_BLD_STR
VALUE "LegalCopyright", SSS_COPYRIGHT_STR
VALUE "LegalTrademarks", SSS_PATENT_STR
VALUE "ProductName", SSS_PRODUCT_STR
VALUE "ProductVersion", GSS_BLD_STR
VALUE "SpecialBuild", SSS_DEVBLD_STR
#ifdef DEBUG
VALUE "PrivateBuild", SSS_DEBUG_VER_STR
VALUE "InternalName", SSS_WSSHTEST_STR_DBG
#endif
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
#endif // !_MAC
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@@ -0,0 +1,21 @@
Microsoft Visual Studio Solution File, Format Version 8.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sshtst", "sshtst.vcproj", "{48BF7628-6AD4-4FF7-AD10-AA87F541385E}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfiguration) = preSolution
Debug = Debug
Release = Release
EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution
{48BF7628-6AD4-4FF7-AD10-AA87F541385E}.Debug.ActiveCfg = Debug|Win32
{48BF7628-6AD4-4FF7-AD10-AA87F541385E}.Debug.Build.0 = Debug|Win32
{48BF7628-6AD4-4FF7-AD10-AA87F541385E}.Release.ActiveCfg = Release|Win32
{48BF7628-6AD4-4FF7-AD10-AA87F541385E}.Release.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection
EndGlobal

Binary file not shown.

View File

@@ -0,0 +1,174 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="sshtst"
ProjectGUID="{2635AF48-A4B2-42BD-97E2-A9AD9FF79E8C}"
SccProjectName=""
SccLocalPath="">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="D:\ccm\SSClient\SecretStoreClient_src\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
BasicRuntimeChecks="3"
RuntimeLibrary="5"
UsePrecompiledHeader="2"
PrecompiledHeaderFile=".\Debug/sshtst.pch"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="4"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="micasa_mdd.lib odbc32.lib odbccp32.lib"
OutputFile=".\Debug/sshtst.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="D:\ccm\SSClient\SecretStoreClient_src\bin\w32\mdd"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile=".\Debug/sshtst.pdb"
SubSystem="1"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"
TypeLibraryName=".\Debug/sshtst.tlb"
HeaderFileName=""/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory=".\Release"
IntermediateDirectory=".\Release"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="D:\ccm\SSClient\SecretStoreClient_src\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="TRUE"
RuntimeLibrary="4"
EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="2"
PrecompiledHeaderFile=".\Release/sshtst.pch"
AssemblerListingLocation=".\Release/"
ObjectFile=".\Release/"
ProgramDataBaseFileName=".\Release/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="micasa.lib odbc32.lib odbccp32.lib"
OutputFile=".\Release/sshtst.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="D:\ccm\SSClient\SecretStoreClient_src\lib\w32"
ProgramDatabaseFile=".\Release/sshtst.pdb"
SubSystem="1"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"
TypeLibraryName=".\Release/sshtst.tlb"
HeaderFileName=""/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<File
RelativePath="..\..\include\micasa.h">
</File>
<File
RelativePath="..\..\include\micasa_mgmd.h">
</File>
<File
RelativePath="..\..\include\sscs_ipc.h">
</File>
<File
RelativePath="sshtst.c">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BasicRuntimeChecks="3"/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""/>
</FileConfiguration>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

26
c_test/sdk_sshtst/target Normal file
View File

@@ -0,0 +1,26 @@
include link$(xtra).$(PLAT)
all : $(BIN_NAME)
$(BIN_NAME) : $(OBJS)
@echo Linking $@ ...
@$(LINK_DEF_BLD)
$(LINK)
$(RM) $(LINKDEF)
$(TSTPACK)
@echo
install :
@echo client Installing $< ...
## The binaries
ifeq ($(PLAT),w32)
$(CP) Release/$(BIN_NAME) $(INSTALLDIR)tools/w32
else
$(CP) $(BINDIR)$(basename $(BIN_NAME)).$(BIN) $(INSTALLDIR)tools/lux
endif
clean :
@echo Cleaning ...
$(RM) *.err *.bak *.i *.res $(OBJDIR)*.$(O) $(OBJDIR)*.res Release/*.*

View File

@@ -0,0 +1,20 @@
#
# configure environment
#
TARGET = testcache
include global.mak
include defaults.$(PLAT)
include rules.mak
BIN_NAME = $(TARGET)$(xtra).$(BIN)
LIB_NAME = $(TARGET)$(xtra).$(LIB)
#
# target object and source files
#
include objs.$(PLAT)
#
# targets
#
include target

View File

@@ -0,0 +1,5 @@
LINK = $(CXX) \
-o $(BINDIR)$(TARGET) \
$(OBJDIR)/*.$(O) \
-L$(LIBDIR)$(XTRA) -lmicasacache \
-L/usr/lib -lpthread -lc -lnsl

View File

@@ -0,0 +1,2 @@
OBJS=\

View File

@@ -0,0 +1,213 @@
#include "sscs_cache.h"
#include <wchar.h>
#include <assert.h>
#define MAX_ID_LIST_BUF 4*1024
#define MAX_SECRET_VAL_LEN 1024
#define MAX_RETURNED_IDS 10
void enumerateIDs(SSCS_SECRETSTORE_HANDLE_T *ssHandle,int type,
SSCS_KEYCHAIN_ID_T *keychainID)
{
SSCS_KEYCHAIN_ID_LIST_T kcIDList;
SSCS_SECRET_ID_LIST_T secretIDList;
uint32_t ssFlags = 0;
int retVal,i=0;
if(type == 0) //keychains
{
printf("Enumerate keychains\n----------------------\n");
kcIDList.keyChainIDList = (SSCS_KEYCHAIN_ID_T *)malloc(
sizeof(SSCS_KEYCHAIN_ID_T) * MAX_RETURNED_IDS );
assert(kcIDList.keyChainIDList);
kcIDList.returnedIDs = MAX_RETURNED_IDS;
retVal = sscs_CacheEnumerateKeychainIDs(ssHandle, ssFlags,NULL, &kcIDList,NULL);
if(retVal != 0)
{
printf("sscs_CacheEnumerateKeychainIDs failed: %d\n",retVal);
}
for( i = 0 ; i < kcIDList.returnedIDs; i++ )
{
printf("%s\n",kcIDList.keyChainIDList[i].keychainID);
}
free(kcIDList.keyChainIDList);
}
else //secrets
{
printf("Enumerate secrets\n-----------------\n");
secretIDList.secIDList = (SSCS_SECRET_ID_T*)malloc(
sizeof(SSCS_SECRET_ID_T)* MAX_RETURNED_IDS);
assert(secretIDList.secIDList);
secretIDList.returnedIDs = MAX_RETURNED_IDS;
retVal = sscs_CacheEnumerateSecretIDs(ssHandle, ssFlags, keychainID, NULL, &secretIDList, NULL);
if(retVal != 0)
{
printf("sscs_CacheEnumerateSecretIDs failed: %d\n",retVal);
}
for( i = 0 ; i < secretIDList.returnedIDs; i++ )
{
printf("%s\n",secretIDList.secIDList[i].id);
}
free(secretIDList.secIDList);
}
printf("---------------------------------\n");
}
int main(int argc, char** argv)
{
int n = 0,z=0;
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
uint32_t bytesRequired;
wchar_t *testssName;
unsigned char testssNameUTF[1024];
wchar_t *testkcId;
unsigned char testkcIdUTF[1024];
wchar_t *testsecretId;
unsigned char testsecretIdUTF[1024];
wchar_t **wptr = NULL;
uint32_t ssFlags = 0;
int retVal = 0;
int i;
SSCS_SECRET_T mySecret;
SSCS_PASSWORD_T epPassword = {0,0,""};
SSCS_SECRET_ID_T mySecretID;
SSCS_KEYCHAIN_ID_T mykeychainID;
SSCS_KEYCHAIN_ID_T newkeychainID;
memset(&mykeychainID,0,sizeof(SSCS_KEYCHAIN_ID_T));
testkcId = (wchar_t*)malloc(1024*sizeof(wchar_t));
assert(testkcId);
//All this required when we have some real wchars :-)
wcscpy(testkcId,L"SSCS_SESSION_KEY_CHAIN_ID");
wptr = &testkcId;
mykeychainID.len = wcsrtombs(testkcIdUTF,wptr,1024,NULL);
mykeychainID.len+=1;
memcpy(mykeychainID.keychainID,testkcIdUTF,mykeychainID.len);
memset(&mySecretID,0,sizeof(mySecretID));
testsecretId = (wchar_t*)malloc(1024*sizeof(wchar_t));
assert(testsecretId);
wcscpy(testsecretId,L"MySecret");
wptr = &testsecretId;
mySecretID.len = wcsrtombs(testsecretIdUTF,wptr,1024,NULL);
mySecretID.len +=1;
memcpy(mySecretID.id,testsecretIdUTF,mySecretID.len);
mySecret.len = MAX_SECRET_VAL_LEN;
mySecret.data = (char *)malloc(MAX_SECRET_VAL_LEN);
assert(mySecret.data);
secID.version = 0x00040000;
testssName = (wchar_t*)malloc(1024*sizeof(wchar_t));
assert(testssName);
wcscpy(testssName,L"SecretStoreName");
wptr = &testssName;
n = wcsrtombs(testssNameUTF,wptr,1024,NULL);
memcpy(secID.ssName,testssNameUTF,n);
ssHandle = sscs_CacheOpenSecretStore(&secID,ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
printf("sscs_CacheOpenSecretStore succesful\n");
ssFlags |= SSCS_SESSION_KEY_CHAIN_F;
retVal = sscs_CacheAddKeychain(ssHandle,ssFlags,&mykeychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheAddKeychain failed: %d\n",retVal);
}
else
printf("sscs_CacheAddKeychain succesfully added - %s\n",mykeychainID.keychainID);
enumerateIDs(ssHandle,0,NULL);
//Add Secret
mySecret.len = 4;
memcpy(mySecret.data,"Test",4);
retVal = sscs_CacheWriteSecret(ssHandle, ssFlags, &mykeychainID,
&mySecretID, &mySecret,&epPassword ,NULL);
if(retVal != 0)
{
printf("sscs_CacheWriteSecret failed: %d\n",retVal);
}
else
printf("sscs_CacheWriteSecret added to ID - %s\n", mySecretID.id);
mySecret.len = MAX_SECRET_VAL_LEN;
memset(mySecret.data,0,MAX_SECRET_VAL_LEN);
retVal = sscs_CacheReadSecret(ssHandle, ssFlags, &mykeychainID,&mySecretID, &mySecret, &epPassword, &bytesRequired, NULL);
if(retVal != 0)
{
printf("sscs_CacheReadSecret failed: %d\n",retVal);
}
else
{
printf("sscs_CacheReadSecret- read ID - %s\n",mySecretID.id);
printf("SecretVal is %s\n",mySecret.data);
}
// free(mySecret.data);
enumerateIDs(ssHandle, 1,&mykeychainID);
printf("Removing Secret...\n");
retVal = sscs_CacheRemoveSecret(ssHandle,ssFlags, &mykeychainID,
&mySecretID,
&epPassword, NULL);
if(retVal != 0)
{
printf("sscs_CacheRemoveSecret failed: %d\n",retVal);
}
else
printf("sscs_CacheRemoveSecret removed id - %S\n",mySecretID.id)
;
enumerateIDs(ssHandle, 1,&mykeychainID);
//remove keychain
printf("Removing Keychain...\n");
retVal = sscs_CacheRemoveKeychain(ssHandle,ssFlags, &mykeychainID, NULL)
;
if(retVal != 0)
{
printf("sscs_CacheRemoveKeychain failed: %d\n",retVal);
}
else
printf("sscs_CacheRemoveKeychain removed keychain - %s\n",mykeychainID.keychainID);
enumerateIDs(ssHandle,0,NULL);
retVal = sscs_CacheCloseSecretStore(ssHandle,ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
else
printf("sscs_CacheCloseSecretStore success: %d\n",retVal);
free(testkcId);
free(testsecretId);
free(mySecret.data);
free(testssName);
printf("Completed testing\n");
return 0;
}

View File

@@ -0,0 +1,17 @@
include link$(xtra).$(PLAT)
all : $(BIN_NAME)
$(BIN_NAME) : $(OBJS)
@echo Linking $@ ...
$(LINK)
@echo
#install : all

View File

@@ -0,0 +1,20 @@
#
# configure environment
#
TARGET = testcases
include global.mak
include defaults.$(PLAT)
include rules.mak
BIN_NAME = $(TARGET)$(xtra).$(BIN)
LIB_NAME = $(TARGET)$(xtra).$(LIB)
#
# target object and source files
#
include objs.$(PLAT)
#
# targets
#
include target

View File

@@ -0,0 +1,762 @@
/* This file contains all the keychain related test cases.
*/
#include "testcases.h"
void EnumerateIDs(SSCS_SECRETSTORE_HANDLE_T *ssHandle,int type,
SSCS_KEYCHAIN_ID_T *keychainID)
{
SSCS_KEYCHAIN_ID_LIST_T kcIDList;
SSCS_SECRET_ID_LIST_T secretIDList;
uint32_t ssFlags = 0;
unsigned int bytesRequired = 0;
int i = 0;
int retVal = 0;
if(type == 0) //keychains
{
kcIDList.keyChainIDList = (SSCS_KEYCHAIN_ID_T *)malloc(
sizeof(SSCS_KEYCHAIN_ID_T) * MAX_RETURNED_IDS );
assert(kcIDList.keyChainIDList);
//kcIDList.bufferSizeRequired = sizeof(SSCS_KEYCHAIN_ID_T) * MAX_RETURNED_IDS;
kcIDList.returnedIDs = MAX_RETURNED_IDS;
retVal = sscs_CacheEnumerateKeychainIDs(ssHandle, ssFlags,NULL, &kcIDList,NULL);
if(retVal != 0)
{
printf("sscs_CacheEnumerateKeychainIDs failed: %d\n",retVal);
}
printf("KEYCHAINLIST : \n");
for( i = 0 ; i < kcIDList.returnedIDs; i++ )
{
printf("%s\n",kcIDList.keyChainIDList[i].keychainID);
}
free(kcIDList.keyChainIDList);
}
else //secrets
{
secretIDList.secIDList = (SSCS_SECRET_ID_T*)malloc(
sizeof(SSCS_SECRET_ID_T)* MAX_RETURNED_IDS);
assert(secretIDList.secIDList);
// secretIDList.bufferSizeRequired = sizeof(SSCS_SECRET_ID_T)* MAX_RETURNED_IDS;
secretIDList.returnedIDs = MAX_RETURNED_IDS;
retVal = sscs_CacheEnumerateSecretIDs(ssHandle, ssFlags, keychainID, NULL, &secretIDList, NULL);
if(retVal != 0)
{
printf("sscs_CacheEnumerateSecretIDs failed: %d\n",retVal);
}
printf("SECRETIDLIST:\n");
for( i = 0 ; i < secretIDList.returnedIDs; i++ )
{
printf("%s\n",secretIDList.secIDList[i].id);
}
free(secretIDList.secIDList);
}
}
void TestCacheAddKeyChain_Valid(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
SSCS_KEYCHAIN_ID_LIST_T kcIDList;
int retVal = 0;
uint32_t ssFlags = 0;
SSCS_KEYCHAIN_ID_T keychainID;
memset(&keychainID,0,sizeof(SSCS_KEYCHAIN_ID_T));
strcpy((char*)(keychainID.keychainID),"MyKeychain");
keychainID.len = strlen("MyKeychain") +1 ;
DECORATE
secID.version = 0x00040000;
strcpy((char *)secID.ssName,"SecretStore");
ssHandle = sscs_CacheOpenSecretStore(&secID,ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
ssFlags |= SSCS_LOCAL_KEY_CHAIN_F;
printf("Adding keychain - %s\n",keychainID.keychainID);
retVal = sscs_CacheAddKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheAddKeychain failed: %d\n",retVal);
}
EnumerateIDs(ssHandle,0,NULL);
retVal = sscs_CacheRemoveKeychain(ssHandle,ssFlags, &keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheRemoveKeychain failed: %d\n",retVal);
}
retVal = sscs_CacheCloseSecretStore(ssHandle, ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
DECORATE
}
void TestCacheAddKeyChain_LongKeychainId(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
SSCS_KEYCHAIN_ID_LIST_T kcIDList;
int retVal = 0;
uint32_t ssFlags = 0;
SSCS_KEYCHAIN_ID_T keychainID;
memset(&keychainID,0,sizeof(SSCS_KEYCHAIN_ID_T));
strcpy((char*)(keychainID.keychainID),LONG_WSTRING);
keychainID.len = strlen(LONG_WSTRING) + 1;
/* sscs_CacheOpenSecretStore */
DECORATE
secID.version = 0x00040000;
strcpy((char *)secID.ssName,"SecretStore");
ssHandle = sscs_CacheOpenSecretStore(&secID, ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
ssFlags |= SSCS_LOCAL_KEY_CHAIN_F;
retVal = sscs_CacheAddKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheAddKeychain failed: %d\n",retVal);
}
else
{
PRINT_ERR;
retVal = sscs_CacheRemoveKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheRemoveKeychain failed: %d\n",retVal);
}
}
retVal = sscs_CacheCloseSecretStore(ssHandle, ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
DECORATE
}
void TestCacheAddKeyChain_ExistingKeychain(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
SSCS_KEYCHAIN_ID_LIST_T kcIDList;
unsigned int bytesRequired = 0;
int retVal = 0;
uint32_t ssFlags = 0;
SSCS_KEYCHAIN_ID_T keychainID;
memset(&keychainID,0,sizeof(SSCS_KEYCHAIN_ID_T));
strcpy((char*)(keychainID.keychainID),"MyKeychain");
keychainID.len = strlen("MyKeychain") + 1;
/* sscs_CacheOpenSecretStore */
DECORATE
secID.version = 0x00040000;
strcpy((char *)secID.ssName,"SecretStore");
ssHandle = sscs_CacheOpenSecretStore(&secID, ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
ssFlags |= SSCS_LOCAL_KEY_CHAIN_F;
printf("Adding keychain %s\n",keychainID.keychainID);
retVal = sscs_CacheAddKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheAddKeychain failed: %d\n",retVal);
}
EnumerateIDs(ssHandle,0,NULL);
printf("Re-adding keychain %S\n",keychainID.keychainID);
retVal = sscs_CacheAddKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheAddKeychain failed: %d\n",retVal);
}
EnumerateIDs(ssHandle,0,NULL);
retVal = sscs_CacheRemoveKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheRemoveKeychain failed: %d\n",retVal);
}
retVal = sscs_CacheCloseSecretStore(ssHandle, ssFlags,NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
DECORATE
}
#define NSSCS_MAX_KEYCHAINS 10
void TestCacheAddKeyChain_MaxKeychains(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
SSCS_KEYCHAIN_ID_LIST_T kcIDList;
int retVal = 0;
int i = 0;
uint32_t ssFlags = 0;
// wchar_t *keychainID = L"MyKeychain";
char keychainID[256] = "";
char ch = 'a';
SSCS_KEYCHAIN_ID_T keychainIDStruct;
memset(&keychainIDStruct,0,sizeof(SSCS_KEYCHAIN_ID_T));
/* sscs_CacheOpenSecretStore */
DECORATE
printf("INPUT: {0x00040000, SecretStore}\n");
secID.version = 0x00040000;
strcpy((char *)secID.ssName,"SecretStore");
ssHandle = sscs_CacheOpenSecretStore(&secID, ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
ssFlags |= SSCS_LOCAL_KEY_CHAIN_F;
for( i = 0 ; i < NSSCS_MAX_KEYCHAINS + 1 ; i++ )
{
sprintf(keychainID,"key%c",ch+i);
printf("Adding %s\n",keychainIDStruct.keychainID);
strcpy((char*)(keychainIDStruct.keychainID),keychainID);
keychainIDStruct.len = strlen(keychainID)+1;
retVal = sscs_CacheAddKeychain(ssHandle,ssFlags,&keychainIDStruct,NULL);
if(retVal != 0)
{
printf("sscs_CacheAddKeychain failed: %d\n",retVal);
}
}
memset(keychainID,0,sizeof(keychainID));
for( i = 0 ; i < NSSCS_MAX_KEYCHAINS + 1 ; i++ )
{
sprintf(keychainID,"key%c",ch+i);
printf("Removing %s\n",keychainIDStruct.keychainID);
strcpy((char*)(keychainIDStruct.keychainID),keychainID);
keychainIDStruct.len = strlen(keychainID)+1;
retVal = sscs_CacheRemoveKeychain(ssHandle,ssFlags, &keychainIDStruct,NULL);
if(retVal != 0)
{
printf("sscs_CacheRemoveKeychain failed: %d\n",retVal);
}
}
retVal = sscs_CacheCloseSecretStore(ssHandle, ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
DECORATE
}
void TestCacheEnumerateKeyChainIds_Valid(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
SSCS_KEYCHAIN_ID_LIST_T kcIDList;
int retVal = 0;
int i = 0;
uint32_t ssFlags = 0;
/* sscs_CacheOpenSecretStore */
DECORATE
printf("INPUT: {0x00040000, SecretStore}\n");
secID.version = 0x00040000;
strcpy((char *)secID.ssName,"SecretStore");
ssHandle = sscs_CacheOpenSecretStore(&secID, ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
kcIDList.keyChainIDList = (SSCS_KEYCHAIN_ID_T *)malloc(
sizeof(SSCS_KEYCHAIN_ID_T) * MAX_RETURNED_IDS );
assert(kcIDList.keyChainIDList);
// kcIDList.bufferSizeRequired = sizeof(SSCS_KEYCHAIN_ID_T) * MAX_RETURNED_IDS;
kcIDList.returnedIDs = MAX_RETURNED_IDS;
retVal = sscs_CacheEnumerateKeychainIDs(ssHandle,ssFlags, NULL,&kcIDList,
NULL);
if(retVal != 0)
{
printf("sscs_CacheEnumerateKeychainIDs failed: %d\n",retVal);
}
printf("KEYCHAINLIST\n");
for( i = 0 ; i < kcIDList.returnedIDs; i++ )
{
printf("%s\n",kcIDList.keyChainIDList[i].keychainID);
}
free(kcIDList.keyChainIDList);
retVal = sscs_CacheCloseSecretStore(ssHandle, ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
DECORATE
}
void TestCacheEnumerateKeyChainIds_WithoutOpen(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T cookedUpSSHandle;
SSCS_KEYCHAIN_ID_LIST_T kcIDList;
int socketFd = FAKE_SOCK_FD;
int retVal = 0;
int i = 0;
uint32_t ssFlags = 0;
DECORATE
/* Passing a cookedup SSHandle */
printf("INPUT: Cookedup SSHandle\n");
cookedUpSSHandle.platformID = 1;
cookedUpSSHandle.platHandle = (int*)&socketFd;
kcIDList.keyChainIDList = (SSCS_KEYCHAIN_ID_T *)malloc(
sizeof(SSCS_KEYCHAIN_ID_T) * MAX_RETURNED_IDS );
assert(kcIDList.keyChainIDList);
// kcIDList.bufferSizeRequired = sizeof(SSCS_KEYCHAIN_ID_T) * MAX_RETURNED_IDS;
kcIDList.returnedIDs = MAX_RETURNED_IDS;
retVal = sscs_CacheEnumerateKeychainIDs(&cookedUpSSHandle,ssFlags, NULL, &kcIDList,NULL);
if(retVal != 0)
{
printf("sscs_CacheEnumerateKeychainIDs failed: %d\n",retVal);
}
printf("KEYCHAINLIST\n");
for( i = 0 ; i < kcIDList.returnedIDs; i++ )
{
printf("%s\n",kcIDList.keyChainIDList[i].keychainID);
}
free(kcIDList.keyChainIDList);
DECORATE
}
void TestCacheEnumerateKeyChainIds_LessBufferLen(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
SSCS_KEYCHAIN_ID_LIST_T kcIDList;
uint32_t ssFlags = 0;
int retVal = 0;
int i = 0;
SSCS_KEYCHAIN_ID_T keychainID;
memset(&keychainID,0,sizeof(SSCS_KEYCHAIN_ID_T));
strcpy((char*)(keychainID.keychainID),"MyKeychain1");
keychainID.len = strlen("MyKeychain1")+1;
/* sscs_CacheOpenSecretStore */
DECORATE
printf("INPUT: {0x00040000, SecretStore}\n");
secID.version = 0x00040000;
strcpy((char *)secID.ssName,"SecretStore");
ssHandle = sscs_CacheOpenSecretStore(&secID, ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
printf("Adding keychain..%s\n",keychainID.keychainID);
ssFlags |= SSCS_LOCAL_KEY_CHAIN_F;
retVal = sscs_CacheAddKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheAddKeychain failed: %d\n",retVal);
}
strcpy((char*)(keychainID.keychainID),"MyKeychain2");
keychainID.len = strlen("MyKeychain2")+1;
printf("Adding keychain..%s\n",keychainID.keychainID);
retVal = sscs_CacheAddKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheAddKeychain failed: %d\n",retVal);
}
kcIDList.keyChainIDList = (SSCS_KEYCHAIN_ID_T *)malloc(
sizeof(SSCS_KEYCHAIN_ID_T) * MAX_RETURNED_IDS );
assert(kcIDList.keyChainIDList);
// kcIDList.bufferSizeRequired = sizeof(SSCS_KEYCHAIN_ID_T) * 1;
kcIDList.returnedIDs = 1;
retVal = sscs_CacheEnumerateKeychainIDs(ssHandle, ssFlags, NULL, &kcIDList,
NULL);
if(retVal != 0)
{
printf("sscs_CacheEnumerateKeychainIDs failed: %d\n",retVal);
}
printf("KEYCHAINLIST\n");
for( i = 0 ; i < kcIDList.returnedIDs; i++ )
{
printf("%s\n",kcIDList.keyChainIDList[i].keychainID);
}
free(kcIDList.keyChainIDList);
retVal = sscs_CacheRemoveKeychain(ssHandle,ssFlags, &keychainID, NULL);
if(retVal != 0)
{
printf("sscs_CacheRemoveKeychain failed: %d\n",retVal);
}
strcpy((char*)(keychainID.keychainID),"MyKeychain1");
keychainID.len = strlen("MyKeychain1")+1;
retVal = sscs_CacheRemoveKeychain(ssHandle,ssFlags, &keychainID, NULL);
if(retVal != 0)
{
printf("sscs_CacheRemoveKeychain failed: %d\n",retVal);
}
retVal = sscs_CacheCloseSecretStore(ssHandle, ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
DECORATE
}
void TestCacheEnumerateKeyChainIds_WithNoKeychains(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
SSCS_KEYCHAIN_ID_LIST_T kcIDList;
int retVal = 0;
uint32_t ssFlags = 0;
int i = 0;
/* sscs_CacheOpenSecretStore */
DECORATE
printf("INPUT: {0x00040000, SecretStore}\n");
secID.version = 0x00040000;
strcpy((char *)secID.ssName,"SecretStore");
ssHandle = sscs_CacheOpenSecretStore(&secID, ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
kcIDList.keyChainIDList = (SSCS_KEYCHAIN_ID_T *)malloc(
sizeof(SSCS_KEYCHAIN_ID_T) * MAX_RETURNED_IDS );
assert(kcIDList.keyChainIDList);
// kcIDList.bufferSizeRequired = sizeof(SSCS_KEYCHAIN_ID_T) * MAX_RETURNED_IDS;
kcIDList.returnedIDs = MAX_RETURNED_IDS;
retVal = sscs_CacheEnumerateKeychainIDs(ssHandle, ssFlags,NULL, &kcIDList,NULL);
if(retVal != 0)
{
printf("sscs_CacheEnumerateKeychainIDs failed: %d\n",retVal);
}
else
{
printf("KEYCHAINLIST\n");
for( i = 0 ; i < kcIDList.returnedIDs; i++ )
{
printf("%s\n",kcIDList.keyChainIDList[i].keychainID);
}
}
free(kcIDList.keyChainIDList);
kcIDList.keyChainIDList = NULL;
retVal = sscs_CacheCloseSecretStore(ssHandle, ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
DECORATE
}
void TestCacheRemoveKeyChain_Valid(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
SSCS_KEYCHAIN_ID_LIST_T kcIDList;
int retVal = 0;
uint32_t ssFlags = 0;
SSCS_KEYCHAIN_ID_T keychainID;
memset(&keychainID,0,sizeof(SSCS_KEYCHAIN_ID_T));
strcpy((char*)(keychainID.keychainID),"MyKeychain");
keychainID.len = strlen("MyKeychain")+1;
/* sscs_CacheOpenSecretStore */
DECORATE
secID.version = 0x00040000;
strcpy((char *)secID.ssName,"SecretStore");
ssHandle = sscs_CacheOpenSecretStore(&secID, ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
ssFlags |= SSCS_LOCAL_KEY_CHAIN_F;
printf("Adding %s \n",keychainID.keychainID);
retVal = sscs_CacheAddKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheAddKeychain failed: %d\n",retVal);
}
EnumerateIDs(ssHandle,0,NULL);
printf("Removing %s\n",keychainID.keychainID);
retVal = sscs_CacheRemoveKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheRemoveKeychain failed: %d\n",retVal);
}
EnumerateIDs(ssHandle,0,&keychainID);
retVal = sscs_CacheCloseSecretStore(ssHandle, ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
DECORATE
}
void TestCacheRemoveKeyChain_NonExistentKeychain(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
SSCS_KEYCHAIN_ID_LIST_T kcIDList;
int retVal = 0;
uint32_t ssFlags = 0;
SSCS_KEYCHAIN_ID_T keychainID;
memset(&keychainID,0,sizeof(SSCS_KEYCHAIN_ID_T));
strcpy((char*)(keychainID.keychainID),"Non-existent");
keychainID.len = strlen("Non-existent")+1;
DECORATE
printf("INPUT: {0x00040000, SecretStore}\n");
secID.version = 0x00040000;
strcpy((char *)secID.ssName,"SecretStore");
ssHandle = sscs_CacheOpenSecretStore(&secID, ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
printf("Removing %s\n",keychainID.keychainID);
retVal = sscs_CacheRemoveKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheAddKeychain failed: %d\n",retVal);
}
EnumerateIDs(ssHandle,0,&keychainID);
retVal = sscs_CacheCloseSecretStore(ssHandle, ssFlags,NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
DECORATE
}
void TestCacheRemoveKeyChain_OverlappingNames(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
SSCS_KEYCHAIN_ID_LIST_T kcIDList;
int retVal = 0;
uint32_t ssFlags = 0;
SSCS_KEYCHAIN_ID_T keychainID;
memset(&keychainID,0,sizeof(SSCS_KEYCHAIN_ID_T));
strcpy((char*)(keychainID.keychainID),"Keychain1");
keychainID.len = strlen("Keychain1")+1;
/* sscs_CacheOpenSecretStore */
DECORATE
secID.version = 0x00040000;
strcpy((char *)secID.ssName,"SecretStore");
ssHandle = sscs_CacheOpenSecretStore(&secID, ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
ssFlags |= SSCS_LOCAL_KEY_CHAIN_F;
printf("Adding %s \n",keychainID.keychainID);
retVal = sscs_CacheAddKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheAddKeychain failed: %d\n",retVal);
}
strcpy(keychainID.keychainID,"Keychain1");
keychainID.len = strlen("Keychain1")+1;
printf("Adding %s \n",keychainID.keychainID);
retVal = sscs_CacheAddKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheAddKeychain failed: %d\n",retVal);
}
strcpy(keychainID.keychainID,"Keychain");
keychainID.len = strlen("Keychain")+1;
printf("Removing %s\n",keychainID.keychainID);
retVal = sscs_CacheRemoveKeychain(ssHandle,ssFlags, &keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheRemoveKeychain failed: %d\n",retVal);
}
EnumerateIDs(ssHandle,0,&keychainID);
strcpy(keychainID.keychainID,"Keychain1");
keychainID.len = strlen("Keychain1")+1;
printf("Removing %s\n",keychainID.keychainID);
retVal = sscs_CacheRemoveKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheRemoveKeychain failed: %d\n",retVal);
}
EnumerateIDs(ssHandle,0,&keychainID);
retVal = sscs_CacheCloseSecretStore(ssHandle, ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
DECORATE
}

View File

@@ -0,0 +1,598 @@
/* This file contains all the keychain related test cases.
*/
#include "testcases.h"
#include <assert.h>
extern void EnumerateIDs(SSCS_SECRETSTORE_HANDLE_T *ssHandle,int type,
SSCS_KEYCHAIN_ID_T *keychainID);
void TestCacheRWRmSecret_ValidAddSecret(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
SSCS_KEYCHAIN_ID_LIST_T kcIDList;
SSCS_SECRET_T secret;
SSCS_PASSWORD_T epPassword = {0,0,""};
unsigned int bytesRequired = 0;
unsigned long ssFlags = 0;
int retVal = 0;
SSCS_KEYCHAIN_ID_T keychainID;
memset(&keychainID,0,sizeof(SSCS_KEYCHAIN_ID_T));
strcpy((char*)(keychainID.keychainID),"MyKeychain");
keychainID.len = strlen("MyKeychain")+1;
SSCS_SECRET_ID_T secretID;
memset(&secretID,0,sizeof(SSCS_SECRET_ID_T));
strcpy((char*)(secretID.id),"secret1");
secretID.len = strlen("secret1")+1;
int i = 0;
DECORATE
secID.version = 0x00040000;
strcpy((char *)secID.ssName,"SecretStore");
ssHandle = sscs_CacheOpenSecretStore(&secID, ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
ssFlags |= SSCS_LOCAL_KEY_CHAIN_F;
printf("Adding %s\n",keychainID.keychainID);
retVal = sscs_CacheAddKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheAddKeychain failed: %d\n",retVal);
}
EnumerateIDs(ssHandle,0,NULL);
memset(&secret,0,sizeof(secret));
secret.data = (char *)malloc(MAX_SECRET_VAL_LEN);
assert(secret.data);
memset(secret.data,0,MAX_SECRET_VAL_LEN);
secret.len = 6;
memcpy(secret.data,"value1",secret.len);
printf("Adding secret %S with value %s\n",secretID.id,secret.data);
retVal = sscs_CacheWriteSecret(ssHandle,ssFlags,&keychainID,&secretID,
&secret,&epPassword,NULL);
if(retVal != 0)
{
printf("sscs_CacheWriteSecret failed: %d\n",retVal);
}
printf("Verifying the written secret's value...\n");
secret.len = MAX_SECRET_VAL_LEN;
memset(secret.data,0,MAX_SECRET_VAL_LEN);
retVal = sscs_CacheReadSecret(ssHandle,ssFlags,&keychainID,&secretID,
&secret, &epPassword,&bytesRequired, NULL);
if(retVal != 0)
{
printf("sscs_CacheReadSecret failed: %d\n",retVal);
}
printf("secret len is %d\n",secret.len);
printf("Value is ");
for(i = 0;i < secret.len; i++ )
{
printf("%c",secret.data[i]);
}
printf("\n");
free(secret.data);
secret.data = NULL;
printf("Removing %S\n",secretID.id);
retVal = sscs_CacheRemoveSecret(ssHandle,ssFlags,&keychainID,&secretID,
&epPassword,NULL);
if(retVal != 0)
{
printf("sscs_CacheRemoveSecret failed: %d\n",retVal);
}
EnumerateIDs(ssHandle,1,&keychainID);
retVal = sscs_CacheRemoveKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheRemoveKeychain failed: %d\n",retVal);
}
retVal = sscs_CacheCloseSecretStore(ssHandle, ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
// EnumerateIDs(ssHandle,1,&keychainID);
free(secret.data);
secret.data = NULL;
DECORATE
}
void TestCacheRWRmSecret_LongSecretID(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
SSCS_KEYCHAIN_ID_LIST_T kcIDList;
SSCS_SECRET_T secret;
SSCS_PASSWORD_T epPassword = {0,0,""};
unsigned int bytesRequired = 0;
int retVal = 0;
unsigned long ssFlags = 0;
SSCS_KEYCHAIN_ID_T keychainID;
SSCS_SECRET_ID_T secretID;
memset(&keychainID,0,sizeof(SSCS_KEYCHAIN_ID_T));
strcpy((char*)(keychainID.keychainID),"MyKeychain");
keychainID.len = strlen("MyKeychain")+1;
memset(&secretID,0,sizeof(SSCS_SECRET_ID_T));
strcpy((char*)(secretID.id),"secret1");
secretID.len = strlen("secret1")+1;
int i = 0;
DECORATE
secID.version = 0x00040000;
strcpy((char *)secID.ssName,"SecretStore");
ssHandle = sscs_CacheOpenSecretStore(&secID, ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
ssFlags |= SSCS_LOCAL_KEY_CHAIN_F;
printf("Adding %s\n",keychainID.keychainID);
retVal = sscs_CacheAddKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheAddKeychain failed: %d\n",retVal);
}
EnumerateIDs(ssHandle,0,NULL);
memset(&secret,0,sizeof(secret));
secret.data = (char *)malloc(MAX_SECRET_VAL_LEN);
assert(secret.data);
memset(secret.data,0,MAX_SECRET_VAL_LEN);
secret.len = 6;
memcpy(secret.data,"value1",secret.len);
printf("Adding secret %s with value %s\n",secretID.id,secret.data);
retVal = sscs_CacheWriteSecret(ssHandle,ssFlags,&keychainID,&secretID,
&secret,&epPassword,NULL);
if(retVal != 0)
{
printf("sscs_CacheWriteSecret failed: %d\n",retVal);
}
printf("Removing %s\n",secretID.id);
retVal = sscs_CacheRemoveSecret(ssHandle,ssFlags,&keychainID,&secretID,
&epPassword,NULL);
if(retVal != 0)
{
printf("sscs_CacheRemoveSecret failed: %d\n",retVal);
}
EnumerateIDs(ssHandle,1,&keychainID);
retVal = sscs_CacheRemoveKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheRemoveKeychain failed: %d\n",retVal);
}
retVal = sscs_CacheCloseSecretStore(ssHandle, ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
// EnumerateIDs(ssHandle,1,&keychainID);
free(secret.data);
secret.data = NULL;
DECORATE
}
void TestCacheRWSecret_ValidUpdateSecret(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
SSCS_KEYCHAIN_ID_LIST_T kcIDList;
SSCS_SECRET_T secret;
SSCS_PASSWORD_T epPassword = {0,0,""};
unsigned int bytesRequired = 0;
int retVal = 0;
unsigned long ssFlags = 0;
SSCS_KEYCHAIN_ID_T keychainID;
SSCS_SECRET_ID_T secretID;
memset(&keychainID,0,sizeof(SSCS_KEYCHAIN_ID_T));
strcpy((char*)(keychainID.keychainID),"MyKeychain");
keychainID.len = strlen("MyKeychain")+1;
memset(&secretID,0,sizeof(SSCS_SECRET_ID_T));
strcpy((char*)(secretID.id),"secret1");
secretID.len = strlen("secret1")+1;
int i = 0;
DECORATE
secID.version = 0x00040000;
strcpy((char *)secID.ssName,"SecretStore");
ssHandle = sscs_CacheOpenSecretStore(&secID, ssFlags,NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
ssFlags |= SSCS_LOCAL_KEY_CHAIN_F;
printf("Adding %s\n",keychainID.keychainID);
retVal = sscs_CacheAddKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheAddKeychain failed: %d\n",retVal);
}
EnumerateIDs(ssHandle,0,NULL);
memset(&secret,0,sizeof(secret));
secret.data = (char *)malloc(MAX_SECRET_VAL_LEN);
assert(secret.data);
memset(secret.data,0,MAX_SECRET_VAL_LEN);
secret.len = 6;
memcpy(secret.data,"value1",secret.len);
printf("Adding secret %s with value %s\n",secretID.id,secret.data);
retVal = sscs_CacheWriteSecret(ssHandle,ssFlags,&keychainID,&secretID,
&secret,&epPassword,NULL);
if(retVal != 0)
{
printf("sscs_CacheWriteSecret failed: %d\n",retVal);
}
secret.len = 9;
memcpy(secret.data,"newvalue1",secret.len);
printf("Updating secret %s with value %s\n",secretID.id,secret.data);
retVal = sscs_CacheWriteSecret(ssHandle,ssFlags,&keychainID,&secretID,
&secret,&epPassword,NULL);
if(retVal != 0)
{
printf("sscs_CacheWriteSecret failed: %d\n",retVal);
}
printf("Verifying the written secret's value...\n");
secret.len = MAX_SECRET_VAL_LEN;
memset(secret.data,0,MAX_SECRET_VAL_LEN);
retVal = sscs_CacheReadSecret(ssHandle,ssFlags,&keychainID,&secretID,
&secret,&epPassword,&bytesRequired,NULL);
if(retVal != 0)
{
printf("sscs_CacheReadSecret failed: %d\n",retVal);
}
printf("secret len is %d\n",secret.len);
printf("Value is ");
for(i = 0;i < secret.len; i++ )
{
printf("%c",secret.data[i]);
}
printf("\n");
free(secret.data);
secret.data = NULL;
printf("Removing a keychain with secret..\n");
retVal = sscs_CacheRemoveKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheRemoveKeychain failed: %d\n",retVal);
}
retVal = sscs_CacheCloseSecretStore(ssHandle, ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
// EnumerateIDs(ssHandle,1,&keychainID);
free(secret.data);
secret.data = NULL;
DECORATE
}
void TestCacheRWRmSecret_NonExistentKeychain(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
SSCS_KEYCHAIN_ID_LIST_T kcIDList;
SSCS_SECRET_T secret;
SSCS_PASSWORD_T epPassword = {0,0,""};
unsigned int bytesRequired = 0;
int retVal = 0;
unsigned long ssFlags = 0;
SSCS_KEYCHAIN_ID_T keychainID;
SSCS_SECRET_ID_T secretID;
memset(&keychainID,0,sizeof(SSCS_KEYCHAIN_ID_T));
strcpy((char*)(keychainID.keychainID),"MyKeychain");
keychainID.len = strlen("MyKeychain")+1;
memset(&secretID,0,sizeof(SSCS_SECRET_ID_T));
strcpy((char*)(secretID.id),"secret1");
secretID.len = strlen("secret1")+1;
int i = 0;
DECORATE
secID.version = 0x00040000;
strcpy((char *)secID.ssName,"SecretStore");
ssHandle = sscs_CacheOpenSecretStore(&secID, ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
#if 0
ssFlags |= SSCS_LOCAL_KEY_CHAIN_F;
printf("Adding %S\n",keychainID);
retVal = sscs_CacheAddKeychain(ssHandle,ssFlags,keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheAddKeychain failed: %d\n",retVal);
}
EnumerateIDs(ssHandle,0,NULL);
#endif
memset(&secret,0,sizeof(secret));
secret.data = (char *)malloc(MAX_SECRET_VAL_LEN);
assert(secret.data);
memset(secret.data,0,MAX_SECRET_VAL_LEN);
secret.len = 6;
memcpy(secret.data,"value1",secret.len);
printf("Adding secret %s with value %s\n",secretID.id,secret.data);
retVal = sscs_CacheWriteSecret(ssHandle,ssFlags,&keychainID,&secretID,
&secret,&epPassword,NULL);
if(retVal != 0)
{
printf("sscs_CacheWriteSecret failed: %d\n",retVal);
}
printf("Verifying the written secret's value...\n");
secret.len = MAX_SECRET_VAL_LEN;
memset(secret.data,0,MAX_SECRET_VAL_LEN);
retVal = sscs_CacheReadSecret(ssHandle,ssFlags,&keychainID,&secretID,
&secret, &epPassword,&bytesRequired,NULL);
if(retVal != 0)
{
printf("sscs_CacheReadSecret failed: %d\n",retVal);
}
else
{
printf("secret len is %d\n",secret.len);
printf("Value is ");
for(i = 0;i < secret.len; i++ )
{
printf("%c",secret.data[i]);
}
printf("\n");
}
free(secret.data);
secret.data = NULL;
retVal = sscs_CacheRemoveSecret(ssHandle,ssFlags,&keychainID,&secretID,
&epPassword, NULL);
if(retVal != 0)
{
printf("sscs_CacheRemoveSecret failed: %d\n",retVal);
}
retVal = sscs_CacheRemoveKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheRemoveKeychain failed: %d\n",retVal);
}
retVal = sscs_CacheCloseSecretStore(ssHandle, ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
// EnumerateIDs(ssHandle,1,&keychainID);
free(secret.data);
secret.data = NULL;
DECORATE
}
void TestCacheRWRmSecret_OverlappingNames(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
SSCS_KEYCHAIN_ID_LIST_T kcIDList;
SSCS_SECRET_T secret;
SSCS_PASSWORD_T epPassword = {0,0,""};
unsigned int bytesRequired = 0;
int retVal = 0;
unsigned int ssFlags = 0;
SSCS_KEYCHAIN_ID_T keychainID;
SSCS_SECRET_ID_T secretID1;
SSCS_SECRET_ID_T secretID2;
memset(&keychainID,0,sizeof(SSCS_KEYCHAIN_ID_T));
strcpy((char*)(keychainID.keychainID),"MyKeychain");
keychainID.len = strlen("MyKeychain")+1;
memset(&secretID1,0,sizeof(SSCS_SECRET_ID_T));
strcpy((char*)(secretID1.id),"secret1");
secretID1.len = strlen("secret1")+1;
memset(&secretID2,0,sizeof(SSCS_SECRET_ID_T));
strcpy((char*)(secretID2.id),"secret2");
secretID2.len = strlen("secret2")+1;
int i = 0;
DECORATE
secID.version = 0x00040000;
strcpy((char *)secID.ssName,"SecretStore");
ssHandle = sscs_CacheOpenSecretStore(&secID, ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
ssFlags |= SSCS_LOCAL_KEY_CHAIN_F;
printf("Adding %s\n",keychainID.keychainID);
retVal = sscs_CacheAddKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheAddKeychain failed: %d\n",retVal);
}
EnumerateIDs(ssHandle,0,NULL);
memset(&secret,0,sizeof(secret));
secret.data = (char *)malloc(MAX_SECRET_VAL_LEN);
assert(secret.data);
memset(secret.data,0,MAX_SECRET_VAL_LEN);
secret.len = 6;
memcpy(secret.data,"value1",secret.len);
printf("Adding secret %S with value %s\n",secretID1.id,secret.data);
retVal = sscs_CacheWriteSecret(ssHandle,ssFlags,&keychainID,&secretID1,
&secret,&epPassword,NULL);
if(retVal != 0)
{
printf("sscs_CacheWriteSecret failed: %d\n",retVal);
}
memcpy(secret.data,"value2",secret.len);
printf("Adding secret %s with value %s\n",secretID2.id,secret.data);
retVal = sscs_CacheWriteSecret(ssHandle,ssFlags,&keychainID,&secretID2,
&secret,&epPassword,NULL);
if(retVal != 0)
{
printf("sscs_CacheWriteSecret failed: %d\n",retVal);
}
printf("Verifying the written secrets' value...\n");
EnumerateIDs(ssHandle,1,&keychainID);
secret.len = MAX_SECRET_VAL_LEN;
memset(secret.data,0,MAX_SECRET_VAL_LEN);
retVal = sscs_CacheReadSecret(ssHandle,ssFlags,&keychainID,&secretID1,
&secret,&epPassword,&bytesRequired,NULL);
if(retVal != 0)
{
printf("sscs_CacheReadSecret failed: %d\n",retVal);
}
else
{
printf("secret len is %d\n",secret.len);
printf("Value is ");
for(i = 0;i < secret.len; i++ )
{
printf("%c",secret.data[i]);
}
printf("\n");
}
secret.len = MAX_SECRET_VAL_LEN;
memset(secret.data,0,MAX_SECRET_VAL_LEN);
retVal = sscs_CacheReadSecret(ssHandle,ssFlags, &keychainID,&secretID2,
&secret,&epPassword,&bytesRequired,NULL);
if(retVal != 0)
{
printf("sscs_CacheReadSecret failed: %d\n",retVal);
}
else
{
printf("secret len is %d\n",secret.len);
printf("Value is ");
for(i = 0;i < secret.len; i++ )
{
printf("%c",secret.data[i]);
}
printf("\n");
}
free(secret.data);
secret.data = NULL;
printf("Removing %s\n",secretID1.id);
retVal = sscs_CacheRemoveSecret(ssHandle,ssFlags,&keychainID,&secretID1,
&epPassword, NULL);
if(retVal != 0)
{
printf("sscs_CacheRemoveSecret failed: %d\n",retVal);
}
EnumerateIDs(ssHandle,1,&keychainID);
retVal = sscs_CacheRemoveKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheRemoveKeychain failed: %d\n",retVal);
}
retVal = sscs_CacheCloseSecretStore(ssHandle, ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
// EnumerateIDs(ssHandle,1,&keychainID);
free(secret.data);
secret.data = NULL;
DECORATE
}

View File

@@ -0,0 +1,391 @@
/* This file contains all the test cases for all the generic
* Cachelib functions.
*/
#include "testcases.h"
/* Callback for testing CacheOpenSecretStore.
*/
void TestCacheOpenSecretStore_Valid(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
uint32_t ssFlags = 0;
int32_t retVal = 0;
/* sscs_CacheOpenSecretStore_Valid */
DECORATE
printf("INPUT: {0x00040000, SecretStore}\n");
secID.version = 0x00040000;
strcpy((char *)secID.ssName,"SecretStore");
ssHandle = sscs_CacheOpenSecretStore(&secID,ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
/* sscs_CacheOpenSecretStore_Valid */
retVal = sscs_CacheCloseSecretStore(ssHandle, ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheOpenSecretStore failed: %d\n",retVal);
}
DECORATE;
}
void TestCacheOpenSecretStore_Invalid_Input(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
int32_t retVal = 0;
uint32_t ssFlags = 0;
/* sscs_CacheOpenSecretStore_Invalid */
DECORATE
printf("INPUT: {0x00000000, A}\n");
secID.version = 0x00000000;
strcpy((char *)secID.ssName,"A");
ssHandle = sscs_CacheOpenSecretStore(&secID,ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
retVal = sscs_CacheCloseSecretStore(ssHandle,ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheOpenSecretStore failed: %d\n",retVal);
}
DECORATE;
}
void TestCacheCloseSecretStore_Valid(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
int32_t retVal = 0;
uint32_t ssFlags = 0;
DECORATE
printf("INPUT: {0x00040000, SecretStore}\n");
secID.version = 0x00040000;
strcpy((char *)secID.ssName,"SecretStore");
ssHandle = sscs_CacheOpenSecretStore(&secID, ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
printf("INPUT: Valid SSHandle\n");
retVal = sscs_CacheCloseSecretStore(ssHandle,ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
else
{
printf("sscs_CacheCloseSecretStore succeeded.\n");
}
DECORATE;
}
void TestCacheCloseSecretStore_CloseAfterClose(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
int32_t retVal = 0;
uint32_t ssFlags = 0;
DECORATE
printf("INPUT: {0x00040000, SecretStore}\n");
secID.version = 0x00040000;
strcpy((char *)secID.ssName,"SecretStore");
ssHandle = sscs_CacheOpenSecretStore(&secID, ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
printf("INPUT: Valid SSHandle\n");
retVal = sscs_CacheCloseSecretStore(ssHandle, ssFlags,NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
/* Closing SecretStore after a valid close.
* Cachelib must return an appropriate error and must
* not write the request to SSCS.
*/
printf("INPUT: Valid SSHandle\n");
printf("Closing SecretStore after a valid close.\n");
retVal = sscs_CacheCloseSecretStore(ssHandle,ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
DECORATE
}
void TestCacheCloseSecretStore_Invalid_Handle(void)
{
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
int32_t retVal = 0;
uint32_t ssFlags = 0;
DECORATE
/* Passing a NULL SSHandle */
printf("INPUT: Invalid SSHandle\n");
ssHandle = NULL;
retVal = sscs_CacheCloseSecretStore(ssHandle, ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
DECORATE;
}
void TestCacheCloseSecretStore_WithoutOpen(void)
{
SSCS_SECRETSTORE_HANDLE_T ssHandle;
int32_t retVal = 0;
int socketFd = FAKE_SOCK_FD;
uint32_t ssFlags = 0;
DECORATE
/* Passing a cookedup SSHandle */
printf("INPUT: Cookedup SSHandle\n");
ssHandle.platformID = 1;
ssHandle.platHandle = (int*)&socketFd;
retVal = sscs_CacheCloseSecretStore(&ssHandle, ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
}
void TestCacheGetSecretStoreInfo_Valid(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
SSCS_SECRETSTORE_INFO_T ssInfo;
int32_t retVal = 0;
uint32_t ssFlags = 0;
DECORATE;
secID.version = 0x00040000;
strcpy((char *)secID.ssName,"SecretStore");
ssHandle = sscs_CacheOpenSecretStore(&secID, ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
retVal = sscs_CacheGetSecretStoreInfo( ssHandle, ssFlags, &ssInfo, NULL);
if(retVal != 0)
{
printf("sscs_CacheGetSecretStoreInfo failed: %d\n",retVal);
}
else
{
printf("ssInfo.numKeychains :%d\n",ssInfo.numKeyChains);
printf("ssInfo.enumBufsize :%d\n",ssInfo.enumBufsize);
}
retVal = sscs_CacheCloseSecretStore(ssHandle, ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
DECORATE;
}
void TestCacheGetKeychainInfo_Valid(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
SSCS_KEYCHAIN_INFO_T kcInfo;
SSCS_KEYCHAIN_ID_T keychainID;
memset(&keychainID,0,sizeof(keychainID));
strcpy(keychainID.keychainID,"MyKeychain");
keychainID.len = strlen("MyKeychain") + 1;
uint32_t ssFlags = 0;
int32_t retVal = 0;
DECORATE;
secID.version = 0x00040000;
strcpy((char *)secID.ssName,"SecretStore");
ssHandle = sscs_CacheOpenSecretStore(&secID, ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
ssFlags |= SSCS_LOCAL_KEY_CHAIN_F;
printf("Adding %S\n",keychainID.keychainID);
retVal = sscs_CacheAddKeychain(ssHandle,ssFlags,&keychainID,NULL);
if(retVal != 0)
{
printf("sscs_CacheAddKeychain failed: %d\n",retVal);
}
retVal = sscs_CacheGetKeychainInfo(ssHandle, ssFlags, &keychainID, &kcInfo, NULL);
if(retVal != 0)
{
printf("sscs_CacheGetKeychainInfo failed: %d\n",retVal);
}
else
{
printf("kcInfo.numSecrets:%d\n",kcInfo.numSecrets);
}
retVal = sscs_CacheCloseSecretStore(ssHandle, ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
DECORATE;
}
void TestLockCache_Valid(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
int32_t retVal = 0;
uint32_t ssFlags = 0;
DECORATE;
secID.version = 0x00040000;
strcpy((char *)secID.ssName,"SecretStore");
ssHandle = sscs_CacheOpenSecretStore(&secID, ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
retVal = sscs_LockCache(ssHandle, ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_LockCache failed: %d\n",retVal);
}
else
{
printf("LockCache Successful\n");
}
retVal = sscs_CacheCloseSecretStore(ssHandle, ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
DECORATE;
}
void TestUnlockCache_Valid(void)
{
SSCS_SECRETSTORE_T secID;
SSCS_SECRETSTORE_HANDLE_T *ssHandle = NULL;
int32_t retVal = 0;
uint32_t ssFlags = 0;
DECORATE;
secID.version = 0x00040000;
strcpy((char *)secID.ssName,"SecretStore");
ssHandle = sscs_CacheOpenSecretStore(&secID,ssFlags, NULL);
if(!ssHandle)
{
printf("sscs_CacheOpenSecretStore failed\n");
}
else
{
printf("sscs_CacheOpenSecretStore succeeded\n");
}
printf("Platform ID is %d; socketID is %d\n",ssHandle->platformID,
*(int*)ssHandle->platHandle);
retVal = sscs_UnlockCache(ssHandle,ssFlags, NULL, NULL);
if(retVal != 0)
{
printf("sscs_UnlockCache failed: %d\n",retVal);
}
else
{
printf("sscs_UnlockCache Successful\n");
}
retVal = sscs_CacheCloseSecretStore(ssHandle, ssFlags, NULL);
if(retVal != 0)
{
printf("sscs_CacheCloseSecretStore failed: %d\n",retVal);
}
DECORATE;
}

View File

@@ -0,0 +1,6 @@
LINK = $(CXX) \
-o $(BINDIR)$(TARGET) \
$(OBJDIR)/*.$(O) \
-L$(LIBDIR)$(XTRA) -lmicasacache \
-L/usr/lib -lpthread -lc -lnsl \
-L. -lcunit

View File

@@ -0,0 +1,5 @@
OBJS=\
testcases.$(O)\
cache_ss_fns.$(O)\
cache_keychain_fns.$(O)\
cache_secret_fns.$(O)

View File

@@ -0,0 +1,17 @@
include link$(xtra).$(PLAT)
all : $(BIN_NAME)
$(BIN_NAME) : $(OBJS)
@echo Linking $@ ...
$(LINK)
@echo
#install : all

View File

@@ -0,0 +1,150 @@
#include "testcases.h"
void TestCacheOpenSecretStore_Valid(void);
void TestCacheOpenSecretStore_Invalid_Input(void);
void TestCacheCloseSecretStore_Valid(void);
void TestCacheCloseSecretStore_CloseAfterClose(void);
void TestCacheCloseSecretStore_Invalid_Handle(void);
void TestCacheCloseSecretStore_WithoutOpen(void);
void TestCacheAddKeyChain_Valid(void);
void TestCacheAddKeyChain_LongKeychainId(void);
void TestCacheAddKeyChain_ExistingKeychain(void);
void TestCacheAddKeyChain_MaxKeychains(void);
void TestCacheEnumerateKeyChainIds_Valid(void);
void TestCacheEnumerateKeyChainIds_WithoutOpen(void);
void TestCacheEnumerateKeyChainIds_LessBufferLen(void);
void TestCacheEnumerateKeyChainIds_WithNoKeychains(void);
void TestCacheRemoveKeyChain_Valid(void);
void TestCacheRemoveKeyChain_NonExistentKeychain(void);
void TestCacheRemoveKeyChain_OverlappingNames(void);
void TestCacheRWRmSecret_ValidAddSecret(void);
void TestCacheRWRmSecret_LongSecretID(void);
void TestCacheRWSecret_ValidUpdateSecret(void);
void TestCacheRWRmSecret_NonExistentKeychain(void);
void TestCacheRWRmSecret_OverlappingNames(void);
void TestCacheGetSecretStoreInfo_Valid(void);
void TestCacheGetKeychainInfo_Valid(void);
void TestLockCache_Valid(void);
void TestUnlockCache_Valid(void);
/*
*/
int main(int argc, char** argv)
{
CU_pSuite pGenericSSGroup = NULL;
CU_pSuite pKeyChainGroup = NULL;
CU_pSuite pSecretGroup = NULL;
CU_pTest pTest = NULL;
if (CU_initialize_registry())
return 1;
pGenericSSGroup = CU_add_suite("TestCacheOpenSecretStore",NULL,NULL);
if (!pGenericSSGroup)
{
CU_cleanup_registry();
return -1;
}
pTest = CU_add_test(pGenericSSGroup, "TestCacheOpenSecretStore_Valid",TestCacheOpenSecretStore_Valid);
TEST_PTEST
pTest = CU_add_test(pGenericSSGroup, "TestCacheOpenSecretStore_Invalid_Input",TestCacheOpenSecretStore_Invalid_Input);
TEST_PTEST
pGenericSSGroup = CU_add_suite("TestCacheCloseSecretStore",NULL,NULL);
if(!pGenericSSGroup)
{
CU_cleanup_registry();
return -1;
}
pTest = CU_add_test(pGenericSSGroup, "TestCacheCloseSecretStore_Valid",TestCacheCloseSecretStore_Valid);
TEST_PTEST
// pTest = CU_add_test(pGenericSSGroup, "TestCacheCloseSecretStore_WithoutOpen",TestCacheCloseSecretStore_WithoutOpen);
TEST_PTEST
pKeyChainGroup = CU_add_suite("TestCacheEnumerateKeyChainIds",NULL,NULL);
if(!pKeyChainGroup)
{
CU_cleanup_registry();
return -1;
}
pTest = CU_add_test(pKeyChainGroup,"TestCacheAddKeyChain_Valid",TestCacheAddKeyChain_Valid);
TEST_PTEST
pTest = CU_add_test(pKeyChainGroup, "TestCacheAddKeyChain_LongKeychainId",TestCacheAddKeyChain_LongKeychainId);
TEST_PTEST
pTest = CU_add_test(pKeyChainGroup, "TestCacheAddKeyChain_ExistingKeychain",TestCacheAddKeyChain_ExistingKeychain);
TEST_PTEST
pTest = CU_add_test(pKeyChainGroup, "TestCacheAddKeyChain_MaxKeychains",TestCacheAddKeyChain_MaxKeychains);
TEST_PTEST
pTest = CU_add_test(pKeyChainGroup, "TestCacheEnumerateKeyChainIds_Valid",TestCacheEnumerateKeyChainIds_Valid);
TEST_PTEST
// pTest = CU_add_test(pKeyChainGroup, "TestCacheEnumerateKeyChainIds_WithoutOpen",TestCacheEnumerateKeyChainIds_WithoutOpen);
TEST_PTEST
pTest = CU_add_test(pKeyChainGroup, "TestCacheEnumerateKeyChainIds_WithNoKeychains",TestCacheEnumerateKeyChainIds_WithNoKeychains);
TEST_PTEST
pTest = CU_add_test(pKeyChainGroup, "TestCacheRemoveKeyChain_Valid",TestCacheRemoveKeyChain_Valid);
TEST_PTEST
pTest = CU_add_test(pKeyChainGroup, "TestCacheRemoveKeyChain_NonExistentKeychain",TestCacheRemoveKeyChain_NonExistentKeychain);
TEST_PTEST
pTest = CU_add_test(pKeyChainGroup, "TestCacheRemoveKeyChain_OverlappingNames",TestCacheRemoveKeyChain_OverlappingNames);
TEST_PTEST
pSecretGroup = CU_add_suite("TestCacheSecretAPIs",NULL,NULL);
if(!pGenericSSGroup)
{
CU_cleanup_registry();
return -1;
}
pTest = CU_add_test(pSecretGroup, "TestCacheRWRmSecret_ValidAddSecret",TestCacheRWRmSecret_ValidAddSecret);
TEST_PTEST
pTest = CU_add_test(pSecretGroup, "TestCacheRWSecret_ValidUpdateSecret",TestCacheRWSecret_ValidUpdateSecret);
TEST_PTEST
pTest = CU_add_test(pSecretGroup, "TestCacheRWRmSecret_NonExistentKeychain",TestCacheRWRmSecret_NonExistentKeychain);
TEST_PTEST
pTest = CU_add_test(pSecretGroup, "TestCacheRWRmSecret_OverlappingNames",TestCacheRWRmSecret_OverlappingNames);
TEST_PTEST
pTest = CU_add_test(pSecretGroup, "TestCacheRWRmSecret_LongSecretID",TestCacheRWRmSecret_LongSecretID);
TEST_PTEST
pTest = CU_add_test(pGenericSSGroup, "TestCacheGetSecretStoreInfo_Valid",TestCacheGetSecretStoreInfo_Valid);
TEST_PTEST
pTest = CU_add_test(pGenericSSGroup, "TestCacheGetKeychainInfo_Valid",TestCacheGetKeychainInfo_Valid);
TEST_PTEST
pTest = CU_add_test(pGenericSSGroup, "TestLockCache_Valid",TestLockCache_Valid);
TEST_PTEST
pTest = CU_add_test(pGenericSSGroup, "TestUnlockCache_Valid",TestUnlockCache_Valid);
TEST_PTEST
/*DANGER - Test with latest cachelib*/
// pTest = CU_add_test(pKeyChainGroup, "TestCacheEnumerateKeyChainIds_LessBufferLen",TestCacheEnumerateKeyChainIds_LessBufferLen);
TEST_PTEST
// pTest = CU_add_test(pGenericSSGroup, "TestCacheCloseSecretStore_CloseAfterClose",TestCacheCloseSecretStore_CloseAfterClose);
TEST_PTEST
// pTest = CU_add_test(pGenericSSGroup, "TestCacheCloseSecretStore_Invalid_Handle",TestCacheCloseSecretStore_Invalid_Handle);
TEST_PTEST
/* Run the tests. */
// CU_curses_run_tests();
CU_console_run_tests();
CU_cleanup_registry();
return 0;
}

View File

@@ -0,0 +1,25 @@
#ifndef _TESTCASES_H_
#define _TESTCASES_H_
#include <CUnit/Console.h>
#include <CUnit/CUnit.h>
#include "sscs_cache.h"
#include "micasa_types.h"
#include <assert.h>
#define MAX_ID_LIST_BUF 4*1024
#define MAX_SECRET_VAL_LEN 1024
#define FAKE_SOCK_FD 10
#define TEST_LESS_BUFFER_LEN 4
#define LONG_WSTRING "LongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongStringLongString"
#define MAX_RETURNED_IDS 10
#define TEST_PTEST if(!pTest) { CU_cleanup_registry(); return -1; }
#define DECORATE printf("\n****************************************************\n");
#define PRINT_ERR printf("SUCCESS when it MUST HAVE FAILED!!!!\n");
#endif