From dec15098359ad5cbedb804a13c9e32f45ad8f7f2 Mon Sep 17 00:00:00 2001 From: antiduh Date: Mon, 30 Jun 2014 15:36:20 +0000 Subject: [PATCH] Refactored Credential et al so that the security package is provided by name (string), and not an enum. Security packages are runtime enumerable, and new ones may be created that we don't have any idea of. --- NSspi/Credentials/ClientCredential.cs | 21 +++------------------ NSspi/Credentials/Credential.cs | 6 +++--- NSspi/Credentials/ServerCredential.cs | 20 +++----------------- NSspi/Program.cs | 4 ++-- TestClient/ClientForm.cs | 2 +- TestServer/ServerForm.cs | 2 +- 6 files changed, 13 insertions(+), 42 deletions(-) diff --git a/NSspi/Credentials/ClientCredential.cs b/NSspi/Credentials/ClientCredential.cs index 3a52e5e..0d3ab29 100644 --- a/NSspi/Credentials/ClientCredential.cs +++ b/NSspi/Credentials/ClientCredential.cs @@ -9,7 +9,7 @@ namespace NSspi.Credentials { public class ClientCredential : Credential { - public ClientCredential( SecurityPackage package ) + public ClientCredential( string package ) : base( package ) { Init(); @@ -22,29 +22,14 @@ namespace NSspi.Credentials TimeStamp rawExpiry = new TimeStamp(); // -- Package -- - if( this.SecurityPackage == SecurityPackage.Kerberos ) - { - packageName = PackageNames.Kerberos; - } - else if( this.SecurityPackage == SecurityPackage.Negotiate ) - { - packageName = PackageNames.Negotiate; - } - else if( this.SecurityPackage == SecurityPackage.NTLM ) - { - packageName = PackageNames.Ntlm; - } - else - { - throw new ArgumentException( "Invalid value provided for the 'package' parameter." ); - } + // Copy off for the call, since this.SecurityPackage is a property. + packageName = this.SecurityPackage; // -- Credential -- // Client uses outbound credentials. use = CredentialUse.Outbound; // -- Invoke -- - SecurityStatus status = SecurityStatus.InternalError; this.Handle = new SafeCredentialHandle(); diff --git a/NSspi/Credentials/Credential.cs b/NSspi/Credentials/Credential.cs index dee13da..5976d42 100644 --- a/NSspi/Credentials/Credential.cs +++ b/NSspi/Credentials/Credential.cs @@ -16,13 +16,13 @@ namespace NSspi.Credentials { private bool disposed; - private SecurityPackage securityPackage; + private string securityPackage; private SafeCredentialHandle safeCredHandle; private DateTime expiry; - public Credential( SecurityPackage package ) + public Credential( string package ) { this.disposed = false; this.securityPackage = package; @@ -35,7 +35,7 @@ namespace NSspi.Credentials Dispose( false ); } - public SecurityPackage SecurityPackage + public string SecurityPackage { get { diff --git a/NSspi/Credentials/ServerCredential.cs b/NSspi/Credentials/ServerCredential.cs index b4d88b0..78aa895 100644 --- a/NSspi/Credentials/ServerCredential.cs +++ b/NSspi/Credentials/ServerCredential.cs @@ -9,7 +9,7 @@ namespace NSspi.Credentials { public class ServerCredential : Credential { - public ServerCredential( SecurityPackage package ) + public ServerCredential( string package ) : base( package ) { Init(); @@ -22,22 +22,8 @@ namespace NSspi.Credentials TimeStamp rawExpiry = new TimeStamp(); // -- Package -- - if( this.SecurityPackage == SecurityPackage.Kerberos ) - { - packageName = PackageNames.Kerberos; - } - else if( this.SecurityPackage == SecurityPackage.Negotiate ) - { - packageName = PackageNames.Negotiate; - } - else if( this.SecurityPackage == SecurityPackage.NTLM ) - { - packageName = PackageNames.Ntlm; - } - else - { - throw new ArgumentException( "Invalid value provided for the 'package' parameter." ); - } + // Copy off for the call, since this.SecurityPackage is a property. + packageName = this.SecurityPackage; // -- Credential -- // Server uses Inbound credentials. diff --git a/NSspi/Program.cs b/NSspi/Program.cs index 089e069..b7c61b0 100644 --- a/NSspi/Program.cs +++ b/NSspi/Program.cs @@ -35,7 +35,7 @@ namespace NSspi try { - clientCred = new ClientCredential( SecurityPackage.Negotiate ); + clientCred = new ClientCredential( PackageNames.Negotiate ); Console.Out.WriteLine( clientCred.Name ); client = new ClientContext( @@ -50,7 +50,7 @@ namespace NSspi ContextAttrib.Delegate ); - serverCred = new ServerCredential( SecurityPackage.Negotiate ); + serverCred = new ServerCredential( PackageNames.Negotiate ); server = new ServerContext( serverCred, diff --git a/TestClient/ClientForm.cs b/TestClient/ClientForm.cs index 8870002..fad3d93 100644 --- a/TestClient/ClientForm.cs +++ b/TestClient/ClientForm.cs @@ -48,7 +48,7 @@ namespace TestClient this.FormClosing += Form1_FormClosing; // --- SSPI --- - this.cred = new ClientCredential( SecurityPackage.Negotiate ); + this.cred = new ClientCredential( PackageNames.Negotiate ); this.context = new ClientContext( cred, diff --git a/TestServer/ServerForm.cs b/TestServer/ServerForm.cs index b0cabb9..caaef4b 100644 --- a/TestServer/ServerForm.cs +++ b/TestServer/ServerForm.cs @@ -34,7 +34,7 @@ namespace TestServer { InitializeComponent(); - this.serverCred = new ServerCredential( SecurityPackage.Negotiate ); + this.serverCred = new ServerCredential( PackageNames.Negotiate ); this.serverContext = new ServerContext( serverCred,