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