Merge branch 'atsushi'
authoratsushieno <atsushi@ximian.com>
Wed, 28 Jul 2010 15:11:13 +0000 (00:11 +0900)
committeratsushieno <atsushi@ximian.com>
Wed, 28 Jul 2010 15:11:13 +0000 (00:11 +0900)
18 files changed:
mcs/class/System.IdentityModel/System.IdentityModel.Selectors/ChangeLog
mcs/class/System.IdentityModel/System.IdentityModel.Selectors/SecurityTokenRequirement.cs
mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecureMessageDecryptor.cs
mcs/class/System.ServiceModel/System.ServiceModel.Channels/ChangeLog
mcs/class/System.ServiceModel/System.ServiceModel.Channels/SecurityBindingElement.cs
mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/ChangeLog
mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/IssuedSecurityTokenParameters.cs
mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SecureConversationSecurityTokenParameters.cs
mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SecurityTokenParameters.cs
mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SslSecurityTokenParameters.cs
mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SspiSecurityTokenParameters.cs
mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SupportingTokenParameters.cs
mcs/class/System.ServiceModel/System.ServiceModel.Security/ChangeLog
mcs/class/System.ServiceModel/System.ServiceModel.Security/ServiceCredentialsSecurityTokenManager.cs
mcs/class/System.ServiceModel/Test/System.ServiceModel.Security/ChangeLog
mcs/class/System.ServiceModel/Test/System.ServiceModel.Security/ServiceCredentialsSecurityTokenManagerTest.cs
mcs/class/System.ServiceModel/Test/System.ServiceModel/ChangeLog
mcs/class/System.ServiceModel/Test/System.ServiceModel/ClientCredentialsSecurityTokenManagerTest.cs

index 1b2a09cf010dd0beb7846efc109c3bb480a867e1..f3cafb059bae11718c4ce6c720a7a445d02c07ad 100755 (executable)
@@ -1,3 +1,8 @@
+2010-07-28  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SecurityTokenRequirement.cs : return false if property value is
+         null in the internal dictionary (unlike Dictionary<K,V>).
+
 2007-11-27  Atsushi Enomoto  <atsushi@ximian.com>
 
        * SecurityTokenRequirement.cs : fill out parameter properly (gmcs
index 08294c77150a7edc279eeb051638646b816ea30c..c75e373ab19eb5ee47967c20cf3f19acc9e0ed82 100644 (file)
@@ -146,7 +146,7 @@ namespace System.IdentityModel.Selectors
                                value = (TValue) tmp;
                        else
                                throw new ArgumentException (String.Format ("The value of property '{0}' is of type '{1}', while '{2}' is expected.", property, tmp.GetType (), typeof (TValue)));
-                       return true;
+                       return value != null;
                }
        }
 }
index 93c82bce937ca3cec512263375c6ef9590670a7d..6c8b3f8a3dd7ff75cbabcaf4eea68d35c68f643f 100644 (file)
@@ -132,6 +132,7 @@ namespace System.ServiceModel.Channels.Security
 
                        // FIXME: use proper max buffer
                        buf = source.CreateBufferedCopy (int.MaxValue);
+Console.WriteLine ("####### " + buf.CreateMessage ());
 
                        doc = new XmlDocument ();
                        doc.PreserveWhitespace = true;
index d60296c9702dc50658b5ffc6ba8171841b6c08b5..6f98db8e2ad9edae4815a2ee4f6ae8977ede21b1 100755 (executable)
@@ -1,3 +1,7 @@
+2010-07-28  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SecurityBindingElement.cs : implement ToString().
+
 2010-07-15  Atsushi Enomoto  <atsushi@ximian.com>
 
        * MtomMessageEncodingBindingElement.cs, MtomMessageEncoder.cs :
index e229f912d40fa5281aee9871258a058552c655ff..80e2800217e256ad05bf572db4d9da8f5a0edb9c 100644 (file)
@@ -36,6 +36,7 @@ using System.IdentityModel.Selectors;
 using System.IdentityModel.Tokens;
 using System.ServiceModel.Security.Tokens;
 #endif
+using System.Text;
 
 namespace System.ServiceModel.Channels
 {
@@ -176,10 +177,20 @@ namespace System.ServiceModel.Channels
                                p.SetKeyDerivation (requireDerivedKeys);
                }
 
-               [MonoTODO]
                public override string ToString ()
                {
-                       return base.ToString ();
+                       var sb = new StringBuilder ();
+                       sb.Append (GetType ().FullName).Append (":\n");
+                       foreach (var pi in GetType ().GetProperties ()) {
+                               var simple = Type.GetTypeCode (pi.PropertyType) != TypeCode.Object;
+                               var val = pi.GetValue (this, null);
+                               sb.Append (pi.Name).Append (':');
+                               if (val != null)
+                                       sb.AppendFormat ("{0}{1}{2}", simple ? " " : "\n", simple ? "" : "  ", String.Join ("\n  ", val.ToString ().Split ('\n')));
+                               sb.Append ('\n');
+                       }
+                       sb.Length--; // chop trailing EOL.
+                       return sb.ToString ();
                }
 #else
                [MonoTODO]
index 1b7d8d11c8bbe103db6ab970352a6dbd32c1ebdb..c7cb2f18c11a59abaa6eef164f8e2f2d7df245b4 100755 (executable)
@@ -1,3 +1,11 @@
+2010-07-28  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SecurityTokenParameters.cs, SupportingTokenParameters.cs,
+         SslSecurityTokenParameters.cs, IssuedSecurityTokenParameters.cs,
+         SspiSecurityTokenParameters.cs,
+         SecureConversationSecurityTokenParameters.cs :
+         implement ToString().
+
 2010-07-15  Atsushi Enomoto  <atsushi@ximian.com>
 
        * SslSecurityTokenProvider.cs : verify mismatch. We don't have
index ce91e21141e1e69c673c1ab5581b8a0a1d9f4bda..58faba37d0c7994d2094deac3a6c7261cdeb8df0 100644 (file)
@@ -84,7 +84,6 @@ namespace System.ServiceModel.Security.Tokens
                Collection<XmlElement> additional_reqs =
                        new Collection<XmlElement> ();
 
-               [MonoTODO]
                public override string ToString ()
                {
                        return base.ToString ();
index ef61a1085679f1fc7afc486531f2a4f65f501ad6..956104dc08c2bebe3f1f6f3f5782f24b4342d259 100644 (file)
@@ -155,7 +155,6 @@ namespace System.ServiceModel.Security.Tokens
                        requirement.KeyType = SecurityKeyType.SymmetricKey;
                }
 
-               [MonoTODO]
                public override string ToString ()
                {
                        return base.ToString ();
index 39b0fdcceb7e2d98c3edfa6d2604ab3bebb4a8c3..3618cc99eaaf6b67ada3a5b8190095b90cc3b052 100644 (file)
@@ -29,6 +29,7 @@ using System.IdentityModel.Selectors;
 using System.IdentityModel.Tokens;
 using System.ServiceModel.Channels;
 using System.ServiceModel.Security;
+using System.Text;
 
 namespace System.ServiceModel.Security.Tokens
 {
@@ -67,10 +68,20 @@ namespace System.ServiceModel.Security.Tokens
                        return CloneCore ();
                }
 
-               [MonoTODO]
                public override string ToString ()
                {
-                       return base.ToString ();
+                       var sb = new StringBuilder ();
+                       sb.Append (GetType ().FullName).Append (":\n");
+                       foreach (var pi in GetType ().GetProperties ()) {
+                               var simple = Type.GetTypeCode (pi.PropertyType) != TypeCode.Object;
+                               var val = pi.GetValue (this, null);
+                               sb.Append (pi.Name).Append (':');
+                               if (val != null)
+                                       sb.AppendFormat ("{0}{1}{2}", simple ? " " : "\n", simple ? "" : "  ", String.Join ("\n  ", val.ToString ().Split ('\n')));
+                               sb.Append ('\n');
+                       }
+                       sb.Length--; // chop trailing EOL.
+                       return sb.ToString ();
                }
 
                protected abstract bool HasAsymmetricKey { get; }
index 0e70f06eeb88ea8bee46e0cf1f572e0bfd68f326..15e6bb45864563d1de667b378fd54b00ca6463e7 100644 (file)
@@ -71,7 +71,6 @@ namespace System.ServiceModel.Security.Tokens
                        set { cancel = value; }
                }
 
-               [MonoTODO]
                public override string ToString ()
                {
                        return base.ToString ();
index c5aab7c6a7fd2a81e1924ff047186f1c41f09c56..ea963d0131b4ecc2e30fb03ab22f26f462635d8a 100644 (file)
@@ -98,7 +98,6 @@ namespace System.ServiceModel.Security.Tokens
                        requirement.KeyType = SecurityKeyType.SymmetricKey;
                }
 
-               [MonoTODO]
                public override string ToString ()
                {
                        return base.ToString ();
index b8bb7f483132a117ef49cac6bce48b66f7791413..8bbc19983e459fce6c7c38b3c9fbe4a91d5fa16a 100644 (file)
@@ -31,6 +31,7 @@ using System.Net.Security;
 using System.ServiceModel.Channels;
 using System.ServiceModel.Description;
 using System.ServiceModel.Security;
+using System.Text;
 
 using ParamList = System.Collections.ObjectModel.Collection<System.ServiceModel.Security.Tokens.SecurityTokenParameters>;
 
@@ -88,10 +89,23 @@ namespace System.ServiceModel.Security.Tokens
                                p.RequireDerivedKeys = requireDerivedKeys;
                }
 
-               [MonoTODO]
                public override string ToString ()
                {
-                       return base.ToString ();
+                       var sb = new StringBuilder ();
+                       AppendCollection (sb, Endorsing, "endorsing", "Endorsing");
+                       AppendCollection (sb, Signed, "signed", "Signed");
+                       AppendCollection (sb, SignedEncrypted, "signed encrypted", "SignedEncrypted");
+                       AppendCollection (sb, SignedEndorsing, "signed endorsing", "SignedEndorsing");
+                       sb.Length--; // chop trailing EOL.
+                       return sb.ToString ();
+               }
+
+               void AppendCollection (StringBuilder sb, Collection<SecurityTokenParameters> col, string emptyLabel, string label)
+               {
+                       if (col.Count == 0)
+                               sb.AppendFormat ("No {0} tokens.\n", emptyLabel);
+                       for (int i = 0; i < col.Count; i++)
+                               sb.AppendFormat ("{0}[{1}]\n  {2}\n", label, i, String.Join ("\n  ", col [i].ToString ().Split ('\n')));
                }
        }
 }
index 32a08d5dc2033f3fe2124d576ce0687608a6b875..1a30c0a177b9e9054d822b89903ab7811e5c3e73 100755 (executable)
@@ -1,3 +1,8 @@
+2010-07-28  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * ServiceCredentialsSecurityTokenManager.cs : implement some
+         requirement check for WS-SecureConversation.
+
 2010-07-27  Atsushi Enomoto  <atsushi@ximian.com>
 
        * X509CertificateRecipientClientCredential.cs,
index c48944b472dc8ba9edd6be585cfb547976347a24..d788a5a0b27ca6ace51b87cfb5db8e511483fca2 100644 (file)
@@ -73,6 +73,19 @@ namespace System.ServiceModel.Security
                        if (requirement.TokenType == SecurityTokenTypes.Rsa)
                                return new RsaSecurityTokenAuthenticator ();
                        if (requirement.TokenType == ServiceModelSecurityTokenTypes.SecureConversation) {
+                               SecurityBindingElement binding;
+                               if (!requirement.TryGetProperty<SecurityBindingElement> (ReqType.SecurityBindingElementProperty, out binding))
+                                       throw new ArgumentException ("SecurityBindingElement is required in the security token requirement");
+                               SecureConversationSecurityTokenParameters issuedParams;
+                               if (!requirement.TryGetProperty<SecureConversationSecurityTokenParameters> (ReqType.IssuedSecurityTokenParametersProperty, out issuedParams))
+                                       throw new ArgumentException ("IssuedSecurityTokenParameters are required in the security token requirement");
+                               BindingContext issuerBC;
+                               if (!requirement.TryGetProperty<BindingContext> (ReqType.IssuerBindingContextProperty, out issuerBC))
+                                       throw new ArgumentException ("IssuerBindingContext is required in the security token requirement");
+                               SecurityTokenVersion secVer;
+                               if (!requirement.TryGetProperty<SecurityTokenVersion> (ReqType.MessageSecurityVersionProperty, out secVer))
+                                       throw new ArgumentException ("MessageSecurityVersion property (of type SecurityTokenVersion) is required in the security token requirement");
+
                                // FIXME: get parameters from somewhere
                                SecurityContextSecurityTokenResolver resolver =
                                        new SecurityContextSecurityTokenResolver (0x1000, true);
index fabab751925e652999a7c328175f6a02e4a2e234..c5a46e493df1a6035a923dc96a2a203a302e7cf0 100755 (executable)
@@ -1,3 +1,12 @@
+2010-07-28  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * ServiceCredentialsSecurityTokenManagerTest.cs : another WS-SC test.
+
+2010-07-28  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * ServiceCredentialsSecurityTokenManagerTest.cs :
+         enable some WS-SC tests.
+
 2010-03-24  Atsushi Enomoto  <atsushi@ximian.com>
 
        * TransportSecurityBindingElementTest.cs : new test.
index 8b2a36f2e82597f03c9711436ec02ca83416d981..b4f56c1d7662b129c22b45cdc577596153bcd2cd 100644 (file)
@@ -509,9 +509,20 @@ namespace MonoTests.System.ServiceModel.Security
                        def_c.CreateSecurityTokenProvider (r);
                }
 
+               [Test]
+               [ExpectedException (typeof (NotSupportedException))]
+               [Category ("NotDotNet")] // it results in NRE inside InitializeSecurityTokenRequirement().
+               public void CreateProviderSecureConv2 ()
+               {
+                       var sbe = (SymmetricSecurityBindingElement) SecurityBindingElement.CreateSecureConversationBindingElement (SecurityBindingElement.CreateUserNameForCertificateBindingElement ());
+                       var p = new MySecureConversationSecurityTokenParameters ((SecureConversationSecurityTokenParameters) sbe.ProtectionTokenParameters);
+                       var r = new RecipientServiceModelSecurityTokenRequirement ();
+                       p.InitRequirement (r);
+                       def_c.CreateSecurityTokenProvider (r);
+               }
+
                [Test]
                [ExpectedException (typeof (ArgumentException))]
-               [Category ("NotWorking")]
                public void CreateAuthenticatorSecureConvNoSecurityBindingElement ()
                {
                        RecipientServiceModelSecurityTokenRequirement r =
@@ -523,7 +534,6 @@ namespace MonoTests.System.ServiceModel.Security
 
                [Test]
                [ExpectedException (typeof (ArgumentException))]
-               [Category ("NotWorking")]
                public void CreateAuthenticatorSecureConvNoIssuedSecurityTokenParameters ()
                {
                        RecipientServiceModelSecurityTokenRequirement r =
@@ -535,7 +545,6 @@ namespace MonoTests.System.ServiceModel.Security
 
                [Test]
                [ExpectedException (typeof (ArgumentException))]
-               [Category ("NotWorking")]
                public void CreateAuthenticatorSecureConvNoIssuerBindingContext ()
                {
                        RecipientServiceModelSecurityTokenRequirement r =
@@ -545,22 +554,8 @@ namespace MonoTests.System.ServiceModel.Security
                        def_c.CreateSecurityTokenAuthenticator (r, out resolver);
                }
 
-               [Test]
-               // The type of exception should not matter though.
-               [ExpectedException (typeof (NotSupportedException))]
-               [Category ("NotWorking")]
-               public void CreateAuthenticatorSecureConvNullMessageSecurityVersion ()
-               {
-                       RecipientServiceModelSecurityTokenRequirement r =
-                               CreateSecureConvRequirement ();
-                       r.MessageSecurityVersion = null;
-                       SecurityTokenResolver resolver;
-                       def_c.CreateSecurityTokenAuthenticator (r, out resolver);
-               }
-
                [Test]
                [ExpectedException (typeof (ArgumentException))]
-               [Category ("NotWorking")]
                public void CreateAuthenticatorSecureConvNoMessageSecurityVersion ()
                {
                        RecipientServiceModelSecurityTokenRequirement r =
index cc755dd1172dc596f812c9a6d0fa9bb45e2f0f61..d83a391adc0657beab02d041c3dfa85df60de40c 100755 (executable)
@@ -1,3 +1,7 @@
+2010-07-28  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * ClientCredentialsSecurityTokenManagerTest.cs : add utility .ctor.
+
 2010-06-21  Atsushi Enomoto  <atsushi@ximian.com>
 
        * EndpointAddressTest.cs : add more ReadFrom() tests.
index 73041b346579ce5c3d10df3425cdf269be834378..a1f28e3e1539d1247629cfa96686c16bbcb2307a 100644 (file)
@@ -731,6 +731,11 @@ Assert.IsFalse (new MyManager (new MyClientCredentials ()).IsIssued (r), "premis
                {
                }
 
+               public MySecureConversationSecurityTokenParameters (SecureConversationSecurityTokenParameters clone)
+                       : base (clone)
+               {
+               }
+
                public MySecureConversationSecurityTokenParameters (SecurityBindingElement element)
                        : base (element)
                {