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

View File

View File

View File

@@ -0,0 +1,73 @@
<VisualStudioProject>
<CSHARP
ProjectType = "Local"
ProductVersion = "7.10.3077"
SchemaVersion = "2.0"
ProjectGuid = "{A25ED38C-7EC6-4587-8F3F-0312CA3714FF}"
>
<Build>
<Settings
ApplicationIcon = ""
AssemblyKeyContainerName = ""
AssemblyName = "ClientPasswordManager"
AssemblyOriginatorKeyFile = ""
DefaultClientScript = "JScript"
DefaultHTMLPageLayout = "Grid"
DefaultTargetSchema = "IE50"
DelaySign = "false"
OutputType = "Exe"
PreBuildEvent = ""
PostBuildEvent = ""
RootNamespace = "ClientPasswordManager"
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/>
</Build>
<Files>
<Include/>
</Files>
</CSHARP>
</VisualStudioProject>

View File

@@ -0,0 +1,48 @@
<VisualStudioProject>
<CSHARP LastOpenVersion = "7.10.3077" >
<Build>
<Settings ReferencePath = "" >
<Config
Name = "Debug"
EnableASPDebugging = "false"
EnableASPXDebugging = "false"
EnableUnmanagedDebugging = "false"
EnableSQLServerDebugging = "false"
RemoteDebugEnabled = "false"
RemoteDebugMachine = ""
StartAction = "Project"
StartArguments = ""
StartPage = ""
StartProgram = ""
StartURL = ""
StartWorkingDirectory = ""
StartWithIE = "false"
/>
<Config
Name = "Release"
EnableASPDebugging = "false"
EnableASPXDebugging = "false"
EnableUnmanagedDebugging = "false"
EnableSQLServerDebugging = "false"
RemoteDebugEnabled = "false"
RemoteDebugMachine = ""
StartAction = "Project"
StartArguments = ""
StartPage = ""
StartProgram = ""
StartURL = ""
StartWorkingDirectory = ""
StartWithIE = "false"
/>
</Settings>
</Build>
<OtherProjectSettings
CopyProjectDestinationFolder = ""
CopyProjectUncPath = ""
CopyProjectOption = "0"
ProjectView = "ProjectFiles"
ProjectTrust = "0"
/>
</CSHARP>
</VisualStudioProject>

View File

@@ -0,0 +1,66 @@
Microsoft Visual Studio Solution File, Format Version 8.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "c-sharp-net-credential", "c-sharp-net-credential\c-sharp-net-credential.csproj", "{D7D0F5D8-0F45-4DCA-818B-8E71168A2CA3}"
ProjectSection(ProjectDependencies) = postProject
{5A211C70-3AEB-4305-8CB6-42757D01DC22} = {5A211C70-3AEB-4305-8CB6-42757D01DC22}
{AFE3BA84-436C-4DD1-BA01-3B8C6B9D125C} = {AFE3BA84-436C-4DD1-BA01-3B8C6B9D125C}
{BBAD68F3-93C6-448F-8F79-F8CAEA3200C5} = {BBAD68F3-93C6-448F-8F79-F8CAEA3200C5}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "c-sharp-password-dialog", "c-sharp-password-dialog\c-sharp-password-dialog.csproj", "{5A211C70-3AEB-4305-8CB6-42757D01DC22}"
ProjectSection(ProjectDependencies) = postProject
{BBAD68F3-93C6-448F-8F79-F8CAEA3200C5} = {BBAD68F3-93C6-448F-8F79-F8CAEA3200C5}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "c-sharp-username-dialog", "c-sharp-username-dialog\c-sharp-username-dialog.csproj", "{AFE3BA84-436C-4DD1-BA01-3B8C6B9D125C}"
ProjectSection(ProjectDependencies) = postProject
{BBAD68F3-93C6-448F-8F79-F8CAEA3200C5} = {BBAD68F3-93C6-448F-8F79-F8CAEA3200C5}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "c-sharp-utilities", "c-sharp-utilities\c-sharp-utilities.csproj", "{BBAD68F3-93C6-448F-8F79-F8CAEA3200C5}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "clientpasswordmanager-msm", "package\windows\clientpasswordmanager-msm\clientpasswordmanager-msm.vdproj", "{673D662C-A6F2-4D38-A001-90BD03963CEB}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tester", "Tester\Tester.csproj", "{45A551B6-8919-411F-8711-D34B267E08F4}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfiguration) = preSolution
Debug = Debug
Release = Release
EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution
{D7D0F5D8-0F45-4DCA-818B-8E71168A2CA3}.Debug.ActiveCfg = Debug|.NET
{D7D0F5D8-0F45-4DCA-818B-8E71168A2CA3}.Debug.Build.0 = Debug|.NET
{D7D0F5D8-0F45-4DCA-818B-8E71168A2CA3}.Release.ActiveCfg = Release|.NET
{D7D0F5D8-0F45-4DCA-818B-8E71168A2CA3}.Release.Build.0 = Release|.NET
{5A211C70-3AEB-4305-8CB6-42757D01DC22}.Debug.ActiveCfg = Debug|.NET
{5A211C70-3AEB-4305-8CB6-42757D01DC22}.Debug.Build.0 = Debug|.NET
{5A211C70-3AEB-4305-8CB6-42757D01DC22}.Release.ActiveCfg = Release|.NET
{5A211C70-3AEB-4305-8CB6-42757D01DC22}.Release.Build.0 = Release|.NET
{AFE3BA84-436C-4DD1-BA01-3B8C6B9D125C}.Debug.ActiveCfg = Debug|.NET
{AFE3BA84-436C-4DD1-BA01-3B8C6B9D125C}.Debug.Build.0 = Debug|.NET
{AFE3BA84-436C-4DD1-BA01-3B8C6B9D125C}.Release.ActiveCfg = Release|.NET
{AFE3BA84-436C-4DD1-BA01-3B8C6B9D125C}.Release.Build.0 = Release|.NET
{BBAD68F3-93C6-448F-8F79-F8CAEA3200C5}.Debug.ActiveCfg = Debug|.NET
{BBAD68F3-93C6-448F-8F79-F8CAEA3200C5}.Debug.Build.0 = Debug|.NET
{BBAD68F3-93C6-448F-8F79-F8CAEA3200C5}.Release.ActiveCfg = Release|.NET
{BBAD68F3-93C6-448F-8F79-F8CAEA3200C5}.Release.Build.0 = Release|.NET
{673D662C-A6F2-4D38-A001-90BD03963CEB}.Debug.ActiveCfg = Debug
{673D662C-A6F2-4D38-A001-90BD03963CEB}.Debug.Build.0 = Debug
{673D662C-A6F2-4D38-A001-90BD03963CEB}.Release.ActiveCfg = Release
{673D662C-A6F2-4D38-A001-90BD03963CEB}.Release.Build.0 = Release
{45A551B6-8919-411F-8711-D34B267E08F4}.Debug.ActiveCfg = Debug|.NET
{45A551B6-8919-411F-8711-D34B267E08F4}.Debug.Build.0 = Debug|.NET
{45A551B6-8919-411F-8711-D34B267E08F4}.Release.ActiveCfg = Release|.NET
{45A551B6-8919-411F-8711-D34B267E08F4}.Release.Build.0 = Release|.NET
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection
EndGlobal

Binary file not shown.

View File

@@ -0,0 +1,50 @@
#######################################################################
#
# Copyright (C) 2004 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.
#
# Author: Juan Carlos Luciani <jluciani@novell.com>
#
#######################################################################
if DEBUG
TARGET_CFG = Debug
else
TARGET_CFG = Release
endif
SUBDIRS = c-sharp-utilities c-sharp-password-dialog c-sharp-username-dialog c-sharp-net-credential package
EXTRA_DIST =
.PHONY: package package-clean package-install package-uninstall
package package-clean package-install package-uninstall:
$(MAKE) -C package $@
installcheck-summary:
$(MAKE) -C src $@
clean-local:
rm -rf *.suo
maintainer-clean-local:
rm -f configure Makefile.in clientpasswordmanager-*.tar.gz
rm -f aclocal.m4 conf*.sh configure.lineno
rm -f config.guess config.sub config.status
rm -f ltmain.sh libtool
rm -f install-sh install-sh.lnk INSTALL INSTALL.lnk
rm -f missing missing.lnk mkinstalldirs mkinstalldir.lnk
rm -rf autom4te.cache

View File

View File

@@ -0,0 +1,193 @@
/***********************************************************************
* File: README
*
* Copyright (C) 2004 Novell, Inc.
*
* This library 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 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
***********************************************************************/
INTRODUCTION
The ClientPasswordManager provides a set of libraries to allow applications
to share user name and password credentials. The ClientPasswordManager also
provides dialog components that can be leveraged by applications to prompt
users for credentials.
The goal of the ClientPasswordManager is to minimize the number of prompts
that users experience when accessing applications that require the user's
name and password to authenticate to backend systems.
A secondary goal of the ClientPasswordManager is to normalize the prompts
for credentials that are seen by the user.
FEATURES
The ClientPasswordManager consists of APIs for obtaining/setting user password
credentials as well as a set of dialogs that can be used to prompt the user
for its credentials.
The ClientPasswordManager leverages the services of the SecretStore Client Wallet
Service for the secure storage of user credentials and for controlling access to
the credentials. Usage of the ClientPasswordManager instead of writting to the
SecretStore Wallet API directly free applications from having to agree on a
standard on how credentials need to be stored in the wallet.
The ClientPasswordManager will try to make its services available to native, .NET,
and Java applications.
CONTENTS
c-sharp-net-credential - This folder contains an implemtation of the .NET ICredentials
interface called the NetCredential class. NetCredential objects leverage the contents
of the wallet when queried for user credentials.
c-sharp-password-dialog - This folder contains a dialog class that can be used by .NET
applications to query the user for its password.
c-sharp-username-dialog - This folder contains a dialog class that can be used by .NET
applications to query the user for its user name.
c-sharp-utilities - This folder contains .NET utilities leveraged by ClientPAsswordManager
.NET components.
package - This folder contains the files necessary to build the software packages
under windows and under linux.
REQUIREMENTS FOR BUILDING THE SOFTWARE PACKAGE ON WINDOWS
- Install Visual Studio .NET 2003
- Install Cygwin - See instructions below.
Download and start cygwin install:
Browse to http://sources.redhat.com/cygwin/
Click on "Install or update now!" or "Install Cygwin now"
Cygwin Setup:
Next
Cygwin Setup - Choose Installation Type:
Install from Internet
Next
Cygwin Setup - Choose Installation Directory:
Root Directory: C:\cygwin
Install For: "All Users"
Default Text File Type: DOS
Cygwin Setup - Select Local Package Directory:
Local Package Directory: C:\cygwin-packages
Cygwin Setup - Select Connection Type:
Direct Connection
Choose A Download Site:
ftp://ftp.nas.nasa.gov
Cywin Setup - Select Packages:
Base:
defaults
Devel:
autoconf
automake
libtool
make
pkgconfig
cvs
gcc
gcc-g++
Editors:
vim (optional)
Net:
openssh
openssl
Text:
more
Utils:
clear (optional)
Cygwin Setup - Create Icons:
Finish
Edit cygwin.bat (c:\cygwin\cygwin.bat) to add a call to
%VS71COMNTOOLS%\vsvars32.bat (see example below). This sets up the
Visual Studio tools in Cygwin.
Sample cygwin.bat:
@echo off
call "%VS71COMNTOOLS%\vsvars32.bat" > NUL
C:
chdir C:\cygwin\bin
bash --login -i
REQUIREMENTS FOR BUILDING THE SOFTWARE PACKAGE ON LINUX
Install latest mono and mono-devel RPM - Obtain RPMs from
www.go-mono.org.
BUILDING THE SOFTWARE PACKAGE
Windows: Start at Step 1.
Linux: Skip to Step 2.
1. Run cygwin.bat to start up Cygwin.
2. Generate autotools files:
./autogen.sh --prefix=/<install_dir> [--enable-debug]
(<install_dir> is some writable directory where 'make install' will
install files for testing.
3. To reconfigure later, or to configure software that came from a source
distribution (.tar.gz) file, use configure.
./configure --prefix/<install_dir> [--enable-debug]
(run ./configure --help for more options)
4. Select your make target, here are a few interesting ones:
make [all] - build product files (package files not included)
make clean - clean up files built by 'make all'
make package - build product and package files
make package-clean - clean up package files
make install - install product files to <install_dir> specified by
--prefix during configure
make uninstall - undo 'make install'
make dist - build a source distribution tarball.
make distclean - removes files to return state back to same as the
source distribution (configure, Makefile.in files, and other distributed
autotools files are not removed)
make maintainer-clean - removes files to return state back to same as
the CVS checkout (you will need to run ./autogen.sh again before running
make again)

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,58 @@
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,85 @@
using System;
using System.Net;
using System.Reflection ;
using Novell.Security.ClientPasswordManager;
namespace Tester
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
// call NetCredential code
NetCredential nc = new NetCredential("Ifolder", "Network", true, "jnorman", "novell");
NetCredential nc2 = new NetCredential("Ifolder", null, false, "ifolderusername", "novell");
NetworkCredential nwc = nc2.GetCredential(new System.Uri("http://IFolder"), "Basic");
if (nwc != null)
{
Console.WriteLine("Username: "+ nwc.UserName);
Console.WriteLine("Password: "+ nwc.Password);
}
/*
// call SetCredential
Type type = assembly.GetType("Novell.CASA.miCASA");
MemberInfo[] members = type.GetMembers();
object Instance = Activator.CreateInstance (type);
object[] cargs = new object[4];
//cargs[0] = 0;
cargs[0] = "AppSecretIDTest";
cargs[1] = null; //"SharedSecretIDTEST";
//cargs[3] = 0;
cargs[2] = "Username";
cargs[3] = "password";
object result; // = type.InvokeMember ("SetCredential" ,BindingFlags.InvokeMethod ,null,Instance,cargs);
// call SetBasicCredential
try
{
type.InvokeMember("SetBasicCredential", BindingFlags.InvokeMethod, null, Instance, cargs);
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
// now get the basicCred back
try
{
object[] getArgs = new object[2];
getArgs[0] = "AppSecretIDTest";
getArgs[1] = null;
result = type.InvokeMember("GetCredentialUsername", BindingFlags.InvokeMethod, null, Instance, getArgs);
Console.WriteLine("Username: "+result.ToString());
result = type.InvokeMember("GetCredentialPassword", BindingFlags.InvokeMethod, null, Instance, getArgs);
Console.WriteLine("Password: "+result.ToString());
// invoke the GetUsername and GetPassword methods
//Type basicCred = assembly.GetType("Novell.CASA.miCASA.BasicCredential");
//object username = basicCred.InvokeMember("GetUsername", BindingFlags.InvokeMethod, null, result, null);
//object password = basicCred.InvokeMember("GetPassword", BindingFlags.InvokeMethod, null, result, null);
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
*/
}
}
}

View File

@@ -0,0 +1,109 @@
<VisualStudioProject>
<CSHARP
ProjectType = "Local"
ProductVersion = "7.10.3077"
SchemaVersion = "2.0"
ProjectGuid = "{45A551B6-8919-411F-8711-D34B267E08F4}"
>
<Build>
<Settings
ApplicationIcon = "App.ico"
AssemblyKeyContainerName = ""
AssemblyName = "Tester"
AssemblyOriginatorKeyFile = ""
DefaultClientScript = "JScript"
DefaultHTMLPageLayout = "Grid"
DefaultTargetSchema = "IE50"
DelaySign = "false"
OutputType = "Exe"
PreBuildEvent = ""
PostBuildEvent = ""
RootNamespace = "Tester"
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.Security.ClientPasswordManager.NetCredential"
AssemblyName = "Novell.Security.ClientPasswordManager.NetCredential"
HintPath = "..\c-sharp-net-credential\bin\Debug\Novell.Security.ClientPasswordManager.NetCredential.dll"
/>
</References>
</Build>
<Files>
<Include>
<File
RelPath = "App.ico"
BuildAction = "Content"
/>
<File
RelPath = "AssemblyInfo.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Class1.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\ClientPasswordManager\c-sharp-net-credential\bin\Debug\;D:\ccm\SSClient\SecretStoreClient_src\ClientPasswordManager\c-sharp-net-credential\bin\Debug\" >
<Config
Name = "Debug"
EnableASPDebugging = "false"
EnableASPXDebugging = "false"
EnableUnmanagedDebugging = "false"
EnableSQLServerDebugging = "false"
RemoteDebugEnabled = "false"
RemoteDebugMachine = ""
StartAction = "Project"
StartArguments = ""
StartPage = ""
StartProgram = ""
StartURL = ""
StartWorkingDirectory = ""
StartWithIE = "false"
/>
<Config
Name = "Release"
EnableASPDebugging = "false"
EnableASPXDebugging = "false"
EnableUnmanagedDebugging = "false"
EnableSQLServerDebugging = "false"
RemoteDebugEnabled = "false"
RemoteDebugMachine = ""
StartAction = "Project"
StartArguments = ""
StartPage = ""
StartProgram = ""
StartURL = ""
StartWorkingDirectory = ""
StartWithIE = "false"
/>
</Settings>
</Build>
<OtherProjectSettings
CopyProjectDestinationFolder = ""
CopyProjectUncPath = ""
CopyProjectOption = "0"
ProjectView = "ProjectFiles"
ProjectTrust = "0"
/>
</CSHARP>
</VisualStudioProject>

View File

@@ -0,0 +1,130 @@
#!/bin/sh
# Run this to generate all the initial makefiles, etc.
srcdir=`dirname $0`
test -z "$srcdir" && srcdir=.
ORIGDIR=`pwd`
cd $srcdir
PROJECT=ClientPasswordManager
TEST_TYPE=-f
FILE=c-sharp-net-credential/NetCredential.cs
DIE=0
(autoconf --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have autoconf installed to compile $PROJECT."
echo "Download the appropriate package for your distribution,"
echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
DIE=1
}
AUTOMAKE=automake-1.7
ACLOCAL=aclocal-1.7
($AUTOMAKE --version) < /dev/null > /dev/null 2>&1 || {
AUTOMAKE=automake
ACLOCAL=aclocal
}
($AUTOMAKE --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have automake installed to compile $PROJECT."
echo "Download the appropriate package for your distribution,"
echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
DIE=1
}
if test "$DIE" -eq 1; then
exit 1
fi
test $TEST_TYPE $FILE || {
echo "You must run this script in the top-level $PROJECT directory"
exit 1
}
if test -z "$*"; then
echo "I am going to run ./configure with no arguments - if you wish "
echo "to pass any to it, please specify them on the $0 command line."
fi
case $CC in
*xlc | *xlc\ * | *lcc | *lcc\ *) am_opt=--include-deps;;
esac
for coin in `find $srcdir -name configure.in -print`
do
dr=`dirname $coin`
if test -f $dr/NO-AUTO-GEN; then
echo skipping $dr -- flagged as no auto-gen
else
echo processing $dr
macrodirs=`sed -n -e 's,AM_ACLOCAL_INCLUDE(\(.*\)),\1,gp' < $coin`
( cd $dr
aclocalinclude="$ACLOCAL_FLAGS"
for k in $macrodirs; do
if test -d $k; then
aclocalinclude="$aclocalinclude -I $k"
##else
## echo "**Warning**: No such directory \`$k'. Ignored."
fi
done
if grep "^AM_GNU_GETTEXT" configure.in >/dev/null; then
if grep "sed.*POTFILES" configure.in >/dev/null; then
: do nothing -- we still have an old unmodified configure.in
else
echo "Creating $dr/aclocal.m4 ..."
test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
echo "Running gettextize... Ignore non-fatal messages."
echo "no" | gettextize --force --copy
echo "Making $dr/aclocal.m4 writable ..."
test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
fi
fi
if grep "^AM_GNOME_GETTEXT" configure.in >/dev/null; then
echo "Creating $dr/aclocal.m4 ..."
test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
echo "Running gettextize... Ignore non-fatal messages."
echo "no" | gettextize --force --copy
echo "Making $dr/aclocal.m4 writable ..."
test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
fi
if grep "^AM_GLIB_GNU_GETTEXT" configure.in >/dev/null; then
echo "Creating $dr/aclocal.m4 ..."
test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
echo "Running gettextize... Ignore non-fatal messages."
echo "no" | glib-gettextize --force --copy
echo "Making $dr/aclocal.m4 writable ..."
test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
fi
if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then
echo "Running libtoolize..."
libtoolize --force --copy
fi
echo "Running $ACLOCAL $aclocalinclude ..."
$ACLOCAL $aclocalinclude
if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then
echo "Running autoheader..."
autoheader
fi
echo "Running $AUTOMAKE --gnu $am_opt ..."
$AUTOMAKE --add-missing --gnu $am_opt
echo "Running autoconf ..."
autoconf
)
fi
done
conf_flags="--config-cache --enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c
cd "$ORIGDIR"
if test x$NOCONFIGURE = x; then
echo Running $srcdir/configure $conf_flags "$@" ...
$srcdir/configure $conf_flags "$@" \
&& echo Now type \`make\' to compile $PROJECT || exit 1
else
echo Skipping configure process.
fi

View File

@@ -0,0 +1,58 @@
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.Security.ClientPasswordManager NetCredential")]
[assembly: AssemblyDescription("Implements the NetCredential class for Novell.Security.ClientPasswordManager")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Novell, Inc.")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("Copyright (C) 2004 Novell, Inc.")]
[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("..\\..\\c-sharp-net-credential.snk")]
[assembly: AssemblyKeyName("")]

View File

@@ -0,0 +1,77 @@
#######################################################################
#
# Copyright (C) 2004 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.
#
# Author: Juan Carlos Luciani <jluciani@novell.com>
#
#######################################################################
if DEBUG
TARGET_CFG = Debug
else
TARGET_CFG = Release
endif
# handle Mono secondary dependencies
export MONO_PATH := $(MONO_PATH)
Module_CSFILES = $(srcdir)/NetCredential.cs
Module_CSFILES_CSC := $(subst /,$(SEP),$(Module_CSFILES))
Module_KEYFILE = $(srcdir)/c-sharp-net-credential.snk
Module_INCLUDES =
Module_RESOURCES =
Module_FLAGS = $(CSC_LIBFLAG)
Module_LIBS = System.dll System.Data.dll $(SYSTEM_XML) Novell.Security.ClientPasswordManager.PasswordDialog.dll Novell.Security.ClientPasswordManager.UsernameDialog.dll Novell.Security.Utilities.dll
Module_LIBPATH = ../c-sharp-password-dialog/bin/$(TARGET_CFG) ../c-sharp-username-dialog/bin/$(TARGET_CFG) ../c-sharp-utilities/bin/$(TARGET_CFG)
EXTRA_DIST = $(Module_CSFILES) $(Module_KEYFILE)
CUR_DIR := $(shell pwd)
all: Novell.Security.ClientPasswordManager.NetCredential.dll
Novell.Security.ClientPasswordManager.NetCredential.dll: $(Module_CSFILES) $(Module_RESOURCES)
$(mkinstalldirs) bin/$(TARGET_CFG)
if WINDOWS
$(CSC) /nowarn:1591,1573,1572 /out:bin/$(TARGET_CFG)/$@ $(CSCFLAGS) $(Module_FLAGS) $(Module_LIBS:%=/r:%) $(Module_LIBPATH:%=/lib:%) $(Module_CSFILES_CSC) /doc:Novell.Security.ClientPasswordManager.NetCredential.doc.xml
else
$(CSC) /nowarn:1591,1573,1572 /out:bin/$(TARGET_CFG)/$@ $(CSCFLAGS) $(Module_FLAGS) /keyfile:$(Module_KEYFILE) $(Module_LIBS:%=/r:%) $(Module_LIBPATH:%=/lib:%) $(Module_CSFILES_CSC) /doc:Novell.Security.ClientPasswordManager.NetCredential.doc.xml
endif
install-exec-local: Novell.Security.ClientPasswordManager.NetCredential.dll
$(mkinstalldirs) $(DESTDIR)$(libdir)
$(INSTALL_PROGRAM) bin/$(TARGET_CFG)/Novell.Security.ClientPasswordManager.NetCredential.dll $(DESTDIR)$(libdir)/
uninstall-local:
cd $(DESTDIR)$(libdir); rm -f Novell.Security.ClientPasswordManager.NetCredential.dll
rmdir $(DESTDIR)$(libdir)
#installcheck-local: install
# $(mkinstalldirs) $(DESTDIR)$(libdir)
# $(INSTALL_PROGRAM) $(DESTDIR)$(libdir)
# cd $(DESTDIR)$(libdir); $(MONO)
CLEAN_FILES = bin/$(TARGET_CFG)/Novell.Security.ClientPasswordManager.NetCredential.dll /doc:Novell.Security.ClientPasswordManager.NetCredential.doc.xml
clean-local:
rm -rf *.dbg *.exe *.dll $(CLEAN_FILES)
distclean-local:
maintainer-clean-local:
rm -f Makefile.in

View File

@@ -0,0 +1,471 @@
/***********************************************************************
* File: NetCredential.cs
* Author: Juan Carlos Luciani (jluciani@novell.com)
*
* Namespace: Novell.Security.ClientPasswordManager
*
* Classes implemented: NetCredential.
*
* Copyright (C) 2004 Novell, Inc.
*
* This library 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 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
***********************************************************************/
using System;
using System.Net;
using System.IO;
using System.Diagnostics;
using Novell.Security;
using System.Reflection;
namespace Novell.Security.ClientPasswordManager
{
/// <summary>
/// Provides an implementation of ICredentials that leverages the
/// services of the SecretStore Client Service Wallet.
/// </summary>
public class NetCredential: ICredentials
{
#region Class Members and Defines
// This is temporary until we add code to interact with the SecretStore
private class UserCache
{
public string m_userName;
public CredentialCache m_credentialCache;
public UserCache()
{
m_userName = null;
m_credentialCache = null;
}
}
// This is temporary until we add code to interact with the SecretStore
private static UserCache[] m_userCaches = new UserCache[10];
private string m_svcName = null;
private string m_svcGroupName = null;
private string m_userName = null;
private string m_password = null;
private string m_credScope = null;
private bool m_haveCredentials;
#endregion
private static bool bMiCasaIsAvailable = false;
private static Assembly assembly = null; //
private static string MI_CASA_CLASS_NAME = "Novell.CASA.miCASA";
static NetCredential()
{
try
{
assembly = Assembly.LoadWithPartialName("Novell.CASA.miCASAWrapper");
if (assembly != null)
bMiCasaIsAvailable = true;
}
catch (Exception e)
{
Dbg.trcError(e.ToString());
}
}
/// <summary>
/// Constructs a NetCredential object for Windows Applications.
///
/// There is a high probability that services under the same group share the
/// same user name and passwords. By specifying a service group name, the caller wants to
/// take advantage of this to try to improve the user experience. If the service group
/// name is not specified then no effort is made to share usernames and passwords with
/// other services.
///
/// If the svcGroupNameIsRealmName parameter is set to true then it is assumed that
/// the services in the group validate username and passwords against the same
/// database or against synchronized databases.
///
/// If the svcGroupNameIsRealmName parameter is set to false then an attempt will be
/// made to share passwords between the services in the group but services will be
/// allowed to use different passwords. Specifying a service group does not mean
/// that the system will not be able to obtain a username and password that is
/// unique to a particular service.
/// </summary>
/// <param name="svcName">Name of service requesting credentials.</param>
/// <param name="svcGroupName">Name of group to which the service belongs, can be null or zero length.</param>
/// <param name="svcGroupNameIsRealmName">The group name is the name of the backend authentication realm.</param>
/// <param name="userName">Name of the user.</param>
/// <param name="password">User password if known, otherwise null or empty string.</param>
public NetCredential(string svcName,
string svcGroupName,
bool svcGroupNameIsRealmName,
string userName,
string password)
{
// Check input parameters
if (svcName == null
|| svcName.Length == 0
|| (svcGroupNameIsRealmName
&& (svcGroupName == null
|| svcGroupName.Length == 0))
|| userName == null
|| userName.Length == 0)
{
Dbg.trcError("NetCredential constructor- Invalid input parameter");
throw new Exception("NetCredential constructor- Invalid input parameter");
}
m_svcName = svcName;
m_svcGroupName = svcGroupName;
m_userName = userName;
m_password = password;
// Determine the name under which the credentials are scoped
if (svcGroupNameIsRealmName)
m_credScope = m_svcGroupName;
else
m_credScope = m_svcName;
// Check if we need to update the credential cache
if (password != null
&& password.Length != 0)
{
if (bMiCasaIsAvailable)
{
UpdateMiCasaCredential(userName, password, m_svcName, svcGroupName);
}
else
{
UpdateCredentialCache(userName, password, m_credScope);
}
// Remember that there object has credentials associated with it to avoid
// looking them up in the cache at a later time.
m_haveCredentials = true;
}
else
{
// Indicate that we need to look up the credentials in the cache
m_haveCredentials = false;
}
}
/// <summary>
/// Constructs a NetCredential object.
///
/// No effort is made to share usernames and passwords with other services.
/// </summary>
/// <param name="svcName">Name of service requesting credentials.</param>
/// <param name="userName">Name of the user.</param>
/// <param name="password">User password if known, otherwise null or empty string. Not meaningfull if username is not specified.</param>
public NetCredential(string svcName,
string userName,
string password)
{
// Check input parameters
if (svcName == null
|| svcName.Length == 0
|| userName == null
|| userName.Length == 0)
{
Dbg.trcError("NetCredential constructor- Invalid input parameter");
throw new Exception("NetCredential constructor- Invalid input parameter");
}
m_svcName = svcName;
m_userName = userName;
m_password = password;
// The credentials are scoped to the service name
m_credScope = m_svcName;
// Check if we need to update the credential cache
if (password != null
&& password.Length != 0)
{
if (bMiCasaIsAvailable)
{
UpdateMiCasaCredential(userName, password, m_svcName, null);
}
else
{
UpdateCredentialCache(userName, password, m_credScope);
}
// Remember that there object has credentials associated with it to avoid
// looking them up in the cache at a later time.
m_haveCredentials = true;
}
else
{
// Indicate that we need to look up the credentials in the cache
m_haveCredentials = false;
}
}
/// <summary>
/// Removes a NetworkCredential instance from the cache.
/// </summary>
/// <param name="uriPrefix">A Uri that specifies the URI prefix of the resources that the credential is used for.</param>
/// <param name="authType">The authentication scheme used by the host named in <i>uriPrefix</i>. </param>
public void Remove(Uri uriPrefix,
String authType)
{
// Only process requests for the "Basic" authentication scheme
if (authType.ToUpper() == "BASIC")
{
if (bMiCasaIsAvailable)
{
RemoveMiCasaCredential(uriPrefix.ToString());
return;
}
// Check if we already have credentials
if (m_haveCredentials)
{
// Clear the credentials.
m_password = null;
m_haveCredentials = false;
}
//
// Lookup the credentials in the cache
//
// Synchronize access into the cache
lock (m_userCaches)
{
// Look for the user's cache
int i;
for (i = 0; i < m_userCaches.Length; i++)
{
// Check if the user cache has been instantiated
if (m_userCaches[i] != null)
{
if (m_userCaches[i].m_userName == m_userName)
{
// We found a cache for this user, remove the credentials.
m_userCaches[i].m_credentialCache.Remove(new Uri("http://" + m_credScope, true), "Basic");
break;
}
}
}
}
}
else
{
Dbg.trcError("NetCredential.GetCredential- Unsupported authentication scheme");
}
}
/// <summary>
/// Obtains the network credentials necessary to gain access to the resources associated
/// with the specified uri prefix.
/// </summary>
/// <param name="uriPrefix">Uri that specifies the URI prefix of resources that the credential grant access to</param>
/// <param name="authType">The authentication scheme used by the resource</param>
/// <returns>NetworkCredential object or null if not successful</returns>
public NetworkCredential GetCredential(Uri uriPrefix,
String authType)
{
NetworkCredential cred = null;
// Only process requests for the "Basic" authentication scheme
if (authType.ToUpper() == "BASIC")
{
if (bMiCasaIsAvailable)
{
return GetMiCasaCredential(m_svcName, m_svcGroupName);
}
// Check if we already have credentials
if (m_haveCredentials)
{
// Create NetworkCredential object with the credentials that we have.
cred = new NetworkCredential(m_userName, m_password);
}
else
{
//
// Lookup the credentials in the cache
//
// Synchronize access into the cache
lock (m_userCaches)
{
// Look for the user's cache
int i;
for (i = 0; i < m_userCaches.Length; i++)
{
// Check if the user cache has been instantiated
if (m_userCaches[i] != null)
{
if (m_userCaches[i].m_userName == m_userName)
{
// We found a cache for this user, check if we already have the
// necessary credentials.
cred = m_userCaches[i].m_credentialCache.GetCredential(new Uri("http://" + m_credScope, true), "Basic");
break;
}
}
}
}
}
}
else
{
Dbg.trcError("NetCredential.GetCredential- Unsuported authentication scheme");
}
return cred;
}
/// <summary>
/// Updates the credential cache with the supplied credentials.
/// </summary>
/// <param name="userName">Name of the user.</param>
/// <param name="password">User password.</param>
/// <param name="credScope">Credential scope.</param>
private void UpdateCredentialCache(string userName, string password, string credScope)
{
// Check if we already have a cache for the user
lock (m_userCaches)
{
int i;
for (i = 0; i < m_userCaches.Length; i++)
{
// Check if the user cache has been instantiated
if (m_userCaches[i] != null)
{
if (m_userCaches[i].m_userName == userName)
{
// A user cache has already been instantiated, check if
// we already have a cache entry.
if (m_userCaches[i].m_credentialCache.GetCredential(new Uri("http://" + credScope, true), "Basic") != null)
{
// We have a cache entry, remove it.
m_userCaches[i].m_credentialCache.Remove(new Uri("http://" + credScope, true), "Basic");
}
break;
}
}
else
{
// Instantiate user cache and use it
m_userCaches[i] = new UserCache();
// Setup user cache
m_userCaches[i].m_userName = userName;
m_userCaches[i].m_credentialCache = new CredentialCache();
break;
}
}
// Exit if we failed to obtain a user cache
if (i == m_userCaches.Length)
return;
// Create NetworkCredential object and add it to the credential cache
NetworkCredential cred = new NetworkCredential(userName, password);
m_userCaches[i].m_credentialCache.Add(new Uri("http://" + credScope, true), "Basic", cred);
}
}
// the following is micasa/secretstore code.
private void UpdateMiCasaCredential(string sUsername, string sPassword, string sSecretID, string sSharedID)
{
// call SetCredential through reflection
Type type = assembly.GetType(MI_CASA_CLASS_NAME);
object Instance = Activator.CreateInstance (type);
object[] arguments = new object[4];
arguments[0] = sSecretID;
arguments[1] = sSharedID;
arguments[2] = sUsername;
arguments[3] = sPassword;
object result;
try
{
result = type.InvokeMember("SetBasicCredential", BindingFlags.InvokeMethod, null, Instance, arguments);
}
catch (Exception e)
{
Dbg.trcError(e.ToString());
}
}
private NetworkCredential GetMiCasaCredential(string sSecretID, string sSharedID)
{
object oUsername;
object oPassword;
Type type = assembly.GetType(MI_CASA_CLASS_NAME);
object Instance = Activator.CreateInstance (type);
try
{
object[] arguments = new object[2];
arguments[0] = sSecretID;
arguments[1] = sSharedID;
// reflection call
oUsername = type.InvokeMember("GetCredentialUsername", BindingFlags.InvokeMethod, null, Instance, arguments);
oPassword = type.InvokeMember("GetCredentialPassword", BindingFlags.InvokeMethod, null, Instance, arguments);
if ((oUsername != null) & (oPassword != null))
return new NetworkCredential(oUsername.ToString().Trim(), oPassword.ToString().Trim());
// invoke the GetUsername and GetPassword methods
//object username = basicCred.InvokeMember("GetUsername", BindingFlags.InvokeMethod, null, result, null);
//object password = basicCred.InvokeMember("GetPassword", BindingFlags.InvokeMethod, null, result, null);
}
catch (Exception e)
{
Dbg.trcError(e.ToString());
}
return null;
}
private void RemoveMiCasaCredential(string sSecretID)
{
Type type = assembly.GetType(MI_CASA_CLASS_NAME);
object Instance = Activator.CreateInstance (type);
try
{
object[] arguments = new object[2];
arguments[0] = sSecretID;
arguments[1] = null;
// reflection call
type.InvokeMember("RemoveBasicCredential", BindingFlags.InvokeMethod, null, Instance, arguments);
}
catch (Exception e)
{
Dbg.trcError(e.ToString());
}
}
}
}

View File

@@ -0,0 +1,34 @@
/***********************************************************************
* File: README
*
* Copyright (C) 2004 Novell, Inc.
*
* This library 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 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
***********************************************************************/
INTRODUCTION
The c-sharp-net-credential component provides the class NetCredential
which is an implementation of the ICredentials interface. Applications
can use objects of this class to satisfy credential queries from classes
such as the WebRequest class..
FEATURES
The c-sharp-net-credential class allows the user to set or retrieve
password credentials from the credential cache provided by the SecretStore
Client Service Wallet. The application can control how credentials are scoped
in the credential store through the parameters utilized to instantiate
NetCredential objects.

View File

@@ -0,0 +1,114 @@
<VisualStudioProject>
<CSHARP
ProjectType = "Local"
ProductVersion = "7.10.3077"
SchemaVersion = "2.0"
ProjectGuid = "{D7D0F5D8-0F45-4DCA-818B-8E71168A2CA3}"
>
<Build>
<Settings
ApplicationIcon = ""
AssemblyKeyContainerName = ""
AssemblyName = "Novell.Security.ClientPasswordManager.NetCredential"
AssemblyOriginatorKeyFile = ""
DefaultClientScript = "JScript"
DefaultHTMLPageLayout = "Grid"
DefaultTargetSchema = "IE50"
DelaySign = "false"
OutputType = "Library"
PreBuildEvent = ""
PostBuildEvent = ""
RootNamespace = "Novell.Security.ClientPasswordManager"
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 = "..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.1.4322\System.dll"
/>
<Reference
Name = "System.Data"
AssemblyName = "System.Data"
HintPath = "..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
/>
<Reference
Name = "System.XML"
AssemblyName = "System.Xml"
HintPath = "..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
/>
<Reference
Name = "System.Windows.Forms"
AssemblyName = "System.Windows.Forms"
HintPath = "..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.1.4322\System.Windows.Forms.dll"
/>
<Reference
Name = "Novell.Security.Utilities"
AssemblyName = "Novell.Security.Utilities"
HintPath = "..\c-sharp-utilities\bin\Debug\Novell.Security.Utilities.dll"
/>
</References>
</Build>
<Files>
<Include>
<File
RelPath = "AssemblyInfo.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "c-sharp-net-credential.snk"
BuildAction = "None"
/>
<File
RelPath = "NetCredential.cs"
SubType = "Code"
BuildAction = "Compile"
/>
</Include>
</Files>
</CSHARP>
</VisualStudioProject>

View File

@@ -0,0 +1,48 @@
<VisualStudioProject>
<CSHARP LastOpenVersion = "7.10.3077" >
<Build>
<Settings ReferencePath = "C:\Documents and Settings\jluciani\My Documents\Visual Studio Projects\ClientPasswordManager\c-sharp-utilities\bin\Debug\;C:\Documents and Settings\jluciani\My Documents\Visual Studio Projects\ClientPasswordManager\c-sharp-username-dialog\bin\Debug\;C:\Documents and Settings\jluciani\My Documents\Visual Studio Projects\ClientPasswordManager\c-sharp-password-dialog\bin\Debug\;C:\Documents and Settings\jluciani\My Documents\Visual Studio Projects\ClientPasswordManager\c-sharp-utilities\bin\Release\;D:\ccm\SSClient\ClientPasswordManager\c-sharp-utilities\bin\Debug\;D:\ccm\SSClient\SecretStoreClient_src\ClientPasswordManager\c-sharp-utilities\bin\Debug\;D:\ccm\SSClient\SecretStoreClient_src\ClientPasswordManager\c-sharp-utilities\obj\Release\" >
<Config
Name = "Debug"
EnableASPDebugging = "false"
EnableASPXDebugging = "false"
EnableUnmanagedDebugging = "false"
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 = "false"
/>
</Settings>
</Build>
<OtherProjectSettings
CopyProjectDestinationFolder = ""
CopyProjectUncPath = ""
CopyProjectOption = "0"
ProjectView = "ProjectFiles"
ProjectTrust = "0"
/>
</CSHARP>
</VisualStudioProject>

View File

@@ -0,0 +1,85 @@
#######################################################################
#
# Copyright (C) 2004 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.
#
# Author: Juan Carlos Luciani <jluciani@novell.com>
#
#######################################################################
if DEBUG
TARGET_CFG = Debug
else
TARGET_CFG = Release
endif
# handle Mono secondary dependencies
export MONO_PATH := $(MONO_PATH)
if WINDOWS
Module_CSFILES = $(srcdir)/passwordDialog.cs
Module_LIBS = System.dll System.Data.dll $(SYSTEM_XML) Novell.Security.Utilities.dll
Module_PKGS =
else
Module_CSFILES = $(srcdir)/passwordDialog-gtk.cs
Module_LIBS = System.dll System.Data.dll System.Drawing $(SYSTEM_XML) Novell.Security.Utilities.dll
Module_PKGS = -pkg:gtk-sharp
endif
Module_KEYFILE = $(srcdir)/c-sharp-password-dialog.snk
Module_CSFILES_CSC := $(subst /,$(SEP),$(Module_CSFILES))
Module_INCLUDES =
Module_RESOURCES =
Module_FLAGS = $(CSC_LIBFLAG)
Module_LIBPATH = ../c-sharp-utilities/bin/$(TARGET_CFG)
EXTRA_DIST = $(Module_CSFILES) $(Module_KEYFILE)
CUR_DIR := $(shell pwd)
all: Novell.Security.ClientPasswordManager.PasswordDialog.dll
Novell.Security.ClientPasswordManager.PasswordDialog.dll: $(Module_CSFILES) $(Module_RESOURCES)
$(mkinstalldirs) bin/$(TARGET_CFG)
if WINDOWS
$(CSC) /nowarn:1591,1573,1572 /out:bin/$(TARGET_CFG)/$@ $(CSCFLAGS) $(Module_FLAGS) $(Module_PKGS) $(Module_LIBS:%=/r:%) $(Module_LIBPATH:%=/lib:%) $(Module_CSFILES_CSC) /doc:Novell.Security.ClientPasswordManager.PasswordDialog.doc.xml
else
$(CSC) /nowarn:1591,1573,1572 /out:bin/$(TARGET_CFG)/$@ $(CSCFLAGS) $(Module_FLAGS) /keyfile:$(Module_KEYFILE) $(Module_PKGS) $(Module_LIBS:%=/r:%) $(Module_LIBPATH:%=/lib:%) $(Module_CSFILES_CSC) /doc:Novell.Security.ClientPasswordManager.PasswordDialog.doc.xml
endif
install-exec-local: Novell.Security.ClientPasswordManager.PasswordDialog.dll
$(mkinstalldirs) $(DESTDIR)$(libdir)
$(INSTALL_PROGRAM) bin/$(TARGET_CFG)/Novell.Security.ClientPasswordManager.PasswordDialog.dll $(DESTDIR)$(libdir)/
uninstall-local:
cd $(DESTDIR)$(libdir); rm -f Novell.Security.ClientPasswordManager.PasswordDialog.dll
rmdir $(DESTDIR)$(libdir)
#installcheck-local: install
# $(mkinstalldirs) $(DESTDIR)$(libdir)
# $(INSTALL_PROGRAM) $(DESTDIR)$(libdir)
# cd $(DESTDIR)$(libdir); $(MONO)
CLEAN_FILES = bin/$(TARGET_CFG)/Novell.Security.ClientPasswordManager.PasswordDialog.dll /doc:Novell.Security.ClientPasswordManager.PasswordDialog.doc.xml
clean-local:
rm -rf *.dbg *.exe *.dll $(CLEAN_FILES)
distclean-local:
maintainer-clean-local:
rm -f Makefile.in

View File

@@ -0,0 +1,28 @@
/***********************************************************************
* File: README
*
* Copyright (C) 2004 Novell, Inc.
*
* This library 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 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
***********************************************************************/
INTRODUCTION
The c-sharp-password-dialog provides a class (PasswordDialog) that can be used
by .NET applications to query users for their password.
FEATURES
The PasswordDialog Class utilizes Windows Forms under Win32 and GTK# under Linux.

View File

@@ -0,0 +1,119 @@
<VisualStudioProject>
<CSHARP
ProjectType = "Local"
ProductVersion = "7.10.3077"
SchemaVersion = "2.0"
ProjectGuid = "{5A211C70-3AEB-4305-8CB6-42757D01DC22}"
>
<Build>
<Settings
ApplicationIcon = ""
AssemblyKeyContainerName = ""
AssemblyName = "Novell.Security.ClientPasswordManager.PasswordDialog"
AssemblyOriginatorKeyFile = ""
DefaultClientScript = "JScript"
DefaultHTMLPageLayout = "Grid"
DefaultTargetSchema = "IE50"
DelaySign = "false"
OutputType = "Library"
PreBuildEvent = ""
PostBuildEvent = ""
RootNamespace = "Novell.Security.ClientPasswordManager"
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 = "..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.1.4322\System.dll"
/>
<Reference
Name = "System.Data"
AssemblyName = "System.Data"
HintPath = "..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
/>
<Reference
Name = "System.XML"
AssemblyName = "System.Xml"
HintPath = "..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
/>
<Reference
Name = "System.Drawing"
AssemblyName = "System.Drawing"
HintPath = "..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.1.4322\System.Drawing.dll"
/>
<Reference
Name = "System.Windows.Forms"
AssemblyName = "System.Windows.Forms"
HintPath = "..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.1.4322\System.Windows.Forms.dll"
/>
</References>
</Build>
<Files>
<Include>
<File
RelPath = "AssemblyInfo.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "c-sharp-password-dialog.snk"
BuildAction = "None"
/>
<File
RelPath = "passwordDialog.cs"
SubType = "Form"
BuildAction = "Compile"
/>
<File
RelPath = "passwordDialog.resx"
DependentUpon = "passwordDialog.cs"
BuildAction = "EmbeddedResource"
/>
</Include>
</Files>
</CSHARP>
</VisualStudioProject>

View File

@@ -0,0 +1,48 @@
<VisualStudioProject>
<CSHARP LastOpenVersion = "7.10.3077" >
<Build>
<Settings ReferencePath = "" >
<Config
Name = "Debug"
EnableASPDebugging = "false"
EnableASPXDebugging = "false"
EnableUnmanagedDebugging = "false"
EnableSQLServerDebugging = "false"
RemoteDebugEnabled = "false"
RemoteDebugMachine = ""
StartAction = "Project"
StartArguments = ""
StartPage = ""
StartProgram = ""
StartURL = ""
StartWorkingDirectory = ""
StartWithIE = "false"
/>
<Config
Name = "Release"
EnableASPDebugging = "false"
EnableASPXDebugging = "false"
EnableUnmanagedDebugging = "false"
EnableSQLServerDebugging = "false"
RemoteDebugEnabled = "false"
RemoteDebugMachine = ""
StartAction = "Project"
StartArguments = ""
StartPage = ""
StartProgram = ""
StartURL = ""
StartWorkingDirectory = ""
StartWithIE = "false"
/>
</Settings>
</Build>
<OtherProjectSettings
CopyProjectDestinationFolder = ""
CopyProjectUncPath = ""
CopyProjectOption = "0"
ProjectView = "ProjectFiles"
ProjectTrust = "0"
/>
</CSHARP>
</VisualStudioProject>

View File

@@ -0,0 +1,183 @@
/***********************************************************************
* File: passwordDialog-gtk.cs
* Author: Juan Carlos Luciani (jluciani@novell.com)
*
* Namespace: Novell.Security.ClientPasswordManager
*
* Classes implemented: PasswordDialog.
*
* Copyright (C) 2004 Novell, Inc.
*
* This library 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 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
***********************************************************************/
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Text.RegularExpressions;
using Gtk;
namespace Novell.Security.ClientPasswordManager
{
/// <summary>
/// Class implements user name dialog leveraging Gtk#.
/// </summary>
sealed public class passwordDialog : Dialog
{
#region Class Members and Defines
private Entry m_passwordEntry;
private Button m_okButton;
private Button m_cancelButton;
// The following strings need to be localized
private static string m_passwordLabelText = "Password:";
#endregion
/// <summary>
/// Constructor.
/// </summary>
/// <param name="title">Title to use for the dialog.</param>
public passwordDialog(string title) : base()
{
this.Title = title;
this.HasSeparator = false;
this.Resizable = false;
this.Modal = true;
HBox h = new HBox();
h.BorderWidth = 12;
h.Spacing = 6;
Label l = new Label(m_passwordLabelText);
l.Xalign = 0;
h.PackStart(l, false, false, 0);
m_passwordEntry = new Entry();
m_passwordEntry.ActivatesDefault = true;
m_passwordEntry.Visibility = false;
h.PackStart(m_passwordEntry, true, true, 0);
h.ShowAll();
this.VBox.Add(h);
m_okButton = new Button(Stock.Ok);
m_okButton.CanDefault = true;
this.AddActionWidget(m_okButton, ResponseType.Ok);
m_cancelButton = new Button(Stock.Cancel);
this.AddActionWidget(m_cancelButton, ResponseType.Cancel);
this.DefaultResponse = ResponseType.Ok;
this.ShowAll();
}
/// <summary>
/// Shows the dialog and gathers the user input.
/// </summary>
/// <param name="parent">Window owner.</param>
/// <returns>True if the user input was gathered, else false.</returns>
public bool Invoke(Window parent)
{
// Set focus on the entry widget, display the dialog, and
// hide it once it is answered.
this.Focus = m_passwordEntry;
this.TransientFor = parent;
ResponseType resp = (ResponseType) this.Run();
this.Hide();
// Proceed based on the dialog response value
if (resp == ResponseType.Ok)
{
// The user provided the necessary input
return true;
}
else
{
// The user either hit the cancel button or closed
// the window.
return false;
}
}
/// <summary>
/// Gets the password entered by the user.
/// </summary>
/// <returns>NetworkCredential object or null if not successful</returns>
public System.String password { get {return m_passwordEntry.Text;}}
}
/// <summary>
/// Class wrapper around the passwordDialog class. This wrapper is utilized
/// to hide the use of Gtk# from its users.
/// </summary>
public class PasswordDialog
{
#region Class Members and Defines
passwordDialog m_dialog;
// The following strings need to be localized
private static string m_titleStartText = "Login to ";
private static string m_titleRealmText = ", Realm: ";
#endregion
/// <summary>
/// Constructor.
/// </summary>
/// <param name="svcName">Name of service on whose behalf we are acquiring password.</param>
public PasswordDialog(string svcName)
{
// Instantiate the dialog with the appropriate title
m_dialog = new passwordDialog(m_titleStartText + svcName);
}
/// <summary>
/// Constructor.
/// </summary>
/// <param name="svcName">Name of service on whose behalf we are acquiring password.</param>
/// <param name="realm">Name of realm to which the service belongs, can be empty string or null.</param>
public PasswordDialog(string svcName, string realm)
{
// Instantiate the dialog with the appropriate title
if (realm != null && realm.Length != 0)
{
m_dialog = new passwordDialog(m_titleStartText + svcName + m_titleRealmText + realm);
}
else
{
m_dialog = new passwordDialog(m_titleStartText + svcName);
}
}
/// <summary>
/// Shows the dialog and gathers the user input.
/// </summary>
/// <param name="o">Window owner.</param>
/// <returns>True if the user input was gathered, else false.</returns>
public bool Invoke(System.Object o)
{
return m_dialog.Invoke((Window) o);
}
/// <summary>
/// Gets the password entered by the user.
/// </summary>
public System.String password { get {return m_dialog.password;}}
}
}

View File

@@ -0,0 +1,266 @@
/***********************************************************************
* File: passwordDialog.cs
* Author: Juan Carlos Luciani (jluciani@novell.com)
*
* Namespace: Novell.Security.ClientPasswordManager
*
* Classes implemented: PasswordDialog.
*
* Copyright (C) 2004 Novell, Inc.
*
* This library 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 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
***********************************************************************/
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace Novell.Security.ClientPasswordManager
{
/// <summary>
/// Provides a dialog for the acquisition of passwords.
/// </summary>
public class passwordDialog : System.Windows.Forms.Form
{
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox passwordField;
private System.Windows.Forms.Button okBtn;
private System.Windows.Forms.Button cancelBtn;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
/// <summary>
/// Constructor.
/// </summary>
/// <param name="title">Title to used with dialog.</param>
public passwordDialog(string title)
{
// Required for Windows Form Designer support
InitializeComponent();
// Update the form title
Text = title;
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.passwordField = new System.Windows.Forms.TextBox();
this.okBtn = new System.Windows.Forms.Button();
this.cancelBtn = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// label1
//
this.label1.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.label1.Location = new System.Drawing.Point(16, 24);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(56, 16);
this.label1.TabIndex = 0;
this.label1.Text = "Password:";
//
// passwordField
//
this.passwordField.AcceptsReturn = true;
this.passwordField.Location = new System.Drawing.Point(96, 24);
this.passwordField.MaxLength = 64;
this.passwordField.Name = "passwordField";
this.passwordField.PasswordChar = '*';
this.passwordField.Size = new System.Drawing.Size(224, 20);
this.passwordField.TabIndex = 5;
this.passwordField.Text = "";
//
// okBtn
//
this.okBtn.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.okBtn.Location = new System.Drawing.Point(152, 64);
this.okBtn.Name = "okBtn";
this.okBtn.TabIndex = 7;
this.okBtn.Text = "Ok";
this.okBtn.Click += new System.EventHandler(this.okBtn_Click);
//
// cancelBtn
//
this.cancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cancelBtn.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.cancelBtn.Location = new System.Drawing.Point(240, 64);
this.cancelBtn.Name = "cancelBtn";
this.cancelBtn.TabIndex = 8;
this.cancelBtn.Text = "Cancel";
//
// passwordDialog
//
this.AcceptButton = this.okBtn;
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.CancelButton = this.cancelBtn;
this.ClientSize = new System.Drawing.Size(338, 96);
this.Controls.Add(this.cancelBtn);
this.Controls.Add(this.okBtn);
this.Controls.Add(this.passwordField);
this.Controls.Add(this.label1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "passwordDialog";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Load += new System.EventHandler(this.passwordDialog_Load);
this.Activated += new System.EventHandler(this.passwordDialog_Activated);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// Handler for form activation event.
/// </summary>
private void passwordDialog_Activated(object sender, System.EventArgs e)
{
passwordField.Focus();
}
/// <summary>
/// Handler for Ok button click event.
/// </summary>
private void okBtn_Click(object sender, System.EventArgs e)
{
// Dispose of the dialog and set DialogResult to OK
DialogResult = DialogResult.OK;
Close();
}
private void passwordDialog_Load(object sender, System.EventArgs e)
{
}
/// <summary>
/// Returns the password entered by the user.
/// </summary>
public System.String password { get {return passwordField.Text;}}
}
/// <summary>
/// Class wrapper around the passwordDialog class. This wrapper is utilized
/// to hide the use of Gtk# from its users.
/// </summary>
public class PasswordDialog
{
#region Class Members and Defines
// The following strings need to be localized
private static string m_titleStartText = "Login to ";
private static string m_titleRealmText = ", Realm: ";
// Title that will be used with the dialog
private string m_dialogTitle;
// Input gathered from the user
private string m_password;
#endregion
/// <summary>
/// Constructor.
/// </summary>
/// <param name="svcName">Name of service on whose behalf we are acquiring password.</param>
public PasswordDialog(string svcName)
{
// Setup the title that will be used with the dialog
m_dialogTitle = m_titleStartText + svcName;
}
/// <summary>
/// Constructor.
/// </summary>
/// <param name="svcName">Name of service on whose behalf we are acquiring password.</param>
/// <param name="realm">Name of realm to which the service belongs, can be empty string or null.</param>
public PasswordDialog(string svcName, string realm)
{
// Setup the appropriate title that will be used with the dialog
if (realm != null && realm.Length != 0)
{
m_dialogTitle = m_titleStartText + svcName + m_titleRealmText + realm;
}
else
{
m_dialogTitle = m_titleStartText + svcName;
}
}
/// <summary>
/// Shows the dialog and gathers the user input.
/// </summary>
/// <param name="o">Window owner.</param>
/// <returns>True if the user input was gathered, else false.</returns>
public bool Invoke(System.Object o)
{
bool retVal;
// Instantiate and show passwordDialog
passwordDialog dialog = new passwordDialog(m_dialogTitle);
if (dialog.ShowDialog((IWin32Window) o) == DialogResult.OK)
{
// Save the password entered
m_password = dialog.password;
// Indicate success
retVal = true;
}
else
{
// The user either hit the cancel button or closed
// the window.
retVal = false;
}
// Dispose of the dialog
dialog.Dispose();
return retVal;
}
/// <summary>
/// Gets the password entered by the user.
/// </summary>
public System.String password { get {return m_password;}}
}
}

View File

@@ -0,0 +1,166 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used forserialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="label1.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="label1.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="label1.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="passwordField.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="passwordField.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="passwordField.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="okBtn.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="okBtn.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="okBtn.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="cancelBtn.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="cancelBtn.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="cancelBtn.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="$this.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.Localizable" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>8, 8</value>
</data>
<data name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>(Default)</value>
</data>
<data name="$this.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.Name">
<value>passwordDialog</value>
</data>
<data name="$this.TrayHeight" type="System.Int32, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>80</value>
</data>
<data name="$this.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
</root>

View File

@@ -0,0 +1,58 @@
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.Security.ClientPasswordManager ")]
[assembly: AssemblyDescription("Implements the usernameDialog class for Novell.Security.ClientPasswordManager")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Novell, Inc.")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("Copyright (C) 2004 Novell, Inc.")]
[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("..\\..\\c-sharp-username-dialog.snk")]
[assembly: AssemblyKeyName("")]

View File

@@ -0,0 +1,85 @@
#######################################################################
#
# Copyright (C) 2004 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.
#
# Author: Juan Carlos Luciani <jluciani@novell.com>
#
#######################################################################
if DEBUG
TARGET_CFG = Debug
else
TARGET_CFG = Release
endif
# handle Mono secondary dependencies
export MONO_PATH := $(MONO_PATH)
if WINDOWS
Module_CSFILES = $(srcdir)/usernameDialog.cs
Module_LIBS = System.dll System.Data.dll $(SYSTEM_XML) Novell.Security.Utilities.dll
Module_PKGS =
else
Module_CSFILES = $(srcdir)/usernameDialog-gtk.cs
Module_LIBS = System.dll System.Data.dll System.Drawing $(SYSTEM_XML) Novell.Security.Utilities.dll
Module_PKGS = -pkg:gtk-sharp
endif
Module_KEYFILE = $(srcdir)/c-sharp-username-dialog.snk
Module_CSFILES_CSC := $(subst /,$(SEP),$(Module_CSFILES))
Module_INCLUDES =
Module_RESOURCES =
Module_FLAGS = $(CSC_LIBFLAG)
Module_LIBPATH = ../c-sharp-utilities/bin/$(TARGET_CFG)
EXTRA_DIST = $(Module_CSFILES) $(Module_KEYFILE)
CUR_DIR := $(shell pwd)
all: Novell.Security.ClientPasswordManager.UsernameDialog.dll
Novell.Security.ClientPasswordManager.UsernameDialog.dll: $(Module_CSFILES) $(Module_RESOURCES)
$(mkinstalldirs) bin/$(TARGET_CFG)
if WINDOWS
$(CSC) /nowarn:1591,1573,1572 /out:bin/$(TARGET_CFG)/$@ $(CSCFLAGS) $(Module_FLAGS) $(Module_PKGS) $(Module_LIBS:%=/r:%) $(Module_LIBPATH:%=/lib:%) $(Module_CSFILES_CSC) /doc:Novell.Security.ClientPasswordManager.UsernameDialog.doc.xml
else
$(CSC) /nowarn:1591,1573,1572 /out:bin/$(TARGET_CFG)/$@ $(CSCFLAGS) $(Module_FLAGS) /keyfile:$(Module_KEYFILE) $(Module_PKGS) $(Module_LIBS:%=/r:%) $(Module_LIBPATH:%=/lib:%) $(Module_CSFILES_CSC) /doc:Novell.Security.ClientPasswordManager.UsernameDialog.doc.xml
endif
install-exec-local: Novell.Security.ClientPasswordManager.UsernameDialog.dll
$(mkinstalldirs) $(DESTDIR)$(libdir)
$(INSTALL_PROGRAM) bin/$(TARGET_CFG)/Novell.Security.ClientPasswordManager.UsernameDialog.dll $(DESTDIR)$(libdir)/
uninstall-local:
cd $(DESTDIR)$(libdir); rm -f Novell.Security.ClientPasswordManager.UsernameDialog.dll
rmdir $(DESTDIR)$(libdir)
#installcheck-local: install
# $(mkinstalldirs) $(DESTDIR)$(libdir)
# $(INSTALL_PROGRAM) $(DESTDIR)$(libdir)
# cd $(DESTDIR)$(libdir); $(MONO)
CLEAN_FILES = bin/$(TARGET_CFG)/Novell.Security.ClientPasswordManager.UsernameDialog.dll /doc:Novell.Security.ClientPasswordManager.UsernameDialog.doc.xml
clean-local:
rm -rf *.dbg *.exe *.dll $(CLEAN_FILES)
distclean-local:
maintainer-clean-local:
rm -f Makefile.in

View File

@@ -0,0 +1,28 @@
/***********************************************************************
* File: README
*
* Copyright (C) 2004 Novell, Inc.
*
* This library 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 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
***********************************************************************/
INTRODUCTION
The c-sharp-username-dialog provides a class (UsernameDialog) that can be used
by .NET applications to query users for their user name.
FEATURES
The UsernameDialog Class utilizes Windows Forms under Win32 and GTK# under Linux.

View File

@@ -0,0 +1,119 @@
<VisualStudioProject>
<CSHARP
ProjectType = "Local"
ProductVersion = "7.10.3077"
SchemaVersion = "2.0"
ProjectGuid = "{AFE3BA84-436C-4DD1-BA01-3B8C6B9D125C}"
>
<Build>
<Settings
ApplicationIcon = ""
AssemblyKeyContainerName = ""
AssemblyName = "Novell.Security.ClientPasswordManager.UsernameDialog"
AssemblyOriginatorKeyFile = ""
DefaultClientScript = "JScript"
DefaultHTMLPageLayout = "Grid"
DefaultTargetSchema = "IE50"
DelaySign = "false"
OutputType = "Library"
PreBuildEvent = ""
PostBuildEvent = ""
RootNamespace = "Novell.Security.ClientPasswordManager"
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 = "..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.1.4322\System.dll"
/>
<Reference
Name = "System.Data"
AssemblyName = "System.Data"
HintPath = "..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
/>
<Reference
Name = "System.XML"
AssemblyName = "System.Xml"
HintPath = "..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
/>
<Reference
Name = "System.Drawing"
AssemblyName = "System.Drawing"
HintPath = "..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.1.4322\System.Drawing.dll"
/>
<Reference
Name = "System.Windows.Forms"
AssemblyName = "System.Windows.Forms"
HintPath = "..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.1.4322\System.Windows.Forms.dll"
/>
</References>
</Build>
<Files>
<Include>
<File
RelPath = "AssemblyInfo.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "c-sharp-username-dialog.snk"
BuildAction = "None"
/>
<File
RelPath = "usernameDialog.cs"
SubType = "Form"
BuildAction = "Compile"
/>
<File
RelPath = "usernameDialog.resx"
DependentUpon = "usernameDialog.cs"
BuildAction = "EmbeddedResource"
/>
</Include>
</Files>
</CSHARP>
</VisualStudioProject>

View File

@@ -0,0 +1,48 @@
<VisualStudioProject>
<CSHARP LastOpenVersion = "7.10.3077" >
<Build>
<Settings ReferencePath = "" >
<Config
Name = "Debug"
EnableASPDebugging = "false"
EnableASPXDebugging = "false"
EnableUnmanagedDebugging = "false"
EnableSQLServerDebugging = "false"
RemoteDebugEnabled = "false"
RemoteDebugMachine = ""
StartAction = "Project"
StartArguments = ""
StartPage = ""
StartProgram = ""
StartURL = ""
StartWorkingDirectory = ""
StartWithIE = "false"
/>
<Config
Name = "Release"
EnableASPDebugging = "false"
EnableASPXDebugging = "false"
EnableUnmanagedDebugging = "false"
EnableSQLServerDebugging = "false"
RemoteDebugEnabled = "false"
RemoteDebugMachine = ""
StartAction = "Project"
StartArguments = ""
StartPage = ""
StartProgram = ""
StartURL = ""
StartWorkingDirectory = ""
StartWithIE = "false"
/>
</Settings>
</Build>
<OtherProjectSettings
CopyProjectDestinationFolder = ""
CopyProjectUncPath = ""
CopyProjectOption = "0"
ProjectView = "ProjectFiles"
ProjectTrust = "0"
/>
</CSHARP>
</VisualStudioProject>

View File

@@ -0,0 +1,257 @@
/***********************************************************************
* File: usernameDialog-gtk.cs
* Author: Juan Carlos Luciani (jluciani@novell.com)
*
* Namespace: Novell.Security.ClientPasswordManager
*
* Classes implemented: UsernameDialog.
*
* Copyright (C) 2004 Novell, Inc.
*
* This library 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 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
***********************************************************************/
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Text.RegularExpressions;
using Gtk;
namespace Novell.Security.ClientPasswordManager
{
/// <summary>
/// Class implements user name dialog leveraging Gtk#.
/// </summary>
sealed public class usernameDialog : Dialog
{
#region Class Members and Defines
private Entry m_userNameEntry;
private Button m_okButton;
private Button m_cancelButton;
// The following strings need to be localized
private static string m_userNameLabelText = "User name:";
#endregion
/// <summary>
/// Class implements dialog to notify user that it needs to
/// input the user name.
/// </summary>
private class inputRequiredDialog: Dialog
{
#region Class Members and Defines
// The following strings need to be localized
private static string m_inputRequiredLabelText = "User name required";
#endregion
/// <summary>
/// Constructor.
/// </summary>
/// <param name="title">Title to be used with the dialog.</param>
public inputRequiredDialog(string title) : base()
{
this.Title = title;
this.HasSeparator = false;
this.Resizable = false;
this.Modal = true;
this.DefaultResponse = ResponseType.Ok;
HBox h = new HBox();
h.BorderWidth = 12;
h.Spacing = 6;
Gtk.Image i = new Gtk.Image();
i.SetFromStock(Stock.DialogError, IconSize.Dialog);
i.SetAlignment(0.5F, 0);
h.PackStart(i, false, false, 0);
Label l = new Label("<span weight=\"bold\" size=\"larger\">"
+ m_inputRequiredLabelText
+ "</span>");
l.LineWrap = true;
l.UseMarkup = true;
l.Selectable = false;
l.Xalign = 0;
l.Yalign = 0;
h.PackStart(l, false, false, 0);
h.ShowAll();
this.VBox.Add(h);
this.AddButton(Stock.Ok, ResponseType.Ok);
}
}
/// <summary>
/// Constructor.
/// </summary>
/// <param name="title">Title to use for the dialog.</param>
public usernameDialog(string title) : base()
{
this.Title = title;
this.HasSeparator = false;
this.Resizable = false;
this.Modal = true;
HBox h = new HBox();
h.BorderWidth = 12;
h.Spacing = 6;
Label l = new Label(m_userNameLabelText);
l.Xalign = 0;
h.PackStart(l, false, false, 0);
m_userNameEntry = new Entry();
m_userNameEntry.ActivatesDefault = true;
h.PackStart(m_userNameEntry, true, true, 0);
h.ShowAll();
this.VBox.Add(h);
m_okButton = new Button(Stock.Ok);
m_okButton.CanDefault = true;
this.AddActionWidget(m_okButton, ResponseType.Ok);
m_cancelButton = new Button(Stock.Cancel);
this.AddActionWidget(m_cancelButton, ResponseType.Cancel);
this.DefaultResponse = ResponseType.Ok;
this.ShowAll();
}
/// <summary>
/// Shows the dialog and gathers the user input.
/// </summary>
/// <param name="parent">Window owner.</param>
/// <returns>True if the user input was gathered, else false.</returns>
public bool Invoke(Window parent)
{
bool retVal;
while (true)
{
// Set focus on the entry widget, display the dialog, and
// hide it once it is answered.
this.Focus = m_userNameEntry;
this.TransientFor = parent;
ResponseType resp = (ResponseType) this.Run();
this.Hide();
// Proceed based on the dialog response value
if (resp == ResponseType.Ok)
{
// Verify that the user entered the desired information
if (m_userNameEntry.Text.Length != 0)
{
// The user name was entered, indicate success and
// get ready to exit.
retVal = true;
break;
}
else
{
// Inform the user that it must enter a name
inputRequiredDialog errorDialog = new inputRequiredDialog(Title);
errorDialog.Run();
errorDialog.Hide();
// Show the user name dialog again
continue;
}
}
else
{
// The user either hit the cancel button or closed
// the window.
retVal = false;
break;
}
}
return retVal;
}
/// <summary>
/// Gets the name entered by the user.
/// </summary>
/// <returns>NetworkCredential object or null if not successful</returns>
public System.String userName { get {return m_userNameEntry.Text;}}
}
/// <summary>
/// Class wrapper around the usernameDialog class. This wrapper is utilized
/// to hide the use of Gtk# from its users.
/// </summary>
public class UsernameDialog
{
#region Class Members and Defines
usernameDialog m_dialog;
// The following strings need to be localized
private static string m_titleStartText = "Login to ";
private static string m_titleRealmText = ", Realm: ";
#endregion
/// <summary>
/// Constructor.
/// </summary>
/// <param name="svcName">Name of service on whose behalf we are acquiring user name.</param>
public UsernameDialog(string svcName)
{
// Instantiate the dialog with the appropriate title
m_dialog = new usernameDialog(m_titleStartText + svcName);
}
/// <summary>
/// Constructor.
/// </summary>
/// <param name="svcName">Name of service on whose behalf we are acquiring user name.</param>
/// <param name="realm">Name of realm to which the service belongs, can be empty string or null.</param>
public UsernameDialog(string svcName, string realm)
{
// Instantiate the dialog with the appropriate title
if (realm != null && realm.Length != 0)
{
m_dialog = new usernameDialog(m_titleStartText + svcName + m_titleRealmText + realm);
}
else
{
m_dialog = new usernameDialog(m_titleStartText + svcName);
}
}
/// <summary>
/// Shows the dialog and gathers the user input.
/// </summary>
/// <param name="o">Window owner.</param>
/// <returns>True if the user input was gathered, else false.</returns>
public bool Invoke(System.Object o)
{
return m_dialog.Invoke((Window) o);
}
/// <summary>
/// Gets the name entered by the user.
/// </summary>
public System.String userName { get {return m_dialog.userName;}}
}
}

View File

@@ -0,0 +1,291 @@
/***********************************************************************
* File: usernameDialog.cs
* Author: Juan Carlos Luciani (jluciani@novell.com)
*
* Namespace: Novell.Security.ClientPasswordManager
*
* Classes implemented: UsernameDialog.
*
* Copyright (C) 2004 Novell, Inc.
*
* This library 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 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
***********************************************************************/
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace Novell.Security.ClientPasswordManager
{
/// <summary>
/// Provides a dialog for the acquisition of user names.
/// </summary>
sealed public class usernameDialog : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox usernameField;
private System.Windows.Forms.Button okBtn;
private System.Windows.Forms.Button cancelBtn;
private System.Windows.Forms.Label label1;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
/// <summary>
/// Constructor.
/// </summary>
/// <param name="title">Title to use with dialog.</param>
public usernameDialog(string title)
{
// Required for Windows Form Designer support
InitializeComponent();
// Update the form title
Text = title;
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.usernameField = new System.Windows.Forms.TextBox();
this.okBtn = new System.Windows.Forms.Button();
this.cancelBtn = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// usernameField
//
this.usernameField.AcceptsReturn = true;
this.usernameField.Location = new System.Drawing.Point(96, 24);
this.usernameField.MaxLength = 64;
this.usernameField.Name = "usernameField";
this.usernameField.Size = new System.Drawing.Size(224, 20);
this.usernameField.TabIndex = 5;
this.usernameField.Text = "";
//
// okBtn
//
this.okBtn.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.okBtn.Location = new System.Drawing.Point(152, 64);
this.okBtn.Name = "okBtn";
this.okBtn.TabIndex = 7;
this.okBtn.Text = "Ok";
this.okBtn.Click += new System.EventHandler(this.okBtn_Click);
//
// cancelBtn
//
this.cancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cancelBtn.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.cancelBtn.Location = new System.Drawing.Point(240, 64);
this.cancelBtn.Name = "cancelBtn";
this.cancelBtn.TabIndex = 8;
this.cancelBtn.Text = "Cancel";
//
// label1
//
this.label1.Location = new System.Drawing.Point(8, 24);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(72, 16);
this.label1.TabIndex = 9;
this.label1.Text = "User name:";
//
// usernameDialog
//
this.AcceptButton = this.okBtn;
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.CancelButton = this.cancelBtn;
this.ClientSize = new System.Drawing.Size(338, 96);
this.Controls.Add(this.label1);
this.Controls.Add(this.cancelBtn);
this.Controls.Add(this.okBtn);
this.Controls.Add(this.usernameField);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "usernameDialog";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Load += new System.EventHandler(this.usernameDialog_Load);
this.Activated += new System.EventHandler(this.usernameDialog_Activated);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// Handler for form activation event.
/// </summary>
private void usernameDialog_Activated(object sender, System.EventArgs e)
{
usernameField.Focus();
}
/// <summary>
/// Handler for Ok button click event.
/// </summary>
private void okBtn_Click(object sender, System.EventArgs e)
{
// Dispose of the dialog and set DialogResult to OK
DialogResult = DialogResult.OK;
Close();
}
private void usernameDialog_Load(object sender, System.EventArgs e)
{
}
/// <summary>
/// Returns the username entered by the user.
/// </summary>
public System.String userName { get {return usernameField.Text;}}
}
/// <summary>
/// Class wrapper around the usernameDialog class. This wrapper is utilized
/// to hide the use of Gtk# from its users.
/// </summary>
public class UsernameDialog
{
#region Class Members and Defines
// The following strings need to be localized
private static string m_titleStartText = "Login to ";
private static string m_titleRealmText = ", Realm: ";
private static string m_inputRequiredLabelText = "User name required";
// Title that will be used with the dialog
private string m_dialogTitle;
// Input gathered from the user
private string m_userName;
#endregion
/// <summary>
/// Constructor.
/// </summary>
/// <param name="svcName">Name of service on whose behalf we are acquiring user name.</param>
public UsernameDialog(string svcName)
{
// Setup the title that will be used with the dialog
m_dialogTitle = m_titleStartText + svcName;
}
/// <summary>
/// Constructor.
/// </summary>
/// <param name="svcName">Name of service on whose behalf we are acquiring user name.</param>
/// <param name="realm">Name of realm to which the service belongs, can be empty string or null.</param>
public UsernameDialog(string svcName, string realm)
{
// Setup the appropriate title that will be used with the dialog
if (realm != null && realm.Length != 0)
{
m_dialogTitle = m_titleStartText + svcName + m_titleRealmText + realm;
}
else
{
m_dialogTitle = m_titleStartText + svcName;
}
}
/// <summary>
/// Shows the dialog and gathers the user input.
/// </summary>
/// <param name="o">Window owner.</param>
/// <returns>True if the user input was gathered, else false.</returns>
public bool Invoke(System.Object o)
{
bool retVal;
while (true)
{
// Instantiate and show usernameDialog
usernameDialog dialog = new usernameDialog(m_dialogTitle);
if (dialog.ShowDialog((IWin32Window) o) == DialogResult.OK)
{
// Save the user name entered
m_userName = dialog.userName;
// Verify that the user entered the desired information
if (m_userName.Length != 0)
{
// The user name was entered, indicate success and
// get ready to exit.
retVal = true;
// Dispose of the dialog and exit the loop
dialog.Dispose();
break;
}
else
{
// Inform the user that it must enter a name
MessageBox.Show((IWin32Window) o,
m_inputRequiredLabelText,
"",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
// Dispose of the dialog and continue to prompt the user
dialog.Dispose();
continue;
}
}
else
{
// The user either hit the cancel button or closed
// the window.
retVal = false;
// Dispose of the dialog and exit the loop
dialog.Dispose();
break;
}
}
return retVal;
}
/// <summary>
/// Gets the name entered by the user.
/// </summary>
public System.String userName { get {return m_userName;}}
}
}

View File

@@ -0,0 +1,166 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used forserialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="usernameField.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="usernameField.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="usernameField.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="okBtn.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="okBtn.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="okBtn.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="cancelBtn.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="cancelBtn.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="cancelBtn.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="label1.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="label1.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="label1.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="$this.Name">
<value>usernameDialog</value>
</data>
<data name="$this.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>(Default)</value>
</data>
<data name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.Localizable" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>8, 8</value>
</data>
<data name="$this.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.TrayHeight" type="System.Int32, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>80</value>
</data>
<data name="$this.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
</root>

View File

@@ -0,0 +1,58 @@
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.Security Utilities")]
[assembly: AssemblyDescription("Implements the Dbg class for Novell.Security")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Novell, Inc.")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("Copyright (C) 2004 Novell, Inc.")]
[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("..\\..\\c-sharp-utilities.snk")]
[assembly: AssemblyKeyName("")]

View File

@@ -0,0 +1,81 @@
/***********************************************************************
* File: Debug.cs
* Author: Juan Carlos Luciani (jluciani@novell.com)
* Date of Creation: February 2004.
*
* Namespace: Novell.Security.Utilities
*
* Classes implemented: Dbg.
*
* Copyright (C) 2004 Novell, Inc.
*
* This library 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 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
***********************************************************************/
using System;
using System.Diagnostics;
namespace Novell.Security
{
/// <summary>
/// Implements methods for sending data to the debugger.
/// </summary>
public class Dbg
{
#region Class Members and Defines
private static TraceSwitch m_switch = new TraceSwitch("Novell.Security", "Novell Security Components");
#endregion
/// <summary>
/// Send data to the debugger if the trace level is set to error or above.
/// </summary>
/// <param name="line">Line to send to the debugger</param>
static public void trcError(string line)
{
if (m_switch.TraceError)
{
Trace.WriteLine(line);
}
//Console.WriteLine(line);
}
/// <summary>
/// Send data to the debugger if the trace level is set to informational or above.
/// </summary>
/// <param name="line">Line to send to the debugger</param>
static public void trcInfo(string line)
{
if (m_switch.TraceInfo)
{
Trace.WriteLine(line);
}
//Console.WriteLine(line);
}
/// <summary>
/// Send data to the debugger if the trace level is set to verbose.
/// </summary>
/// <param name="line">Line to send to the debugger</param>
static public void trcVerbose(string line)
{
if (m_switch.TraceVerbose)
{
Trace.WriteLine(line);
}
//Console.WriteLine(line);
}
}
}

View File

@@ -0,0 +1,77 @@
#######################################################################
#
# Copyright (C) 2004 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.
#
# Author: Juan Carlos Luciani <jluciani@novell.com>
#
#######################################################################
if DEBUG
TARGET_CFG = Debug
else
TARGET_CFG = Release
endif
# handle Mono secondary dependencies
export MONO_PATH := $(MONO_PATH)
Module_CSFILES = $(srcdir)/Debug.cs
Module_KEYFILE = $(srcdir)/c-sharp-utilities.snk
Module_CSFILES_CSC := $(subst /,$(SEP),$(Module_CSFILES))
Module_INCLUDES =
Module_RESOURCES =
Module_FLAGS = $(CSC_LIBFLAG)
Module_LIBS = System.dll System.Data.dll System.Security.dll $(SYSTEM_XML)
Module_LIBPATH =
EXTRA_DIST = $(Module_CSFILES) $(Module_KEYFILE)
CUR_DIR := $(shell pwd)
all: Novell.Security.Utilities.dll
Novell.Security.Utilities.dll: $(Module_CSFILES) $(Module_RESOURCES)
$(mkinstalldirs) bin/$(TARGET_CFG)
if WINDOWS
$(CSC) /nowarn:1591,1573,1572 /out:bin/$(TARGET_CFG)/$@ $(CSCFLAGS) $(Module_FLAGS) $(Module_LIBS:%=/r:%) $(Module_LIBPATH:%=/lib:%) $(Module_CSFILES_CSC) /doc:Novell.Security.Utilities.doc.xml
else
$(CSC) /nowarn:1591,1573,1572 /out:bin/$(TARGET_CFG)/$@ $(CSCFLAGS) $(Module_FLAGS) /keyfile:$(Module_KEYFILE) $(Module_LIBS:%=/r:%) $(Module_LIBPATH:%=/lib:%) $(Module_CSFILES_CSC) /doc:Novell.Security.Utilities.doc.xml
endif
install-exec-local: Novell.Security.Utilities.dll
$(mkinstalldirs) $(DESTDIR)$(libdir)
$(INSTALL_PROGRAM) bin/$(TARGET_CFG)/Novell.Security.Utilities.dll $(DESTDIR)$(libdir)/
uninstall-local:
cd $(DESTDIR)$(libdir); rm -f Novell.Security.Utilities.dll
rmdir $(DESTDIR)$(libdir)
#installcheck-local: install
# $(mkinstalldirs) $(DESTDIR)$(libdir)
# $(INSTALL_PROGRAM) $(DESTDIR)$(libdir)
# cd $(DESTDIR)$(libdir); $(MONO)
CLEAN_FILES = bin/$(TARGET_CFG)/Novell.Security.Utilities.dll /doc:Novell.Security.Utilities.doc.xml
clean-local:
rm -rf *.dbg *.exe *.dll $(CLEAN_FILES)
distclean-local:
maintainer-clean-local:
rm -f Makefile.in

View File

@@ -0,0 +1,30 @@
/***********************************************************************
* File: README
*
* Copyright (C) 2004 Novell, Inc.
*
* This library 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 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
***********************************************************************/
INTRODUCTION
The c-sharp-utilities component provides .NET facilities that are common to
the ClientPasswordManager .NET components.
FEATURES
Provides the following utilities:
Dbg class that can be used for tracing debugging information.

View File

@@ -0,0 +1,104 @@
<VisualStudioProject>
<CSHARP
ProjectType = "Local"
ProductVersion = "7.10.3077"
SchemaVersion = "2.0"
ProjectGuid = "{BBAD68F3-93C6-448F-8F79-F8CAEA3200C5}"
>
<Build>
<Settings
ApplicationIcon = ""
AssemblyKeyContainerName = ""
AssemblyName = "Novell.Security.Utilities"
AssemblyOriginatorKeyFile = ""
DefaultClientScript = "JScript"
DefaultHTMLPageLayout = "Grid"
DefaultTargetSchema = "IE50"
DelaySign = "false"
OutputType = "Library"
PreBuildEvent = ""
PostBuildEvent = ""
RootNamespace = "Novell.Security.Utilities"
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 = "..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.1.4322\System.dll"
/>
<Reference
Name = "System.Data"
AssemblyName = "System.Data"
HintPath = "..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
/>
<Reference
Name = "System.XML"
AssemblyName = "System.Xml"
HintPath = "..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
/>
</References>
</Build>
<Files>
<Include>
<File
RelPath = "AssemblyInfo.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "c-sharp-utilities.snk"
BuildAction = "None"
/>
<File
RelPath = "Debug.cs"
SubType = "Code"
BuildAction = "Compile"
/>
</Include>
</Files>
</CSHARP>
</VisualStudioProject>

View File

@@ -0,0 +1,48 @@
<VisualStudioProject>
<CSHARP LastOpenVersion = "7.10.3077" >
<Build>
<Settings ReferencePath = "" >
<Config
Name = "Debug"
EnableASPDebugging = "false"
EnableASPXDebugging = "false"
EnableUnmanagedDebugging = "false"
EnableSQLServerDebugging = "false"
RemoteDebugEnabled = "false"
RemoteDebugMachine = ""
StartAction = "Project"
StartArguments = ""
StartPage = ""
StartProgram = ""
StartURL = ""
StartWorkingDirectory = ""
StartWithIE = "false"
/>
<Config
Name = "Release"
EnableASPDebugging = "false"
EnableASPXDebugging = "false"
EnableUnmanagedDebugging = "false"
EnableSQLServerDebugging = "false"
RemoteDebugEnabled = "false"
RemoteDebugMachine = ""
StartAction = "Project"
StartArguments = ""
StartPage = ""
StartProgram = ""
StartURL = ""
StartWorkingDirectory = ""
StartWithIE = "false"
/>
</Settings>
</Build>
<OtherProjectSettings
CopyProjectDestinationFolder = ""
CopyProjectUncPath = ""
CopyProjectOption = "0"
ProjectView = "ProjectFiles"
ProjectTrust = "0"
/>
</CSHARP>
</VisualStudioProject>

View File

@@ -0,0 +1,204 @@
#######################################################################
#
# Copyright (C) 2004 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.
#
# Author: Juan Carlos Luciani <jluciani@novell.com>
#
#######################################################################
AC_INIT(c-sharp-net-credential/NetCredential.cs)
AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE(clientpasswordmanager, 0.1.1)
RELEASE=`date +%Y%m%d_%H%M`
AC_SUBST(RELEASE)
AM_MAINTAINER_MODE
#
# Check for a valid C# compiler
#
AC_CHECK_PROG(CSC, csc, csc)
test -z "$CSC" && AC_CHECK_PROG(CSC, mcs, mcs)
test -z "$CSC" && AC_MSG_ERROR([no acceptable C Sharp compiler found in \$PATH])
case $CSC in
#
# Mono-specific configuration
#
mcs)
CSC_EXEFLAG=/target:exe
CSC_LIBFLAG=/target:library
CSC_EXEFLAG=/target:exe
CSC_WINEXEFLAG=/target:winexe
CSCFLAGS='/d:MONO /warn:4 /d:TRACE'
CSCFLAGS_DEBUG="/debug+ /d:DEBUG"
CSCFLAGS_OPTIMIZE="/optimize+"
MONO=mono
MONO_DEBUG='mono --debug'
MONO_PATH=
SYSTEM_XML='System.Xml.dll'
;;
#
# .NET-specific configuration
#
csc)
CSC_EXEFLAG=/target:exe
CSC_LIBFLAG=/target:library
CSC_EXEFLAG=/target:exe
CSC_WINEXEFLAG=/target:winexe
CSCFLAGS='/d:DOTNET /warn:4 /d:TRACE /nologo'
CSCFLAGS_DEBUG="/debug+ /d:DEBUG"
CSCFLAGS_OPTIMIZE="/optimize+"
MONO=
MONO_DEBUG=
MONO_PATH=
SYSTEM_XML='System.XML.dll'
;;
esac
AC_SUBST(CSC)
AC_SUBST(CSC_EXEFLAG)
AC_SUBST(CSC_LIBFLAG)
AC_SUBST(CSC_WINEXEFLAG)
AC_SUBST(CSCFLAGS)
AC_SUBST(MONO)
AC_SUBST(MONO_PATH)
AC_SUBST(SYSTEM_XML)
SRCDIR='$(top_srcdir)'
DOCDIR="$SRCDIR/doc"
AC_SUBST(SRCDIR)
AC_SUBST(DOCDIR)
EMPTY=
SPACE='$(EMPTY) $(EMPTY)'
AC_SUBST(EMPTY)
AC_SUBST(SPACE)
#
# Check for a valid operating system
#
case $host_os in
linux*)
TARGET_OS='linux'
;;
cygwin*)
TARGET_OS='windows'
;;
*)
AC_MSG_ERROR([Unknown host_os: $host_os])
;;
esac
AC_SUBST(TARGET_OS)
AM_CONDITIONAL(LINUX, test "$TARGET_OS" = "linux")
AM_CONDITIONAL(WINDOWS, test "$TARGET_OS" = "windows")
#
# Set platform-specific variables
#
case $TARGET_OS in
#
# Linux-specific configuration
#
linux)
#
# Set variables
#
COMMON_CLEAN_FILES=''
ICON_EXT='.ico'
ICON_FLAG='/resource:'
PLATFORM_SUBDIRS=$LINUX_SUBDIRS
SEP='/'
;;
#
# Windows-specific configuration
#
windows)
COMMON_CLEAN_FILES='*.suo */*.suo *.csproj.user */*.csproj.user bin obj */bin */obj *.xml */*.xml *.pdb */*.pdb'
ICON_EXT='.ico'
ICON_FLAG='/win32icon:'
PLATFORM_SUBDIRS=$WINDOWS_SUBDIRS
SEP='$(EMPTY)\\$(EMPTY)'
;;
esac
AC_SUBST(COMMON_CLEAN_FILES)
AC_SUBST(ICON_EXT)
AC_SUBST(ICON_FLAG)
AC_SUBST(PLATFORM_SUBDIRS)
AC_SUBST(SEP)
#
# Run standard macros
#
AM_PROG_CC_STDC
AC_PROG_INSTALL
AC_HEADER_STDC
#
# Handle --enable-debug
#
AC_ARG_ENABLE(debug, [
--enable-debug configure the Makefiles to build in DEBUG mode],
[case "${enableval}" in
yes) enable_debug=true ;;
no) enable_debug=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
esac],[enable_debug=false])
AM_CONDITIONAL(DEBUG, test x$enable_debug = xtrue)
if test "$enable_debug" = "true"
then
# Build debug version.
CFLAGS="$CFLAGS_DEBUG $CFLAGS"
CSCFLAGS="$CSCFLAGS_DEBUG $CSCFLAGS"
CXXFLAGS="$CXXFLAGS_DEBUG $CXXFLAGS"
DEVENV_CONFIGURATION=Debug
MONO=$MONO_DEBUG
else
# Build optimized version.
CFLAGS="$CFLAGS_OPTIMIZE $CFLAGS"
CSCFLAGS="$CSCFLAGS_OPTIMIZE $CSCFLAGS"
CXXFLAGS="$CXXFLAGS_OPTIMIZE $CXXFLAGS"
DEVENV_CONFIGURATION=Release
fi
AC_SUBST(CSCFLAGS)
AC_SUBST(DEVENV_CONFIGURATION)
#
# Configure PKG_CONFIG
#
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
if test "x$PKG_CONFIG" = "xno"; then
AC_MSG_ERROR([You need to install pkg-config])
fi
#
# Configure files
#
AC_OUTPUT([
Makefile
c-sharp-net-credential/Makefile
c-sharp-password-dialog/Makefile
c-sharp-username-dialog/Makefile
c-sharp-utilities/Makefile
package/Makefile
package/windows/Makefile
package/windows/clientpasswordmanager-msm/Makefile
package/linux/Makefile
package/linux/clientpasswordmanager.spec
])

View File

@@ -0,0 +1,33 @@
#######################################################################
#
# Copyright (C) 2004 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.
#
# Author: Juan Carlos Luciani <jluciani@novell.com>
#
#######################################################################
SUBDIRS = $(TARGET_OS)
DIST_SUBDIRS = linux windows
.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

View File

@@ -0,0 +1,65 @@
#######################################################################
#
# Copyright (C) 2004 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.
#
# Author: Juan Carlos Luciani <jluciani@novell.com>
#
#######################################################################
RPM_FILE = $(PACKAGE)-$(VERSION)-$(RELEASE).$(target_cpu).rpm
SRPM_FILE = $(PACKAGE)-$(VERSION)-$(RELEASE).src.rpm
.PHONY: package package-clean package-install package-uninstall
#all: $(RPM_FILE)
package: $(RPM_FILE)
all clean:
$(RPM_FILE):
cd $(top_srcdir); make dist
rm -rf RPM
mkdir RPM
echo %_topdir `pwd`/RPM > $(HOME)/.rpmmacros
mkdir -p RPM/BUILD
mkdir -p RPM/RPMS
mkdir -p RPM/SOURCES
mkdir -p RPM/SPECS
mkdir -p RPM/SRPMS
cp clientpasswordmanager.spec RPM/SPECS
cp $(top_srcdir)/$(PACKAGE)-$(VERSION).tar.gz RPM/SOURCES
mv $(top_srcdir)/$(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION)-$(RELEASE).tar.gz
rpmbuild -ba -v -vv --target=$(target_triplet) RPM/SPECS/clientpasswordmanager.spec
cp RPM/RPMS/*/$(RPM_FILE) .
cp RPM/SRPMS/$(SRPM_FILE) .
package-install: package
su -c "rpm -Uvh $(RPM_FILE)"
package-uninstall:
su -c "rpm -e $(PACKAGE)"
package-clean clean-local:
rm -rf *.rpm RPM *.gz
distclean-local: package-clean
rm -f Makefile clientpasswordmanager.spec
maintainer-clean-local:
rm -f Makefile.in

View File

@@ -0,0 +1,95 @@
#######################################################################
#
# Copyright (C) 2004 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.
#
# Author: Juan Carlos Luciani <jluciani@novell.com>
#
#######################################################################
# SuSE Specific autobuild tags
# neededforbuild mono mono-devel pkgconfig glib2 glib2-devel libicu26
%define prefix /opt/novell/clientpasswordmanager
Summary: ClientPasswordManager
Name: @PACKAGE@
Version: @VERSION@
Release: @RELEASE@
Copyright: GPL
Group: Applications/Productivity
Source: %{name}-%{version}.tar.gz
URL: http://forge.novell.com/modules/xfmod/project/?isecure
#Distribution :
Vendor: <unknown>
Packager: <unknown>
BuildRoot: %{_tmppath}/%{name}-%{version}
Requires: mono >= 0.31
Obsoletes: %{name} <= %{version}
#=============================================================================
%Description
ClientPasswordManager provides an infrastructure that allows trusted
applications to share passwords to help provide a Single Sign-On experience
to the user.
#=============================================================================
%ChangeLog
#=============================================================================
%Prep
%setup -n %{name}-%{version}
#=============================================================================
%Build
./configure --prefix=%{prefix}
make
#=============================================================================
%Install
%{__rm} -rf $RPM_BUILD_ROOT
make DESTDIR=$RPM_BUILD_ROOT install
#=============================================================================
%Clean
%{__rm} -rf $RPM_BUILD_ROOT
#=============================================================================
%Post
cd /opt/novell/clientpasswordmanager/lib
gacutil -i Novell.Security.ClientPasswordManager.NetCredential.dll
gacutil -i Novell.Security.ClientPasswordManager.UsernameDialog.dll
gacutil -i Novell.Security.ClientPasswordManager.PasswordDialog.dll
gacutil -i Novell.Security.Utilities.dll
exit 0
#=============================================================================
%Preun
gacutil -u Novell.Security.ClientPasswordManager.NetCredential
gacutil -u Novell.Security.ClientPasswordManager.UsernameDialog
gacutil -u Novell.Security.ClientPasswordManager.PasswordDialog
gacutil -u Novell.Security.Utilities
exit 0
#=============================================================================
%Files
%defattr(-,root,root)
%{prefix}/*
#%{prefix}/lib/*
#%{prefix}/share/*

View File

@@ -0,0 +1,32 @@
#######################################################################
#
# Copyright (C) 2004 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.
#
# Author: Juan Carlos Luciani <jluciani@novell.com>
#
#######################################################################
SUBDIRS = clientpasswordmanager-msm
.PHONY: package-clean package-install package-uninstall
package package-clean package-install package-uninstall:
$(MAKE) -C clientpasswordmanager-msm $@
maintainer-clean-local:
rm -f Makefile.in

View File

@@ -0,0 +1,61 @@
#######################################################################
#
# Copyright (C) 2004 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.
#
# Author: Juan Carlos Luciani <jluciani@novell.com>
#
#######################################################################
MSM_FILE = $(PACKAGE)-$(VERSION)-$(RELEASE).msm
MSM_LOG_FILE = devenv-clientpasswordmanager-msm.log
.PHONY: package package-clean package-install package-uninstall c-sharp-net-credential c-sharp-password-dialog c-sharp-username-dialog c-sharp-utilities devenv
#all clean:
package: $(MSM_FILE)
devenv:
@if ! test -x "$(VSINSTALLDIR)/devenv.exe"; then echo "Error: Microsoft Visual Studio .NET is currently required to build MSI and MSM packages"; exit 1; fi
$(MSM_FILE): devenv
@rm -f $(MSM_LOG_FILE) $@
@CMD='"$(VSINSTALLDIR)/devenv.exe" ../../../ClientPasswordManager.sln /build $(DEVENV_CONFIGURATION) /project clientpasswordmanager-msm /out $(MSM_LOG_FILE)'; \
echo $$CMD; \
if eval $$CMD; then \
ls -l $(DEVENV_CONFIGURATION)/clientpasswordmanager-msm.msm; \
else \
grep -a "ERROR:" $(MSM_LOG_FILE); \
fi
securesink:
make -C ../.. all
package-clean clean-local:
rm -rf Release/* Release Debug/* Debug*/Release */Debug *.log *.suo
clean:
rm -rf Release/* Release Debug/* Debug */Release */Debug *.log *.suo
distclean-local: package-clean
rm -f Makefile clientpasswordmanager.msm
maintainer-clean-local:
rm -f Makefile.in

View File

@@ -0,0 +1,326 @@
"DeployProject"
{
"VSVersion" = "3:701"
"ProjectType" = "8:{DD7A5B58-C2F9-40FF-B2EF-0773356FB978}"
"IsWebType" = "8:FALSE"
"ProjectName" = "8:clientpasswordmanager-msm"
"LanguageId" = "3:1033"
"CodePage" = "3:1252"
"UILanguageId" = "3:1033"
"SccProjectName" = "8:"
"SccLocalPath" = "8:"
"SccAuxPath" = "8:"
"SccProvider" = "8:"
"Hierarchy"
{
"Entry"
{
"MsmKey" = "8:_3AD7204448FD4A0FB065CE3B19B85187"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_3CA7DFE20AFF49E1A5059CAA12A6F262"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_763071E9529E47298E0D483C70C9DD2C"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_C87D109CB52E451B8D4C9C425B9F408F"
"OwnerKey" = "8:_763071E9529E47298E0D483C70C9DD2C"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_C87D109CB52E451B8D4C9C425B9F408F"
"OwnerKey" = "8:_D54A8D63A6224AABA81E04F4DB6AD917"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_C87D109CB52E451B8D4C9C425B9F408F"
"OwnerKey" = "8:_3CA7DFE20AFF49E1A5059CAA12A6F262"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_C87D109CB52E451B8D4C9C425B9F408F"
"OwnerKey" = "8:_3AD7204448FD4A0FB065CE3B19B85187"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_D54A8D63A6224AABA81E04F4DB6AD917"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
}
"Configurations"
{
"Debug"
{
"DisplayName" = "8:Debug"
"IsDebugOnly" = "11:TRUE"
"IsReleaseOnly" = "11:FALSE"
"OutputFilename" = "8:Debug\\clientpasswordmanager-msm.msm"
"PackageFilesAs" = "3:2"
"PackageFileSize" = "3:-2147483648"
"CabType" = "3:1"
"Compression" = "3:2"
"SignOutput" = "11:FALSE"
"CertificateFile" = "8:"
"PrivateKeyFile" = "8:"
"TimeStampServer" = "8:"
"InstallerBootstrapper" = "3:1"
}
"Release"
{
"DisplayName" = "8:Release"
"IsDebugOnly" = "11:FALSE"
"IsReleaseOnly" = "11:TRUE"
"OutputFilename" = "8:Release\\clientpasswordmanager-msm.msm"
"PackageFilesAs" = "3:2"
"PackageFileSize" = "3:-2147483648"
"CabType" = "3:1"
"Compression" = "3:2"
"SignOutput" = "11:FALSE"
"CertificateFile" = "8:"
"PrivateKeyFile" = "8:"
"TimeStampServer" = "8:"
"InstallerBootstrapper" = "3:1"
}
}
"Deployable"
{
"CustomAction"
{
}
"DefaultFeature"
{
"Name" = "8:DefaultFeature"
"Title" = "8:"
"Description" = "8:"
}
"File"
{
}
"FileType"
{
}
"Folder"
{
"{78BAF5CE-F2E5-45BE-83BC-DB6AF387E941}:_6E6B01F2741A44CEAD98C1596C6D5ECF"
{
"Name" = "8:#1910"
"AlwaysCreate" = "11:FALSE"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Property" = "8:CommonFilesFolder"
"Folders"
{
}
}
"{29CD8198-A6F0-4B93-8B90-AC03CFEAD328}:_99CD6F04CF034FEC8E2E893187E81441"
{
"DefaultLocation" = "8:[TARGETDIR]"
"DisplayName" = "8:Module Retargetable Folder"
"Description" = "8:"
"Name" = "8:Module Retargetable Folder"
"AlwaysCreate" = "11:FALSE"
"Condition" = "8:"
"Transitive" = "11:TRUE"
"Property" = "8:NEWRETARGETABLEPROPERTY1"
"Folders"
{
}
}
}
"Sequences"
{
}
"MergeModule"
{
"{35A69C6E-5BA4-440D-803D-762B59A45393}:_C87D109CB52E451B8D4C9C425B9F408F"
{
"UseDynamicProperties" = "11:FALSE"
"IsDependency" = "11:TRUE"
"SourcePath" = "8:dotnetfxredist_x86.msm"
"LanguageId" = "3:1033"
"Exclude" = "11:FALSE"
"Folder" = "8:"
"Feature" = "8:"
"IsolateTo" = "8:"
}
}
"Module"
{
"ModuleSignature" = "8:MergeModule.6E7C68BEF7C242F99CC96098C0C93419"
"Version" = "8:1.0.0.0"
"Title" = "8:clientpasswordmanager-msm"
"Subject" = "8:"
"Author" = "8:Novell, Inc."
"Keywords" = "8:"
"Comments" = "8:"
"SearchPath" = "8:"
"UseSystemSearchPath" = "11:TRUE"
}
"ProjectOutput"
{
"{8062640A-2EEE-46E9-AB67-688E9A886E9F}:_3AD7204448FD4A0FB065CE3B19B85187"
{
"SourcePath" = "8:..\\..\\..\\c-sharp-net-credential\\obj\\Debug\\Novell.Security.ClientPasswordManager.NetCredential.dll"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_99CD6F04CF034FEC8E2E893187E81441"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Vital" = "11:TRUE"
"ReadOnly" = "11:FALSE"
"Hidden" = "11:FALSE"
"System" = "11:FALSE"
"Permanent" = "11:FALSE"
"SharedLegacy" = "11:FALSE"
"PackageAs" = "3:1"
"Register" = "3:1"
"Exclude" = "11:FALSE"
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
"ProjectOutputGroupRegister" = "3:1"
"OutputConfiguration" = "8:"
"OutputGroupCanonicalName" = "8:Built"
"OutputProjectGuid" = "8:{D7D0F5D8-0F45-4DCA-818B-8E71168A2CA3}"
"ShowKeyOutput" = "11:FALSE"
"ExcludeFilters"
{
}
}
"{8062640A-2EEE-46E9-AB67-688E9A886E9F}:_3CA7DFE20AFF49E1A5059CAA12A6F262"
{
"SourcePath" = "8:..\\..\\..\\c-sharp-username-dialog\\obj\\Debug\\Novell.Security.ClientPasswordManager.UsernameDialog.dll"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_99CD6F04CF034FEC8E2E893187E81441"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Vital" = "11:TRUE"
"ReadOnly" = "11:FALSE"
"Hidden" = "11:FALSE"
"System" = "11:FALSE"
"Permanent" = "11:FALSE"
"SharedLegacy" = "11:FALSE"
"PackageAs" = "3:1"
"Register" = "3:1"
"Exclude" = "11:FALSE"
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
"ProjectOutputGroupRegister" = "3:1"
"OutputConfiguration" = "8:"
"OutputGroupCanonicalName" = "8:Built"
"OutputProjectGuid" = "8:{AFE3BA84-436C-4DD1-BA01-3B8C6B9D125C}"
"ShowKeyOutput" = "11:FALSE"
"ExcludeFilters"
{
}
}
"{8062640A-2EEE-46E9-AB67-688E9A886E9F}:_763071E9529E47298E0D483C70C9DD2C"
{
"SourcePath" = "8:..\\..\\..\\c-sharp-password-dialog\\obj\\Debug\\Novell.Security.ClientPasswordManager.PasswordDialog.dll"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_99CD6F04CF034FEC8E2E893187E81441"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Vital" = "11:TRUE"
"ReadOnly" = "11:FALSE"
"Hidden" = "11:FALSE"
"System" = "11:FALSE"
"Permanent" = "11:FALSE"
"SharedLegacy" = "11:FALSE"
"PackageAs" = "3:1"
"Register" = "3:1"
"Exclude" = "11:FALSE"
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
"ProjectOutputGroupRegister" = "3:1"
"OutputConfiguration" = "8:"
"OutputGroupCanonicalName" = "8:Built"
"OutputProjectGuid" = "8:{5A211C70-3AEB-4305-8CB6-42757D01DC22}"
"ShowKeyOutput" = "11:FALSE"
"ExcludeFilters"
{
}
}
"{8062640A-2EEE-46E9-AB67-688E9A886E9F}:_D54A8D63A6224AABA81E04F4DB6AD917"
{
"SourcePath" = "8:..\\..\\..\\c-sharp-utilities\\obj\\Debug\\Novell.Security.Utilities.dll"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_99CD6F04CF034FEC8E2E893187E81441"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Vital" = "11:TRUE"
"ReadOnly" = "11:FALSE"
"Hidden" = "11:FALSE"
"System" = "11:FALSE"
"Permanent" = "11:FALSE"
"SharedLegacy" = "11:FALSE"
"PackageAs" = "3:1"
"Register" = "3:1"
"Exclude" = "11:FALSE"
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
"ProjectOutputGroupRegister" = "3:1"
"OutputConfiguration" = "8:"
"OutputGroupCanonicalName" = "8:Built"
"OutputProjectGuid" = "8:{BBAD68F3-93C6-448F-8F79-F8CAEA3200C5}"
"ShowKeyOutput" = "11:FALSE"
"ExcludeFilters"
{
}
}
}
"Registry"
{
"HKLM"
{
"Keys"
{
}
}
"HKCU"
{
"Keys"
{
}
}
"HKCR"
{
"Keys"
{
}
}
"HKU"
{
"Keys"
{
}
}
"HKPU"
{
"Keys"
{
}
}
}
"Shortcut"
{
}
}
}