major source structure and module name changes
This commit is contained in:
34
sharp/Makefile.am
Normal file
34
sharp/Makefile.am
Normal file
@@ -0,0 +1,34 @@
|
||||
#######################################################################
|
||||
#
|
||||
# Copyright (C) 2006 Novell, Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public
|
||||
# License as published by the Free Software Foundation; either
|
||||
# version 2 of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program 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
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public
|
||||
# License along with this program; if not, write to the Free
|
||||
# Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
#
|
||||
#
|
||||
#######################################################################
|
||||
|
||||
SUBDIRS = NSSCSWrapper
|
||||
|
||||
DIST_SUBDIRS = NSSCSWrapper
|
||||
|
||||
EXTRA_DIST =
|
||||
|
||||
.PHONY: package package-clean package-install package-uninstall
|
||||
package package-clean package-install package-uninstall:
|
||||
$(MAKE) -C $(TARGET_OS) $@
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile.in
|
||||
|
||||
80
sharp/NSSCSWrapper/AssemblyInfo.cs
Normal file
80
sharp/NSSCSWrapper/AssemblyInfo.cs
Normal file
@@ -0,0 +1,80 @@
|
||||
/***********************************************************************
|
||||
*
|
||||
* Copyright (C) 2005-2006 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
|
||||
* Library 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, 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("Novell.CASA.miCASAWrapper.dll")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Novell, Inc")]
|
||||
[assembly: AssemblyProduct("CASA")]
|
||||
[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.6.*")]
|
||||
|
||||
//
|
||||
// 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("")]
|
||||
52
sharp/NSSCSWrapper/BasicCredential.cs
Normal file
52
sharp/NSSCSWrapper/BasicCredential.cs
Normal file
@@ -0,0 +1,52 @@
|
||||
/***********************************************************************
|
||||
*
|
||||
* Copyright (C) 2005-2006 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
|
||||
* Library 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, 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;
|
||||
|
||||
namespace Novell.CASA
|
||||
{
|
||||
/// <summary>
|
||||
/// Summary description for BasicCredential.
|
||||
/// </summary>
|
||||
public class BasicCredential
|
||||
{
|
||||
|
||||
private string m_username = "";
|
||||
private string m_password = "";
|
||||
|
||||
public BasicCredential(string username, string password)
|
||||
{
|
||||
m_username = username;
|
||||
m_password = password;
|
||||
}
|
||||
|
||||
public string GetUsername()
|
||||
{
|
||||
return m_username;
|
||||
}
|
||||
|
||||
public string GetPassword()
|
||||
{
|
||||
return m_password;
|
||||
}
|
||||
}
|
||||
}
|
||||
111
sharp/NSSCSWrapper/Makefile.am
Normal file
111
sharp/NSSCSWrapper/Makefile.am
Normal file
@@ -0,0 +1,111 @@
|
||||
#######################################################################
|
||||
#
|
||||
# Copyright (C) 2006 Novell, Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public
|
||||
# License as published by the Free Software Foundation; either
|
||||
# version 2 of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program 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
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public
|
||||
# License along with this program; if not, write to the Free
|
||||
# Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
#
|
||||
#
|
||||
#######################################################################
|
||||
|
||||
if DEBUG
|
||||
TARGET_CFG = Debug
|
||||
CFLAGS += -v -w
|
||||
CS_EXTRA_FLAGS = $(CSCFLAGS_DEBUG)
|
||||
else
|
||||
TARGET_CFG = Release
|
||||
endif
|
||||
|
||||
SUBDIRS =
|
||||
DIST_SUBDIRS =
|
||||
|
||||
EXTRA_DIST = *.cs $(CSFILES)
|
||||
|
||||
CASAROOT = ../..
|
||||
|
||||
CASALIBDIR = $(CASAROOT)/$(LIB)
|
||||
|
||||
# handle Mono secondary dependencies
|
||||
export MONO_PATH := $(MONO_PATH)
|
||||
|
||||
PLATFORMINDEPENDENTSOURCEDIR =
|
||||
PLATFORMDEPENDENTSOURCEDIR = .
|
||||
|
||||
MODULE_NAME =Novell.CASA.miCASAWrapper
|
||||
MODULE_EXT =dll
|
||||
|
||||
CSFILES = $(srcdir)/miCasaException.cs \
|
||||
$(srcdir)/BasicCredential.cs \
|
||||
$(srcdir)/miCASA.cs \
|
||||
$(srcdir)/AssemblyInfo.cs \
|
||||
$(srcdir)/NativeCalls.cs \
|
||||
$(srcdir)/Secret.cs \
|
||||
$(srcdir)/SecretStore.cs
|
||||
|
||||
CSFILES_CSC := $(subst /,$(SEP),$(CSFILES))
|
||||
CS_FLAGS = /target:"library"
|
||||
CS_RESOURCES =
|
||||
CS_LIBS =$(CASALIBDIR)/$(TARGET_CFG)/Novell.CASA.Common.dll
|
||||
CS_LIBPATH = $(CASALIBDIR)/$(TARGET_CFG)
|
||||
|
||||
OBJDIR = ./$(TARGET_CFG)/$(LIB)
|
||||
|
||||
#OBJS = $(addprefix $(OBJDIR)/, $(CSFILES:%.dll=%.cs))
|
||||
|
||||
CUR_DIR := $(shell pwd)
|
||||
|
||||
all: $(OBJDIR)/$(MODULE_NAME).$(MODULE_EXT)
|
||||
|
||||
#
|
||||
# Pattern based rules.
|
||||
#
|
||||
vpath %.c $(PLATFORMDEPENDENTSOURCEDIR) $(PLATFORMINDEPENDENTSOURCEDIR)
|
||||
vpath %.cpp $(PLATFORMDEPENDENTSOURCEDIR) $(PLATFORMINDEPENDENTSOURCEDIR)
|
||||
vpath %.cs $(PLATFORMDEPENDENTSOURCEDIR) $(PLATFORMINDEPENDENTSOURCEDIR)
|
||||
|
||||
$(OBJDIR)/$(MODULE_NAME).$(MODULE_EXT): $(OBJDIR) $(CSFILES)
|
||||
$(CSC) $(CS_FLAGS) $(CS_EXTRA_FLAGS) $(CS_LIBS:%=/r:%) $(CS_LIBPATH:%=-lib:%) -out:$@ $(CSFILES_CSC)
|
||||
cp -f $(OBJDIR)/$(MODULE_NAME).$(MODULE_EXT) $(CASALIBDIR)/$(TARGET_CFG)/$(MODULE_NAME).$(MODULE_EXT)
|
||||
|
||||
#$(OBJDIR)/$(MODULE_NAME).$(MODULE_EXT): $(OBJDIR) $(OBJS)
|
||||
# @echo [======== Linking $@ ========]
|
||||
# $(LINK) -o $@ $(LDFLAGS) $(OBJS) $(LIBS)
|
||||
# cp -f $(OBJDIR)/$(MODULE_NAME).$(MODULE_EXT) $(CASALIBDIR)/$(TARGET_CFG)/$(MODULE_NAME).$(MODULE_EXT)
|
||||
|
||||
$(OBJDIR):
|
||||
[ -d $(OBJDIR) ] || mkdir -p $(OBJDIR)
|
||||
[ -d $(CASALIBDIR) ] || mkdir -p $(CASALIBDIR)
|
||||
[ -d $(CASALIBDIR)/$(TARGET_CFG) ] || mkdir -p $(CASALIBDIR)/$(TARGET_CFG)
|
||||
|
||||
|
||||
install-exec-local: $(OBJDIR)/$(MODULE_NAME).$(MODULE_EXT)
|
||||
$(mkinstalldirs) $(DESTDIR)$(libdir)
|
||||
$(INSTALL_PROGRAM) $(OBJDIR)/$(MODULE_NAME).$(MODULE_EXT) $(DESTDIR)$(libdir)/
|
||||
|
||||
uninstall-local:
|
||||
cd $(DESTDIR)$(libdir); rm -f $(OBJDIR)/$(MODULE_NAME).$(MODULE_EXT)
|
||||
rmdir $(DESTDIR)$(libdir)
|
||||
|
||||
#installcheck-local: install
|
||||
# $(mkinstalldirs) $(DESTDIR)$(libdir)
|
||||
# $(INSTALL_PROGRAM) $(DESTDIR)$(libdir)
|
||||
# cd $(DESTDIR)$(libdir); $(MONO)
|
||||
|
||||
clean-local:
|
||||
if [ -d $(TARGET_CFG) ]; then rm -rf $(TARGET_CFG); fi
|
||||
|
||||
distclean-local:
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile.in
|
||||
1505
sharp/NSSCSWrapper/NativeCalls.cs
Normal file
1505
sharp/NSSCSWrapper/NativeCalls.cs
Normal file
File diff suppressed because it is too large
Load Diff
145
sharp/NSSCSWrapper/Novell.CASA.miCASAWrapper.csproj
Normal file
145
sharp/NSSCSWrapper/Novell.CASA.miCASAWrapper.csproj
Normal file
@@ -0,0 +1,145 @@
|
||||
<VisualStudioProject>
|
||||
<CSHARP
|
||||
ProjectType = "Local"
|
||||
ProductVersion = "7.10.3077"
|
||||
SchemaVersion = "2.0"
|
||||
ProjectGuid = "{E21DD887-22F4-4935-9851-409715F663B0}"
|
||||
>
|
||||
<Build>
|
||||
<Settings
|
||||
ApplicationIcon = ""
|
||||
AssemblyKeyContainerName = ""
|
||||
AssemblyName = "Novell.CASA.miCASAWrapper"
|
||||
AssemblyOriginatorKeyFile = ""
|
||||
DefaultClientScript = "JScript"
|
||||
DefaultHTMLPageLayout = "Grid"
|
||||
DefaultTargetSchema = "IE50"
|
||||
DelaySign = "false"
|
||||
OutputType = "Library"
|
||||
PreBuildEvent = ""
|
||||
PostBuildEvent = ""
|
||||
RootNamespace = "Novell.CASA"
|
||||
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 = "System.Runtime.Remoting"
|
||||
AssemblyName = "System.Runtime.Remoting"
|
||||
HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Runtime.Remoting.dll"
|
||||
/>
|
||||
<Reference
|
||||
Name = "Novell.CASA.Common"
|
||||
Project = "{57CD94A2-5B4A-40C3-8189-CB760FB78357}"
|
||||
Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
|
||||
/>
|
||||
</References>
|
||||
</Build>
|
||||
<Files>
|
||||
<Include>
|
||||
<File
|
||||
RelPath = "AssemblyInfo.cs"
|
||||
SubType = "Code"
|
||||
BuildAction = "Compile"
|
||||
/>
|
||||
<File
|
||||
RelPath = "BasicCredential.cs"
|
||||
SubType = "Code"
|
||||
BuildAction = "Compile"
|
||||
/>
|
||||
<File
|
||||
RelPath = "miCASA.cs"
|
||||
SubType = "Code"
|
||||
BuildAction = "Compile"
|
||||
/>
|
||||
<File
|
||||
RelPath = "miCasaException.cs"
|
||||
SubType = "Code"
|
||||
BuildAction = "Compile"
|
||||
/>
|
||||
<File
|
||||
RelPath = "NativeCalls.cs"
|
||||
SubType = "Code"
|
||||
BuildAction = "Compile"
|
||||
/>
|
||||
<File
|
||||
RelPath = "RemoteClient.cs"
|
||||
SubType = "Code"
|
||||
BuildAction = "Compile"
|
||||
/>
|
||||
<File
|
||||
RelPath = "RemoteServer.cs"
|
||||
SubType = "Code"
|
||||
BuildAction = "Compile"
|
||||
/>
|
||||
<File
|
||||
RelPath = "Secret.cs"
|
||||
SubType = "Code"
|
||||
BuildAction = "Compile"
|
||||
/>
|
||||
<File
|
||||
RelPath = "SecretStore.cs"
|
||||
SubType = "Code"
|
||||
BuildAction = "Compile"
|
||||
/>
|
||||
</Include>
|
||||
</Files>
|
||||
</CSHARP>
|
||||
</VisualStudioProject>
|
||||
|
||||
48
sharp/NSSCSWrapper/Novell.CASA.miCASAWrapper.csproj.user
Normal file
48
sharp/NSSCSWrapper/Novell.CASA.miCASAWrapper.csproj.user
Normal file
@@ -0,0 +1,48 @@
|
||||
<VisualStudioProject>
|
||||
<CSHARP LastOpenVersion = "7.10.3077" >
|
||||
<Build>
|
||||
<Settings ReferencePath = "D:\casa\c_micasad\lib\bin\Debug\;D:\casa2\c_micasad\lib\bin\Debug\" >
|
||||
<Config
|
||||
Name = "Debug"
|
||||
EnableASPDebugging = "false"
|
||||
EnableASPXDebugging = "false"
|
||||
EnableUnmanagedDebugging = "true"
|
||||
EnableSQLServerDebugging = "false"
|
||||
RemoteDebugEnabled = "false"
|
||||
RemoteDebugMachine = ""
|
||||
StartAction = "Project"
|
||||
StartArguments = ""
|
||||
StartPage = ""
|
||||
StartProgram = ""
|
||||
StartURL = ""
|
||||
StartWorkingDirectory = ""
|
||||
StartWithIE = "true"
|
||||
/>
|
||||
<Config
|
||||
Name = "Release"
|
||||
EnableASPDebugging = "false"
|
||||
EnableASPXDebugging = "false"
|
||||
EnableUnmanagedDebugging = "false"
|
||||
EnableSQLServerDebugging = "false"
|
||||
RemoteDebugEnabled = "false"
|
||||
RemoteDebugMachine = ""
|
||||
StartAction = "Project"
|
||||
StartArguments = ""
|
||||
StartPage = ""
|
||||
StartProgram = ""
|
||||
StartURL = ""
|
||||
StartWorkingDirectory = ""
|
||||
StartWithIE = "true"
|
||||
/>
|
||||
</Settings>
|
||||
</Build>
|
||||
<OtherProjectSettings
|
||||
CopyProjectDestinationFolder = ""
|
||||
CopyProjectUncPath = ""
|
||||
CopyProjectOption = "0"
|
||||
ProjectView = "ShowAllFiles"
|
||||
ProjectTrust = "0"
|
||||
/>
|
||||
</CSHARP>
|
||||
</VisualStudioProject>
|
||||
|
||||
21
sharp/NSSCSWrapper/Novell.SecretStoreClient.sln
Normal file
21
sharp/NSSCSWrapper/Novell.SecretStoreClient.sln
Normal file
@@ -0,0 +1,21 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 8.00
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Novell.SecretStoreClient.NSSCSWrapper", "Novell.SecretStoreClient.NSSCSWrapper.csproj", "{E21DD887-22F4-4935-9851-409715F663B0}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfiguration) = preSolution
|
||||
Debug = Debug
|
||||
Release = Release
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfiguration) = postSolution
|
||||
{E21DD887-22F4-4935-9851-409715F663B0}.Debug.ActiveCfg = Debug|.NET
|
||||
{E21DD887-22F4-4935-9851-409715F663B0}.Debug.Build.0 = Debug|.NET
|
||||
{E21DD887-22F4-4935-9851-409715F663B0}.Release.ActiveCfg = Release|.NET
|
||||
{E21DD887-22F4-4935-9851-409715F663B0}.Release.Build.0 = Release|.NET
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityAddIns) = postSolution
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
BIN
sharp/NSSCSWrapper/Novell.SecretStoreClient.suo
Normal file
BIN
sharp/NSSCSWrapper/Novell.SecretStoreClient.suo
Normal file
Binary file not shown.
111
sharp/NSSCSWrapper/RemoteClient.cs
Normal file
111
sharp/NSSCSWrapper/RemoteClient.cs
Normal file
@@ -0,0 +1,111 @@
|
||||
/***********************************************************************
|
||||
*
|
||||
* Copyright (C) 2005-2006 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
|
||||
* Library 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, 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 System.Collections.Specialized;
|
||||
using System.Runtime.Remoting;
|
||||
using System.Runtime.Remoting.Channels;
|
||||
using System.Runtime.Remoting.Channels.Tcp;
|
||||
|
||||
namespace Novell.CASA
|
||||
{
|
||||
/// <summary>
|
||||
/// Summary description for RemoteClient.
|
||||
/// </summary>
|
||||
public class RemoteClient
|
||||
{
|
||||
|
||||
private SecretStore obj;
|
||||
TcpChannel chan = null;
|
||||
|
||||
public RemoteClient()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public void openSocket(string serverAddr, string sPort)
|
||||
{
|
||||
// Create a channel for communicating w/ the remote object
|
||||
// Notice no port is specified on the client
|
||||
chan = new TcpChannel();
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
ChannelServices.RegisterChannel(chan);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
}
|
||||
// Create an instance of the remote object
|
||||
obj = (SecretStore) Activator.GetObject(
|
||||
typeof(Novell.CASA.SecretStore),
|
||||
"tcp://"+serverAddr + ":" + sPort + "/enumerateSecretIDs" );
|
||||
}
|
||||
|
||||
public void closeSocket()
|
||||
{
|
||||
if (chan != null)
|
||||
{
|
||||
ChannelServices.UnregisterChannel(chan);
|
||||
//chan = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public StringCollection getRemoteSecretIDS()
|
||||
{
|
||||
// Use the object
|
||||
try
|
||||
{
|
||||
if( obj.Equals(null) )
|
||||
{
|
||||
System.Console.WriteLine("Error: unable to locate server");
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
//Console.WriteLine(obj.enumerateSecretIDs());
|
||||
return obj.enumerateSecretIDs();
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
public Secret getRemoteSecret(string id)
|
||||
{
|
||||
|
||||
if (obj.Equals(null))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
return obj.getSecret(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
87
sharp/NSSCSWrapper/RemoteServer.cs
Normal file
87
sharp/NSSCSWrapper/RemoteServer.cs
Normal file
@@ -0,0 +1,87 @@
|
||||
/***********************************************************************
|
||||
*
|
||||
* Copyright (C) 2005-2006 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
|
||||
* Library 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, 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 System.Runtime.Remoting;
|
||||
using System.Runtime.Remoting.Channels;
|
||||
using System.Runtime.Remoting.Channels.Tcp;
|
||||
|
||||
namespace Novell.CASA
|
||||
{
|
||||
/// <summary>
|
||||
/// Summary description for RemoteServer.
|
||||
/// </summary>
|
||||
public class RemoteServer
|
||||
{
|
||||
|
||||
|
||||
TcpChannel channel;
|
||||
public RemoteServer()
|
||||
{
|
||||
//
|
||||
// TODO: Add constructor logic here
|
||||
//
|
||||
}
|
||||
|
||||
public void startServer(int port)
|
||||
{
|
||||
int iPort = port;
|
||||
if (iPort == 0)
|
||||
iPort = 8080;
|
||||
|
||||
channel = new TcpChannel(iPort);
|
||||
|
||||
try
|
||||
{
|
||||
ChannelServices.RegisterChannel(channel);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw e;
|
||||
}
|
||||
|
||||
// Register as an available service with the name HelloWorld
|
||||
RemotingConfiguration.RegisterWellKnownServiceType(
|
||||
typeof(SecretStore),
|
||||
"enumerateSecretIDs",
|
||||
WellKnownObjectMode.SingleCall );
|
||||
|
||||
RemotingConfiguration.RegisterWellKnownServiceType(
|
||||
typeof(SecretStore),
|
||||
"getSecret(string id)",
|
||||
WellKnownObjectMode.SingleCall );
|
||||
|
||||
System.Console.WriteLine("Server Started on "+ iPort);
|
||||
// System.Console.ReadLine();
|
||||
//return 0;
|
||||
}
|
||||
|
||||
public void stopServer()
|
||||
{
|
||||
if (channel != null)
|
||||
{
|
||||
System.Console.WriteLine("Stopping server");
|
||||
ChannelServices.UnregisterChannel(channel);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
216
sharp/NSSCSWrapper/Secret.cs
Normal file
216
sharp/NSSCSWrapper/Secret.cs
Normal file
@@ -0,0 +1,216 @@
|
||||
/***********************************************************************
|
||||
*
|
||||
* Copyright (C) 2005-2006 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
|
||||
* Library 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, 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 System.Collections;
|
||||
|
||||
using System.Collections.Specialized;
|
||||
using Novell.CASA.MiCasa.Common;
|
||||
using Novell.CASA.MiCasa.Communication;
|
||||
|
||||
namespace Novell.CASA
|
||||
{
|
||||
/// <summary>
|
||||
/// Summary description for Secret.
|
||||
/// </summary>
|
||||
public class Secret : MarshalByRefObject
|
||||
{
|
||||
internal IntPtr m_pHsc;
|
||||
private string m_keyChainID;
|
||||
private uint m_ssFlags;
|
||||
internal IntPtr m_secretHandle;
|
||||
private string m_secretID;
|
||||
private string m_epPassword = null;
|
||||
private uint m_iCreateTime = 0;
|
||||
private uint m_iModifyTime = 0;
|
||||
private uint m_iAccessTime = 0;
|
||||
internal int m_type = 0;
|
||||
|
||||
// holds name value pairs for this secret
|
||||
private System.Collections.Specialized.NameValueCollection m_nvc;
|
||||
private byte[] m_baValue = null;
|
||||
|
||||
public static int SS_APP = 1;
|
||||
public static int SS_CREDSET = 2;
|
||||
public static int SS_BINARY = 4;
|
||||
|
||||
|
||||
// constructor
|
||||
internal Secret(
|
||||
IntPtr pHSC,
|
||||
string sKeyChainID,
|
||||
uint iSSFlags,
|
||||
IntPtr ptrHandle,
|
||||
string sSecretID,
|
||||
int iSecretType,
|
||||
string sEPPassword)
|
||||
{
|
||||
m_pHsc = pHSC;
|
||||
m_keyChainID = sKeyChainID;
|
||||
m_ssFlags = iSSFlags;
|
||||
m_secretHandle = ptrHandle;
|
||||
m_secretID = sSecretID;
|
||||
m_epPassword = sEPPassword;
|
||||
|
||||
m_type = iSecretType;
|
||||
|
||||
if (sSecretID.StartsWith("SS_CredSet"))
|
||||
m_type = Secret.SS_CREDSET;
|
||||
else if (sSecretID.StartsWith("SS_App"))
|
||||
m_type = Secret.SS_APP;
|
||||
else if (sSecretID.StartsWith("SS_Binary"))
|
||||
m_type = Secret.SS_BINARY;
|
||||
|
||||
// create collection
|
||||
m_nvc = new System.Collections.Specialized.NameValueCollection();
|
||||
|
||||
}
|
||||
|
||||
// TO clean up SecretHandle
|
||||
|
||||
public string getID()
|
||||
{
|
||||
return m_secretID;
|
||||
}
|
||||
|
||||
public void setKeyValuePair(string sKey, string sKeyValue)
|
||||
{
|
||||
if (m_type == Secret.SS_APP)
|
||||
m_nvc.Add(sKey, sKeyValue);
|
||||
else
|
||||
m_nvc.Set(sKey, sKeyValue);
|
||||
}
|
||||
|
||||
public byte[] getBinaryValue()
|
||||
{
|
||||
return m_baValue;
|
||||
}
|
||||
|
||||
// used for binary secrets, throws exception if not
|
||||
public void setBinaryValue(byte[] baData)
|
||||
{
|
||||
// make sure this is a binary secret
|
||||
if (this.m_type == SS_BINARY)
|
||||
{
|
||||
m_baValue = baData;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception();
|
||||
}
|
||||
}
|
||||
|
||||
public string[] getKeyValues(string sKey)
|
||||
{
|
||||
return m_nvc.GetValues(sKey);
|
||||
}
|
||||
|
||||
public string getKeyValue(string sKey)
|
||||
{
|
||||
return m_nvc.Get(sKey);
|
||||
}
|
||||
|
||||
public int getSecretType()
|
||||
{
|
||||
return this.m_type;
|
||||
}
|
||||
|
||||
// public string getSecretValue()
|
||||
// {
|
||||
// // TODO this is for a raw secret, just an ID and value
|
||||
// // should be only one key in the NameValueCollection
|
||||
// }
|
||||
|
||||
public NameValueCollection getKeyValueCollection()
|
||||
{
|
||||
return m_nvc;
|
||||
}
|
||||
|
||||
public void mergeKeyValueCollection(NameValueCollection nvc)
|
||||
{
|
||||
//if (m_nvc == null)
|
||||
m_nvc = nvc;
|
||||
}
|
||||
|
||||
public void setEnhancedProtectionPassword(string sEPPassword)
|
||||
{
|
||||
m_epPassword = sEPPassword;
|
||||
}
|
||||
|
||||
internal string getEnhancedProtectionPassword()
|
||||
{
|
||||
return m_epPassword;
|
||||
}
|
||||
|
||||
public bool isEnhancedProtected()
|
||||
{
|
||||
if (m_epPassword != null)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
public void removeKey(string sKey, uint ctxFlags)
|
||||
{
|
||||
//call the ndk to remove that one too.
|
||||
NativeCalls.removeKeyValue(this.m_secretHandle, sKey, m_nvc.Get(sKey), ctxFlags);
|
||||
|
||||
// remove from our collection
|
||||
m_nvc.Remove(sKey);
|
||||
}
|
||||
|
||||
internal void setTimeStamps(uint uiCreated, uint uiModified, uint uiAccessed)
|
||||
{
|
||||
m_iCreateTime = uiCreated;
|
||||
m_iModifyTime = uiModified;
|
||||
m_iAccessTime = uiAccessed;
|
||||
}
|
||||
|
||||
public uint getCreateTime()
|
||||
{
|
||||
return m_iCreateTime;
|
||||
}
|
||||
|
||||
public uint getModifiedTime()
|
||||
{
|
||||
return m_iModifyTime;
|
||||
}
|
||||
|
||||
public uint getAccessTime()
|
||||
{
|
||||
return m_iAccessTime;
|
||||
}
|
||||
|
||||
public Hashtable GetLinkedKeys(string sKey)
|
||||
{
|
||||
Hashtable htLinkedKeys = (Hashtable)MiCasaRequestReply.Send(MiCasaRequestReply.VERB_GET_LINKED_KEYS,
|
||||
null,
|
||||
this.getID(),
|
||||
sKey,
|
||||
null);
|
||||
|
||||
|
||||
return htLinkedKeys;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
167
sharp/NSSCSWrapper/SecretStore.cs
Normal file
167
sharp/NSSCSWrapper/SecretStore.cs
Normal file
@@ -0,0 +1,167 @@
|
||||
/***********************************************************************
|
||||
*
|
||||
* Copyright (C) 2005-2006 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
|
||||
* Library 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, 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 System.Collections.Specialized;
|
||||
|
||||
|
||||
namespace Novell.CASA
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents the SecretStore
|
||||
/// </summary>
|
||||
public class SecretStore : MarshalByRefObject
|
||||
{
|
||||
private string m_sMasterPassword = null;
|
||||
private static string SESSION_KEY_CHAIN = "SSCS_SESSION_KEY_CHAIN_ID";
|
||||
public static string LOCAL_REMOTE_KEY_CHAIN = "SSCS_LOCAL_REMOTE_KEY_CHAIN_ID";
|
||||
|
||||
private NativeCalls m_NativeCalls = null;
|
||||
private IntPtr m_hsc = IntPtr.Zero;
|
||||
|
||||
public SecretStore()
|
||||
{
|
||||
doSetup();
|
||||
}
|
||||
|
||||
private void doSetup()
|
||||
{
|
||||
m_NativeCalls = new NativeCalls();
|
||||
m_hsc = m_NativeCalls.openSecretStore("SecretStore");
|
||||
//Console.WriteLine("Session handle: {0}", m_hsc);
|
||||
}
|
||||
|
||||
public static SecretStore getInstance()
|
||||
{
|
||||
SecretStore newSS = new SecretStore();
|
||||
return newSS;
|
||||
}
|
||||
|
||||
public void ReleaseInstance()
|
||||
{
|
||||
if (m_hsc != IntPtr.Zero)
|
||||
m_NativeCalls.closeSecretStore(m_hsc);
|
||||
}
|
||||
|
||||
/*
|
||||
public static void ReleaseInstance()
|
||||
{
|
||||
// TODO:
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
internal Secret getSecret(string sKeyChainID, uint ssFlags, string sSecretID, int iSecretType, string sEPPassword)
|
||||
{
|
||||
if (m_NativeCalls != null)
|
||||
return m_NativeCalls.getSecret(m_hsc, sKeyChainID, ssFlags, sSecretID, iSecretType, sEPPassword);
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public Secret getSecret(string id)
|
||||
{
|
||||
string sSecretId = id;
|
||||
int iSecretType = Secret.SS_BINARY;
|
||||
|
||||
//Console.WriteLine("GetSecret called for "+id);
|
||||
if (sSecretId.StartsWith("SS_CredSet"))
|
||||
{
|
||||
sSecretId = sSecretId.Substring(11);
|
||||
iSecretType = Secret.SS_CREDSET;
|
||||
}
|
||||
else if (sSecretId.StartsWith("SS_App"))
|
||||
{
|
||||
sSecretId = sSecretId.Substring(10);
|
||||
iSecretType = Secret.SS_APP;
|
||||
}
|
||||
|
||||
return getSecret(0, sSecretId, iSecretType, "");
|
||||
}
|
||||
|
||||
public Secret getSecret(uint ssFlags, string sSecretID, int iSecretType, string sEPPassword)
|
||||
{
|
||||
return getSecret(SESSION_KEY_CHAIN, ssFlags, sSecretID, iSecretType, sEPPassword);
|
||||
}
|
||||
|
||||
public void setSecret(uint flags, string sKeyChainID, Secret secret, int iSecretType)
|
||||
{
|
||||
m_NativeCalls.setSecret(m_hsc, sKeyChainID, flags, secret, iSecretType);
|
||||
}
|
||||
|
||||
public void setSecret(uint flags, Secret secret, int iSecretType)
|
||||
{
|
||||
// call the native calls to write this secret
|
||||
m_NativeCalls.setSecret(m_hsc, SESSION_KEY_CHAIN, flags, secret, iSecretType);
|
||||
}
|
||||
|
||||
private void setSecret(uint flags, string sSecretID, string sEPPassword)
|
||||
{
|
||||
//setSecret(flags, SESSION_KEY_CHAIN, sSecretID, sEPPassword);
|
||||
}
|
||||
|
||||
public void removeSecret(uint ssFlags, string sKeyChainID, string sEPPassword, string sSecretID, int iSecretType)
|
||||
{
|
||||
m_NativeCalls.RemoveSecret(m_hsc, ssFlags, sKeyChainID, sEPPassword, sSecretID, iSecretType);
|
||||
}
|
||||
|
||||
public void removeSecret(string sSecretID, int iSecretType)
|
||||
{
|
||||
removeSecret(0, SESSION_KEY_CHAIN, "", sSecretID, iSecretType);
|
||||
}
|
||||
|
||||
|
||||
private void enumerateKeychainIDs(string sSearchSting)
|
||||
{
|
||||
if (m_NativeCalls != null)
|
||||
{
|
||||
//m_NativeCalls.enumKeychainIDs();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void setMasterPassword(string sMasterPassword)
|
||||
{
|
||||
m_sMasterPassword = sMasterPassword;
|
||||
}
|
||||
|
||||
public StringCollection enumerateSecretIDs()
|
||||
{
|
||||
return enumerateSecretIDs(SESSION_KEY_CHAIN);
|
||||
}
|
||||
|
||||
|
||||
public StringCollection enumerateSecretIDs(string sKeyChainID)
|
||||
{
|
||||
return m_NativeCalls.EnumerateSecretIDs(m_hsc, 0, sKeyChainID, "");
|
||||
}
|
||||
public void addKeyChain(string sKeyChainID)
|
||||
{
|
||||
m_NativeCalls.AddKeyChain(m_hsc, 0, sKeyChainID);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
168
sharp/NSSCSWrapper/miCASA.cs
Normal file
168
sharp/NSSCSWrapper/miCASA.cs
Normal file
@@ -0,0 +1,168 @@
|
||||
/***********************************************************************
|
||||
*
|
||||
* Copyright (C) 2005-2006 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
|
||||
* Library 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, 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 Novell.CASA
|
||||
{
|
||||
/// <summary>
|
||||
/// Summary description for miCASA.
|
||||
/// </summary>
|
||||
public class miCASA
|
||||
{
|
||||
|
||||
public static uint USERNAME_TYPE_CN_F = 0x00000000;
|
||||
public static uint USERNAME_TYPE_NDS_DN_F = 0x00000001;
|
||||
public static uint USERNAME_TYPE_NDS_FDN_F = 0x00000002;
|
||||
public static uint USERNAME_TYPE_LDAP_DN_F = 0x00000004;
|
||||
public static uint USERNAME_TYPE_EMAIL_F = 0x00000008;
|
||||
public static uint USERNAME_TYPE_OTHER_F = 0x00000010;
|
||||
|
||||
public miCASA()
|
||||
{
|
||||
//
|
||||
// TODO: Add constructor logic here
|
||||
//
|
||||
}
|
||||
|
||||
|
||||
public static void SetBasicCredential(
|
||||
string sAppSecretID,
|
||||
string sSharedSecretID,
|
||||
string sUsername,
|
||||
string sPassword)
|
||||
{
|
||||
SetCredential(0, sAppSecretID, sSharedSecretID, 0, sUsername, sPassword);
|
||||
}
|
||||
|
||||
public static string GetCredentialUsername(
|
||||
string sAppSecretID,
|
||||
string sSharedSecretID)
|
||||
|
||||
{
|
||||
BasicCredential bc = GetBasicCredential(sAppSecretID, sSharedSecretID);
|
||||
if (bc != null)
|
||||
return bc.GetUsername();
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
public static string GetCredentialPassword(
|
||||
string sAppSecretID,
|
||||
string sSharedSecretID)
|
||||
|
||||
{
|
||||
BasicCredential bc = GetBasicCredential(sAppSecretID, sSharedSecretID);
|
||||
if (bc != null)
|
||||
return bc.GetPassword();
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public static BasicCredential GetBasicCredential(
|
||||
string sAppSecretID,
|
||||
string sSharedSecretID)
|
||||
{
|
||||
return GetCredential(0, sAppSecretID, sSharedSecretID, miCASA.USERNAME_TYPE_CN_F);
|
||||
}
|
||||
|
||||
public static void RemoveBasicCredential(
|
||||
string sAppSecretID,
|
||||
string sSharedSecretID)
|
||||
{
|
||||
RemoveCredential(0, sAppSecretID, sSharedSecretID);
|
||||
}
|
||||
|
||||
|
||||
public static void SetCredential(
|
||||
uint ssFlags,
|
||||
string sAppSecretID,
|
||||
string sSharedSecretID,
|
||||
uint unFlag,
|
||||
string sUsername,
|
||||
string sPassword)
|
||||
{
|
||||
NativeCalls.SetCredential(ssFlags, sAppSecretID, sSharedSecretID, unFlag, sUsername, sPassword);
|
||||
}
|
||||
|
||||
public static BasicCredential GetCredential(
|
||||
uint ssFlags,
|
||||
string sAppSecretID,
|
||||
string sSharedSecretID,
|
||||
uint unFlag)
|
||||
|
||||
{
|
||||
return NativeCalls.GetCredential(ssFlags, sAppSecretID, sSharedSecretID, unFlag);
|
||||
}
|
||||
|
||||
public static void RemoveCredential(
|
||||
uint ssFlags,
|
||||
string sAppSecretID,
|
||||
string sSharedSecretID)
|
||||
{
|
||||
NativeCalls.RemoveCredential(ssFlags, sAppSecretID, sSharedSecretID);
|
||||
}
|
||||
|
||||
public static int SetMasterPassword(
|
||||
uint ssFlags,
|
||||
string mPasswd)
|
||||
{
|
||||
return NativeCalls.SetMasterPassword(ssFlags,mPasswd);
|
||||
}
|
||||
|
||||
public static bool IsSecretPersistent(
|
||||
uint ssFlags,
|
||||
string secretID)
|
||||
{
|
||||
return NativeCalls.IsSecretPersistent(ssFlags,secretID);
|
||||
}
|
||||
|
||||
public static bool ChangeMasterPassword(string sCurrentPassword, string sNewPassword)
|
||||
{
|
||||
if (sCurrentPassword == null || sNewPassword == null)
|
||||
{
|
||||
throw new miCasaException(miCasaException.NSSCS_E_INVALID_PARAM);
|
||||
}
|
||||
|
||||
if (sNewPassword.Length < 8)
|
||||
throw new miCasaException(miCasaException.NSSCS_E_MP_PWORD_NOT_ALLOWED);
|
||||
|
||||
return NativeCalls.ResetMasterPassword(sCurrentPassword, sNewPassword);
|
||||
|
||||
}
|
||||
|
||||
public static bool ValidateDesktopPwd(string sPassword)
|
||||
{
|
||||
if (sPassword != null)
|
||||
{
|
||||
return NativeCalls.ValidateDesktopPwd(sPassword);
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
520
sharp/NSSCSWrapper/miCasaException.cs
Normal file
520
sharp/NSSCSWrapper/miCasaException.cs
Normal file
@@ -0,0 +1,520 @@
|
||||
/***********************************************************************
|
||||
*
|
||||
* Copyright (C) 2005-2006 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
|
||||
* Library 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, 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;
|
||||
|
||||
namespace Novell.CASA
|
||||
{
|
||||
/// <summary>
|
||||
/// Summary description for MiCasaException.
|
||||
/// </summary>
|
||||
public class miCasaException:Exception
|
||||
{
|
||||
|
||||
int m_iException = 0;
|
||||
|
||||
public const int NSSCS_E_OBJECT_NOT_FOUND = -800; //0xFFFFFCE0; /* -800 */
|
||||
|
||||
/**
|
||||
* NICI operations have failed.
|
||||
*/
|
||||
public const int NSSCS_E_NICI_FAILURE = -801;
|
||||
|
||||
/**
|
||||
* Secret ID is not in the User Secret Store.
|
||||
*/
|
||||
public const int NSSCS_E_INVALID_SECRET_ID = -802;
|
||||
|
||||
/**
|
||||
* Some internal operating system services have not been available.
|
||||
*/
|
||||
public const int NSSCS_E_SYSTEM_FAILURE = -803;
|
||||
|
||||
/**
|
||||
* Access to the target SecretStore has been denied.
|
||||
*/
|
||||
public const int NSSCS_E_ACCESS_DENIED = -804;
|
||||
|
||||
/**
|
||||
* Some internal NDS services have not been available.
|
||||
*/
|
||||
public const int NSSCS_E_NDS_INTERNAL_FAILURE = -805;
|
||||
|
||||
/**
|
||||
* Secret has not been initialized with a write.
|
||||
*/
|
||||
public const int NSSCS_E_SECRET_UNINITIALIZED = -806;
|
||||
|
||||
/**
|
||||
* Size of the buffer is not in a nominal range between minimum and maximum.
|
||||
*/
|
||||
public const int NSSCS_E_BUFFER_LEN = -807;
|
||||
|
||||
/**
|
||||
* Client and server components are not of the compatible versions.
|
||||
*/
|
||||
public const int NSSCS_E_INCOMPATIBLE_VERSION = -808;
|
||||
|
||||
/**
|
||||
* SecretStore data on the server has been corrupted.
|
||||
*/
|
||||
public const int NSSCS_E_CORRUPTED_STORE = -809;
|
||||
|
||||
/**
|
||||
* Secret ID already exists in the Secret Store.
|
||||
*/
|
||||
public const int NSSCS_E_SECRET_ID_EXISTS = -810;
|
||||
|
||||
/**
|
||||
* User NDS password has been changed by the administrator.
|
||||
*/
|
||||
public const int NSSCS_E_NDS_PWORD_CHANGED = -811;
|
||||
|
||||
/**
|
||||
* Target NDS User object not found.
|
||||
*/
|
||||
public const int NSSCS_E_INVALID_TARGET_OBJECT = -812;
|
||||
|
||||
/**
|
||||
* Target NDS User object does not have a SecretStore.
|
||||
*/
|
||||
public const int NSSCS_E_STORE_NOT_FOUND = -813;
|
||||
|
||||
/**
|
||||
* SecretStore not on the Network.
|
||||
*/
|
||||
public const int NSSCS_E_SERVICE_NOT_FOUND = -814;
|
||||
|
||||
/**
|
||||
* Length of the Secret ID buffer exceeds the limit.
|
||||
*/
|
||||
public const int NSSCS_E_SECRET_ID_TOO_LONG = -815;
|
||||
|
||||
/**
|
||||
* Length of the Enumeration buffer too int.
|
||||
*/
|
||||
public const int NSSCS_E_ENUM_BUFF_TOO_SHORT = -816;
|
||||
|
||||
/**
|
||||
* User not authenticated.
|
||||
*/
|
||||
public const int NSSCS_E_NOT_AUTHENTICATED = -817;
|
||||
|
||||
/**
|
||||
* Not supported operations.
|
||||
*/
|
||||
public const int NSSCS_E_NOT_SUPPORTED = -818;
|
||||
|
||||
/**
|
||||
* Typed in NDS password not valid.
|
||||
*/
|
||||
public const int NSSCS_E_NDS_PWORD_INVALID = -819;
|
||||
|
||||
/**
|
||||
* Session keys of the client and server NICI are out of sync.
|
||||
*/
|
||||
public const int NSSCS_E_NICI_OUTOF_SYNC = -820;
|
||||
|
||||
/**
|
||||
* Requested service not supported yet.
|
||||
*/
|
||||
public const int NSSCS_E_SERVICE_NOT_SUPPORTED = -821;
|
||||
|
||||
/**
|
||||
* NDS authentication type not supported.
|
||||
*/
|
||||
public const int NSSCS_E_TOKEN_NOT_SUPPORTED = -822;
|
||||
|
||||
/**
|
||||
* Unicode text conversion operation failed.
|
||||
*/
|
||||
public const int NSSCS_E_UNICODE_OP_FAILURE = -823;
|
||||
|
||||
/**
|
||||
* Connection to server is lost.
|
||||
*/
|
||||
public const int NSSCS_E_TRANSPORT_FAILURE = -824;
|
||||
|
||||
/**
|
||||
* Cryptographic operation failed.
|
||||
*/
|
||||
public const int NSSCS_E_CRYPTO_OP_FAILURE = -825;
|
||||
|
||||
/**
|
||||
* Opening a connection to the server failed.
|
||||
*/
|
||||
public const int NSSCS_E_SERVER_CONN_FAILURE = -826;
|
||||
|
||||
/**
|
||||
* Access to server connection failed.
|
||||
*/
|
||||
public const int NSSCS_E_CONN_ACCESS_FAILURE = -827;
|
||||
|
||||
/**
|
||||
* Size of the enumeration buffer exceeds the limit.
|
||||
*/
|
||||
public const int NSSCS_E_ENUM_BUFF_TOO_LONG = -828;
|
||||
|
||||
/**
|
||||
* Size of the Secret buffer exceeds the limit.
|
||||
*/
|
||||
public const int NSSCS_E_SECRET_BUFF_TOO_LONG = -829;
|
||||
|
||||
/**
|
||||
* Length of the Secret ID should be greater than zero.
|
||||
*/
|
||||
public const int NSSCS_E_SECRET_ID_TOO_SHORT = -830;
|
||||
|
||||
/**
|
||||
* Protocol data corrupted on the wire.
|
||||
*/
|
||||
public const int NSSCS_E_CORRUPTED_PACKET_DATA = -831;
|
||||
|
||||
/**
|
||||
* EP password validation failed. Access to the secret denied!
|
||||
*/
|
||||
public const int NSSCS_E_EP_ACCESS_DENIED = -832;
|
||||
|
||||
/**
|
||||
* Schema is not extended to support SecreStore on the target tree.
|
||||
*/
|
||||
public const int NSSCS_E_SCHEMA_NOT_EXTENDED = -833;
|
||||
|
||||
/**
|
||||
* One of the optional service attributes is not instantiated.
|
||||
*/
|
||||
public const int NSSCS_E_ATTR_NOT_FOUND = -834;
|
||||
|
||||
/**
|
||||
* Server has been upgraded and user SecretStore should be updated.
|
||||
*/
|
||||
public const int NSSCS_E_MIGRATION_NEEDED = -835;
|
||||
|
||||
/**
|
||||
* Master password could not be verified to read or unlock the secrets.
|
||||
*/
|
||||
public const int NSSCS_E_MP_PWORD_INVALID = -836;
|
||||
|
||||
/**
|
||||
* Master password has not been set on the SecretStore.
|
||||
*/
|
||||
public const int NSSCS_E_MP_PWORD_NOT_SET = -837;
|
||||
|
||||
/**
|
||||
* Ability to use master password has been disabled.
|
||||
*/
|
||||
public const int NSSCS_E_MP_PWORD_NOT_ALLOWED = -838;
|
||||
|
||||
/**
|
||||
* Not a writeable replica of NDS.
|
||||
*/
|
||||
public const int NSSCS_E_WRONG_REPLICA_TYPE = -839;
|
||||
|
||||
/**
|
||||
* Target attribute is not instantiated in NDS.
|
||||
*
|
||||
* @since 3.0
|
||||
*/
|
||||
public const int NSSCS_E_ATTR_VAL_NOT_FOUND = -840;
|
||||
|
||||
/**
|
||||
* API parameter is not initialized.
|
||||
*
|
||||
* @since 3.0
|
||||
*/
|
||||
public const int NSSCS_E_INVALID_PARAM = -841;
|
||||
|
||||
/**
|
||||
* Connection to SecretStore needs to be over SSL.
|
||||
*
|
||||
* @since 3.0
|
||||
*/
|
||||
public const int NSSCS_E_NEED_SECURE_CHANNEL = -842;
|
||||
|
||||
/**
|
||||
* No server to support the given override configuration is found.
|
||||
*
|
||||
* @since 3.02
|
||||
*/
|
||||
public const int NSSCS_E_CONFIG_NOT_SUPPORTED = -843;
|
||||
|
||||
/**
|
||||
* Attempt to unlock SecretStore failed because the store is not locked.
|
||||
*
|
||||
* @since 3.02
|
||||
*/
|
||||
public const int NSSCS_E_STORE_NOT_LOCKED = -844;
|
||||
|
||||
/**
|
||||
* NDS Replica on the server that holds SecretStore is out of sync with the replica ring.
|
||||
*
|
||||
* @since 3.2
|
||||
*/
|
||||
public const int NSSCS_E_TIME_OUT_OF_SYNC = -845;
|
||||
|
||||
/**
|
||||
* Versions of the client dlls don't match.
|
||||
*
|
||||
* @since 3.2
|
||||
*/
|
||||
public const int NSSCS_E_VERSION_MISMATCH = -846;
|
||||
|
||||
/**
|
||||
* Buffer supplied for the secret is too short.
|
||||
*
|
||||
* @since 3.2
|
||||
*/
|
||||
public const int NSSCS_E_SECRET_BUFF_TOO_SHORT = -847;
|
||||
|
||||
/**
|
||||
* Shared Secret processing and operations failed.
|
||||
*
|
||||
* @since 3.2
|
||||
*/
|
||||
public const int NSSCS_E_SH_SECRET_FAILURE = -848;
|
||||
|
||||
/**
|
||||
* Shared Secret parser operations failed.
|
||||
*
|
||||
* @since 3.2
|
||||
*/
|
||||
public const int NSSCS_E_PARSER_FAILURE = -849;
|
||||
|
||||
/**
|
||||
* Utf8 string operations failed.
|
||||
*
|
||||
* @since 3.2
|
||||
*/
|
||||
public const int NSSCS_E_UTF8_OP_FAILURE = -850;
|
||||
|
||||
/**
|
||||
* Contextless name for LDAP bind does not resolve to a unique DN.
|
||||
*
|
||||
* @since 3.2
|
||||
*/
|
||||
public const int NSSCS_E_CTX_LESS_CN_NOT_UNIQUE = -851;
|
||||
|
||||
/**
|
||||
* Feature not implemented yet.
|
||||
*/
|
||||
public const int NSSCS_E_NOT_IMPLEMENTED = -888;
|
||||
|
||||
/**
|
||||
* Product's BETA life has expired! Official release copy should be purchased.
|
||||
*/
|
||||
public const int NSSCS_E_BETA_EXPIRED = -899;
|
||||
|
||||
|
||||
public miCasaException()
|
||||
{
|
||||
//
|
||||
// TODO: Add constructor logic here
|
||||
//
|
||||
}
|
||||
|
||||
public miCasaException(int iException)
|
||||
{
|
||||
m_iException = iException;
|
||||
}
|
||||
|
||||
public string getMessage()
|
||||
{
|
||||
return getMessage(m_iException);
|
||||
}
|
||||
|
||||
public int getErrorCode()
|
||||
{
|
||||
return m_iException;
|
||||
}
|
||||
|
||||
public string getMessage(int iException)
|
||||
{
|
||||
switch (iException)
|
||||
{
|
||||
case NSSCS_E_OBJECT_NOT_FOUND:
|
||||
return "Can't find the target object DN in NDS";
|
||||
|
||||
case NSSCS_E_NICI_FAILURE:
|
||||
return "NICI operations have failed";
|
||||
|
||||
case NSSCS_E_INVALID_SECRET_ID:
|
||||
return "Secret ID is not in the User Secret Store";
|
||||
|
||||
case NSSCS_E_SYSTEM_FAILURE:
|
||||
return "Some internal operating system services have not been available";
|
||||
|
||||
case NSSCS_E_ACCESS_DENIED:
|
||||
return "Access to the target SecretStore has been denied";
|
||||
|
||||
case NSSCS_E_NDS_INTERNAL_FAILURE:
|
||||
return "Some internal NDS services have not been available";
|
||||
|
||||
case NSSCS_E_SECRET_UNINITIALIZED:
|
||||
return "Secret has not been initialized with a write";
|
||||
|
||||
case NSSCS_E_BUFFER_LEN:
|
||||
return "Size of the buffer is not in a nominal range between minimum and maximum";
|
||||
|
||||
case NSSCS_E_INCOMPATIBLE_VERSION:
|
||||
return "Client and server components are not of the compatible versions";
|
||||
|
||||
case NSSCS_E_CORRUPTED_STORE:
|
||||
return "SecretStore data on the server has been corrupted";
|
||||
|
||||
case NSSCS_E_SECRET_ID_EXISTS:
|
||||
return "Secret ID is already in SecretStore";
|
||||
|
||||
case NSSCS_E_NDS_PWORD_CHANGED:
|
||||
return "User NDS password has been changed by the administrator";
|
||||
|
||||
case NSSCS_E_INVALID_TARGET_OBJECT:
|
||||
return "Target NDS User object not found";
|
||||
|
||||
case NSSCS_E_STORE_NOT_FOUND:
|
||||
return "Target NDS User object does not have a SecretStore";
|
||||
|
||||
case NSSCS_E_SERVICE_NOT_FOUND:
|
||||
return "SecretStore not on the Network";
|
||||
|
||||
case NSSCS_E_SECRET_ID_TOO_LONG:
|
||||
return "Length of the Secret ID buffer exceeds the limit";
|
||||
|
||||
case NSSCS_E_ENUM_BUFF_TOO_SHORT:
|
||||
return "Length of the Enumeration buffer too short";
|
||||
|
||||
case NSSCS_E_NOT_AUTHENTICATED:
|
||||
return "User not authenticated";
|
||||
|
||||
case NSSCS_E_NOT_SUPPORTED:
|
||||
return "Not supported operations";
|
||||
|
||||
case NSSCS_E_NDS_PWORD_INVALID:
|
||||
return "Typed in NDS password not valid";
|
||||
|
||||
case NSSCS_E_NICI_OUTOF_SYNC:
|
||||
return "Session keys of the client and server NICI are out of sync";
|
||||
|
||||
case NSSCS_E_SERVICE_NOT_SUPPORTED:
|
||||
return "Requested service not supported yet";
|
||||
|
||||
case NSSCS_E_TOKEN_NOT_SUPPORTED:
|
||||
return "NDS authentication type not supported";
|
||||
|
||||
case NSSCS_E_UNICODE_OP_FAILURE:
|
||||
return "Unicode text conversion operation failed";
|
||||
|
||||
case NSSCS_E_TRANSPORT_FAILURE:
|
||||
return "Connection to server is lost";
|
||||
|
||||
case NSSCS_E_CRYPTO_OP_FAILURE:
|
||||
return "Cryptographic operation failed";
|
||||
|
||||
case NSSCS_E_SERVER_CONN_FAILURE:
|
||||
return "Opening a connection to the server failed";
|
||||
|
||||
case NSSCS_E_CONN_ACCESS_FAILURE:
|
||||
return "Access to server connection failed";
|
||||
|
||||
case NSSCS_E_ENUM_BUFF_TOO_LONG:
|
||||
return "Size of the enumeration buffer exceeds the limit";
|
||||
|
||||
case NSSCS_E_SECRET_BUFF_TOO_LONG:
|
||||
return "Size of the Secret buffer exceeds the limit";
|
||||
|
||||
case NSSCS_E_SECRET_ID_TOO_SHORT:
|
||||
return "Length of the Secret ID should be greater than zero";
|
||||
|
||||
case NSSCS_E_CORRUPTED_PACKET_DATA:
|
||||
return "Protocol data corrupted on the wire";
|
||||
|
||||
case NSSCS_E_EP_ACCESS_DENIED:
|
||||
return "EP password validation failed. Access to the secret denied";
|
||||
|
||||
case NSSCS_E_SCHEMA_NOT_EXTENDED:
|
||||
return "Schema is not extended to support SecreStore on the target tree";
|
||||
|
||||
case NSSCS_E_ATTR_NOT_FOUND:
|
||||
return "One of the optional service attributes is not instantiated";
|
||||
|
||||
case NSSCS_E_MIGRATION_NEEDED:
|
||||
return "Server has been upgraded and user SecretStore should be updated";
|
||||
|
||||
case NSSCS_E_MP_PWORD_INVALID:
|
||||
return "Master password could not be verified to read or unlock the secrets";
|
||||
|
||||
case NSSCS_E_MP_PWORD_NOT_SET:
|
||||
return "Master password has not been set on the SecretStore";
|
||||
|
||||
case NSSCS_E_MP_PWORD_NOT_ALLOWED:
|
||||
return "Ability to use master password has been disabled";
|
||||
|
||||
case NSSCS_E_WRONG_REPLICA_TYPE:
|
||||
return "Not a writeable replica of NDS";
|
||||
|
||||
case NSSCS_E_ATTR_VAL_NOT_FOUND:
|
||||
return "Target attribute is not instantiated in NDS";
|
||||
|
||||
case NSSCS_E_INVALID_PARAM:
|
||||
return "API parameter is not initialized";
|
||||
|
||||
case NSSCS_E_NEED_SECURE_CHANNEL:
|
||||
return "Connection to SecretStore needs to be over SSL";
|
||||
|
||||
case NSSCS_E_CONFIG_NOT_SUPPORTED:
|
||||
return "No server to support the given override configuration is found";
|
||||
|
||||
case NSSCS_E_STORE_NOT_LOCKED:
|
||||
return "Attempt to unlock SecretStore failed because the store is not locked";
|
||||
|
||||
case NSSCS_E_TIME_OUT_OF_SYNC:
|
||||
return "NDS Replica on the server that holds SecretStore is out of sync with the replica ring";
|
||||
|
||||
case NSSCS_E_VERSION_MISMATCH:
|
||||
return "Versions of the client dlls don't match";
|
||||
|
||||
case NSSCS_E_SECRET_BUFF_TOO_SHORT:
|
||||
return "Buffer supplied for the secret is too short";
|
||||
|
||||
case NSSCS_E_SH_SECRET_FAILURE:
|
||||
return "Shared Secret processing and operations failed";
|
||||
|
||||
case NSSCS_E_PARSER_FAILURE:
|
||||
return "Shared Secret parser operations failed";
|
||||
|
||||
case NSSCS_E_UTF8_OP_FAILURE:
|
||||
return "Utf8 string operations failed";
|
||||
|
||||
case NSSCS_E_CTX_LESS_CN_NOT_UNIQUE:
|
||||
return "Contextless name for LDAP bind does not resolve to a unique DN";
|
||||
|
||||
case NSSCS_E_NOT_IMPLEMENTED:
|
||||
return "Feature not implemented yet";
|
||||
|
||||
case NSSCS_E_BETA_EXPIRED:
|
||||
return "Product's BETA life has expired! Official release copy should be purchased";
|
||||
}
|
||||
|
||||
return "";
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
10
sharp/NSSCSWrapper/objs.lux
Normal file
10
sharp/NSSCSWrapper/objs.lux
Normal file
@@ -0,0 +1,10 @@
|
||||
OBJS=\
|
||||
AssemblyInfo\
|
||||
miCasaException\
|
||||
BasicCredential\
|
||||
miCASA\
|
||||
AssemblyInfo\
|
||||
NativeCalls\
|
||||
Secret\
|
||||
SecretStore
|
||||
|
||||
9
sharp/NSSCSWrapper/objs.w32
Normal file
9
sharp/NSSCSWrapper/objs.w32
Normal file
@@ -0,0 +1,9 @@
|
||||
OBJS=\
|
||||
miCasaException\
|
||||
BasicCredential\
|
||||
miCASA\
|
||||
AssemblyInfo\
|
||||
NativeCalls\
|
||||
Secret\
|
||||
SecretStore
|
||||
|
||||
10
sharp/NSSCSWrapper/src.lux
Normal file
10
sharp/NSSCSWrapper/src.lux
Normal file
@@ -0,0 +1,10 @@
|
||||
SRC=\
|
||||
AssemblyInfo.cs\
|
||||
miCasaException.cs\
|
||||
BasicCredential.cs\
|
||||
miCASA.cs\
|
||||
AssemblyInfo.cs\
|
||||
NativeCalls.cs\
|
||||
Secret.cs\
|
||||
SecretStore.cs
|
||||
|
||||
9
sharp/NSSCSWrapper/src.w32
Normal file
9
sharp/NSSCSWrapper/src.w32
Normal file
@@ -0,0 +1,9 @@
|
||||
SRC=\
|
||||
miCasaException.cs\
|
||||
BasicCredential.cs\
|
||||
miCASA.cs\
|
||||
AssemblyInfo.cs\
|
||||
NativeCalls.cs\
|
||||
Secret.cs\
|
||||
SecretStore.cs
|
||||
|
||||
Reference in New Issue
Block a user