Author: atsushi
Date: 2007-04-27 04:02:18 -0400 (Fri, 27 Apr 2007)
New Revision: 76371

Modified:
   
trunk/olive/class/Mono.ServiceModel.IdentitySelectors/Mono.ServiceModel.IdentitySelectors/ChangeLog
   
trunk/olive/class/Mono.ServiceModel.IdentitySelectors/Mono.ServiceModel.IdentitySelectors/IdentityCard.cs
   
trunk/olive/class/Mono.ServiceModel.IdentitySelectors/Test/Mono.IdentityModel.Selectors/ChangeLog
   
trunk/olive/class/Mono.ServiceModel.IdentitySelectors/Test/Mono.IdentityModel.Selectors/IdentityCardTest.cs
   trunk/olive/class/Mono.ServiceModel.IdentitySelectors/resources/ChangeLog
   
trunk/olive/class/Mono.ServiceModel.IdentitySelectors/resources/schemas-xmlsoap-or-ws-2005-05-identity.rnc
Log:
2007-04-27  Atsushi Enomoto  <[EMAIL PROTECTED]>

        * IdentityCard.cs : TokenService contains UserCredential as well as
          EndpointAddress.

        * schemas-xmlsoap-or-ws-2005-05-identity.rnc : TokenService element
          also contains UserCredential.

        * IdentityCardTest.cs : some flexibility on xml declarations.



Modified: 
trunk/olive/class/Mono.ServiceModel.IdentitySelectors/Mono.ServiceModel.IdentitySelectors/ChangeLog
===================================================================
--- 
trunk/olive/class/Mono.ServiceModel.IdentitySelectors/Mono.ServiceModel.IdentitySelectors/ChangeLog
 2007-04-27 07:57:43 UTC (rev 76370)
+++ 
trunk/olive/class/Mono.ServiceModel.IdentitySelectors/Mono.ServiceModel.IdentitySelectors/ChangeLog
 2007-04-27 08:02:18 UTC (rev 76371)
@@ -1,3 +1,8 @@
+2007-04-27  Atsushi Enomoto  <[EMAIL PROTECTED]>
+
+       * IdentityCard.cs : TokenService contains UserCredential as well as
+         EndpointAddress.
+
 2007-04-26  Atsushi Enomoto  <[EMAIL PROTECTED]>
 
        * IdentityCardEncryption.cs, CardSelectorClient.cs :

Modified: 
trunk/olive/class/Mono.ServiceModel.IdentitySelectors/Mono.ServiceModel.IdentitySelectors/IdentityCard.cs
===================================================================
--- 
trunk/olive/class/Mono.ServiceModel.IdentitySelectors/Mono.ServiceModel.IdentitySelectors/IdentityCard.cs
   2007-04-27 07:57:43 UTC (rev 76370)
+++ 
trunk/olive/class/Mono.ServiceModel.IdentitySelectors/Mono.ServiceModel.IdentitySelectors/IdentityCard.cs
   2007-04-27 08:02:18 UTC (rev 76371)
@@ -27,9 +27,12 @@
 //
 using System;
 using System.Collections.ObjectModel;
+using System.Security.Cryptography.Xml;
 using System.ServiceModel;
 using System.ServiceModel.Channels;
 using System.Xml;
+using System.Xml.Schema;
+using System.Xml.Serialization;
 
 namespace Mono.ServiceModel.IdentitySelectors
 {
@@ -77,6 +80,102 @@
                        }
                }
 
+               public class TokenService
+               {
+                       EndpointAddress address;
+                       UserCredential credential;
+
+                       public EndpointAddress Address {
+                               get { return address; }
+                               set { address = value; }
+                       }
+                       
+                       public UserCredential Credential {
+                               get { return credential; }
+                               set { credential = value; }
+                       }
+
+                       public void ReadXml (XmlReader reader)
+                       {
+                               // FIXME: do we need different versions?
+                               address = EndpointAddress.ReadFrom 
(AddressingVersion.WSAddressing10, reader);
+                               reader.MoveToContent ();
+                               // FIXME: create custom serializer
+                               credential = new XmlSerializer (typeof 
(UserCredential)).Deserialize (reader) as UserCredential;
+                       }
+
+                       public void WriteXml (XmlWriter writer)
+                       {
+                               address.WriteTo 
(AddressingVersion.WSAddressing10, writer);
+                               // FIXME: create custom serializer
+                               new XmlSerializer (typeof 
(UserCredential)).Serialize (writer, credential);
+                       }
+               }
+
+               [XmlRoot ("UserCredential", Namespace = 
Constants.WsidNamespace)]
+               public class UserCredential
+               {
+                       string hint;
+                       UsernamePasswordCredential username;
+                       X509V3Credential x509;
+
+                       public string DisplayCredentialHint {
+                               get { return hint; }
+                               set { hint = value; }
+                       }
+
+                       public UsernamePasswordCredential Username {
+                               get { return username; }
+                               set { username = value; }
+                       }
+
+                       public X509V3Credential X509V3 {
+                               get { return x509; }
+                               set { x509 = value; }
+                       }
+               }
+
+               public class UsernamePasswordCredential
+               {
+                       string username;
+
+                       public string Username {
+                               get { return username; }
+                               set { username = value; }
+                       }
+
+                       // password is not stored.
+               }
+
+               public class X509V3Credential : IXmlSerializable
+               {
+                       KeyInfoX509Data data;
+
+                       public KeyInfoX509Data X509Data {
+                               get { return data; }
+                               set { data = value; }
+                       }
+
+                       public void WriteXml (XmlWriter w)
+                       {
+                               if (data != null)
+                                       data.GetXml ().WriteTo (w);
+                       }
+
+                       public void ReadXml (XmlReader r)
+                       {
+                               r.MoveToContent ();
+                               XmlDocument doc = new XmlDocument ();
+                               data = new KeyInfoX509Data ();
+                               data.LoadXml (doc.ReadNode (r) as XmlElement);
+                       }
+
+                       XmlSchema IXmlSerializable.GetSchema ()
+                       {
+                               return null;
+                       }
+               }
+
                const string date_format = "yyyy-MM-dd'T'HH:mm:ss.FFFFFFFZ";
 
                byte [] certificate;
@@ -87,8 +186,8 @@
                DateTime issued, expires;
                string image_mime;
                byte [] image;
-               Collection<EndpointAddress> token_services =
-                       new Collection<EndpointAddress> ();
+               Collection<TokenService> token_services =
+                       new Collection<TokenService> ();
                Collection<Uri> supported_token_types = new Collection<Uri> ();
                Collection<ClaimTypeDefinition> supported_claim_types =
                        new Collection<ClaimTypeDefinition> ();
@@ -179,7 +278,9 @@
                                     reader.MoveToContent ()) {
                                        reader.ReadStartElement 
("TokenService", ns);
                                        reader.MoveToContent ();
-                                       token_services.Add 
(EndpointAddress.ReadFrom (reader));
+                                       TokenService ts = new TokenService ();
+                                       ts.ReadXml (reader);
+                                       token_services.Add (ts);
                                        reader.MoveToContent ();
                                        reader.ReadEndElement ();
                                }
@@ -288,10 +389,9 @@
                        if (token_services.Count > 0) {
                                
                                writer.WriteStartElement ("TokenServiceList", 
ns);
-                               foreach (EndpointAddress ea in token_services) {
+                               foreach (TokenService ts in token_services) {
                                        writer.WriteStartElement 
("TokenService", ns);
-                                       // FIXME: do we need different ones?
-                                       ea.WriteTo 
(AddressingVersion.WSAddressing10, writer);
+                                       ts.WriteXml (writer);
                                        writer.WriteEndElement ();
                                }
                                writer.WriteEndElement ();

Modified: 
trunk/olive/class/Mono.ServiceModel.IdentitySelectors/Test/Mono.IdentityModel.Selectors/ChangeLog
===================================================================
--- 
trunk/olive/class/Mono.ServiceModel.IdentitySelectors/Test/Mono.IdentityModel.Selectors/ChangeLog
   2007-04-27 07:57:43 UTC (rev 76370)
+++ 
trunk/olive/class/Mono.ServiceModel.IdentitySelectors/Test/Mono.IdentityModel.Selectors/ChangeLog
   2007-04-27 08:02:18 UTC (rev 76371)
@@ -1,3 +1,7 @@
+2007-04-27  Atsushi Enomoto  <[EMAIL PROTECTED]>
+
+       * IdentityCardTest.cs : some flexibility on xml declarations.
+
 2007-04-26  Atsushi Enomoto  <[EMAIL PROTECTED]>
 
        * IdentityCardEncryptionTest.cs : added encryption test (roundtrip).

Modified: 
trunk/olive/class/Mono.ServiceModel.IdentitySelectors/Test/Mono.IdentityModel.Selectors/IdentityCardTest.cs
===================================================================
--- 
trunk/olive/class/Mono.ServiceModel.IdentitySelectors/Test/Mono.IdentityModel.Selectors/IdentityCardTest.cs
 2007-04-27 07:57:43 UTC (rev 76370)
+++ 
trunk/olive/class/Mono.ServiceModel.IdentitySelectors/Test/Mono.IdentityModel.Selectors/IdentityCardTest.cs
 2007-04-27 08:02:18 UTC (rev 76371)
@@ -61,14 +61,18 @@
                        ic.Load (XmlReader.Create (file));
                        MemoryStream ms = new MemoryStream ();
                        XmlWriterSettings xws = new XmlWriterSettings ();
+                       xws.OmitXmlDeclaration = true;
                        using (XmlWriter xw = XmlWriter.Create (ms, xws)) {
                                ic.Save (xw);
                        }
-                       string actual = new StreamReader (new MemoryStream 
(ms.ToArray ())).ReadToEnd ();
                        XmlDocument doc = new XmlDocument ();
                        doc.Load (file);
+                       if (doc.FirstChild is XmlDeclaration)
+                               doc.RemoveChild (doc.FirstChild);
                        string expected = doc.OuterXml;
-                       Assert.AreEqual (expected, actual);
+                       doc.Load (new MemoryStream (ms.ToArray ()));
+                       string actual = doc.OuterXml;
+                       Assert.AreEqual (expected, actual, file);
                }
        }
 }

Modified: 
trunk/olive/class/Mono.ServiceModel.IdentitySelectors/resources/ChangeLog
===================================================================
--- trunk/olive/class/Mono.ServiceModel.IdentitySelectors/resources/ChangeLog   
2007-04-27 07:57:43 UTC (rev 76370)
+++ trunk/olive/class/Mono.ServiceModel.IdentitySelectors/resources/ChangeLog   
2007-04-27 08:02:18 UTC (rev 76371)
@@ -1,3 +1,8 @@
+2007-04-27  Atsushi Enomoto  <[EMAIL PROTECTED]>
+
+       * schemas-xmlsoap-or-ws-2005-05-identity.rnc : TokenService element
+         also contains UserCredential.
+
 2007-04-18  Atsushi Enomoto  <[EMAIL PROTECTED]>
 
        * schemas-xmlsoap-or-ws-2005-05-identity.rnc : initial commit.

Modified: 
trunk/olive/class/Mono.ServiceModel.IdentitySelectors/resources/schemas-xmlsoap-or-ws-2005-05-identity.rnc
===================================================================
--- 
trunk/olive/class/Mono.ServiceModel.IdentitySelectors/resources/schemas-xmlsoap-or-ws-2005-05-identity.rnc
  2007-04-27 07:57:43 UTC (rev 76370)
+++ 
trunk/olive/class/Mono.ServiceModel.IdentitySelectors/resources/schemas-xmlsoap-or-ws-2005-05-identity.rnc
  2007-04-27 08:02:18 UTC (rev 76371)
@@ -2,7 +2,9 @@
 datatypes xs = "http://www.w3.org/2001/XMLSchema";
 namespace wst = "http://schemas.xmlsoap.org/ws/2005/02/trust";
 
-element  RoamingStore {
+grammar {
+
+start = element  RoamingStore {
   element  RoamingInformationCard {
     element  InformationCardMetaData {
       attribute  xml:lang { text },
@@ -38,6 +40,10 @@
                 }
               }
             }?
+          },
+          element  UserCredential {
+            element DisplayCredentialHint { any* },
+            credentialElement
           }
         }+
       }?,
@@ -69,3 +75,22 @@
     }
   }+
 }
+
+any-content =
+       element * { attribute * { text }* | any-content* } |
+       text
+
+credentialElement =
+  element  UsernamePasswordCredential {
+    element  Username { text }?
+  } |
+  element  X509V3Credential {
+    # specified in xmldsig schema
+    any-content
+  } |
+  element  KerberosV5Credential { attribute * { text}* } |
+  element  SelfIssuedCredential {
+    element  PrivatePersonalIdentifier { any-content }
+  }
+
+}

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to