| File: FrameworkFork\System.ServiceModel\System\IdentityModel\Tokens\XmlDsigSep2000.cs | Web Access |
| Project: src\src\dotnet-svcutil\lib\src\dotnet-svcutil-lib.csproj (dotnet-svcutil-lib) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. namespace System.IdentityModel.Tokens { using System; using System.Collections.Generic; using System.IdentityModel.Selectors; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.ServiceModel.Security; using Microsoft.Xml; using KeyIdentifierEntry = System.IdentityModel.Selectors.SecurityTokenSerializer.KeyIdentifierEntry; internal class XmlDsigSep2000 : SecurityTokenSerializer.SerializerEntries { private KeyInfoSerializer _securityTokenSerializer; public XmlDsigSep2000(KeyInfoSerializer securityTokenSerializer) { _securityTokenSerializer = securityTokenSerializer; } public override void PopulateKeyIdentifierEntries(IList<KeyIdentifierEntry> keyIdentifierEntries) { keyIdentifierEntries.Add(new KeyInfoEntry(_securityTokenSerializer)); } public override void PopulateKeyIdentifierClauseEntries(IList<SecurityTokenSerializer.KeyIdentifierClauseEntry> keyIdentifierClauseEntries) { keyIdentifierClauseEntries.Add(new KeyNameClauseEntry()); keyIdentifierClauseEntries.Add(new KeyValueClauseEntry()); keyIdentifierClauseEntries.Add(new X509CertificateClauseEntry()); } internal class KeyInfoEntry : KeyIdentifierEntry { private KeyInfoSerializer _securityTokenSerializer; public KeyInfoEntry(KeyInfoSerializer securityTokenSerializer) { _securityTokenSerializer = securityTokenSerializer; } protected override XmlDictionaryString LocalName { get { return XD.XmlSignatureDictionary.KeyInfo; } } protected override XmlDictionaryString NamespaceUri { get { return XD.XmlSignatureDictionary.Namespace; } } public override SecurityKeyIdentifier ReadKeyIdentifierCore(XmlDictionaryReader reader) { throw new NotImplementedException(); } public override bool SupportsCore(SecurityKeyIdentifier keyIdentifier) { return true; } public override void WriteKeyIdentifierCore(XmlDictionaryWriter writer, SecurityKeyIdentifier keyIdentifier) { throw new NotImplementedException(); } } // <ds:KeyName>name</ds:KeyName> internal class KeyNameClauseEntry : SecurityTokenSerializer.KeyIdentifierClauseEntry { protected override XmlDictionaryString LocalName { get { return XD.XmlSignatureDictionary.KeyName; } } protected override XmlDictionaryString NamespaceUri { get { return XD.XmlSignatureDictionary.Namespace; } } public override SecurityKeyIdentifierClause ReadKeyIdentifierClauseCore(XmlDictionaryReader reader) { throw new NotImplementedException(); } public override bool SupportsCore(SecurityKeyIdentifierClause keyIdentifierClause) { throw new NotImplementedException(); } public override void WriteKeyIdentifierClauseCore(XmlDictionaryWriter writer, SecurityKeyIdentifierClause keyIdentifierClause) { throw new NotImplementedException(); } } // so far, we only support one type of KeyValue - RSAKeyValue // <ds:KeyValue> // <ds:RSAKeyValue> // <ds:Modulus>xA7SEU+...</ds:Modulus> // <ds:Exponent>AQAB</Exponent> // </ds:RSAKeyValue> // </ds:KeyValue> internal class KeyValueClauseEntry : SecurityTokenSerializer.KeyIdentifierClauseEntry { protected override XmlDictionaryString LocalName { get { return XD.XmlSignatureDictionary.KeyValue; } } protected override XmlDictionaryString NamespaceUri { get { return XD.XmlSignatureDictionary.Namespace; } } public override SecurityKeyIdentifierClause ReadKeyIdentifierClauseCore(XmlDictionaryReader reader) { throw new NotImplementedException(); } public override bool SupportsCore(SecurityKeyIdentifierClause keyIdentifierClause) { throw new NotImplementedException(); } public override void WriteKeyIdentifierClauseCore(XmlDictionaryWriter writer, SecurityKeyIdentifierClause keyIdentifierClause) { throw new NotImplementedException(); } } // so far, we only support two types of X509Data directly under KeyInfo - X509Certificate and X509SKI // <ds:X509Data> // <ds:X509Certificate>...</ds:X509Certificate> // or // <X509SKI>... </X509SKI> // </ds:X509Data> // only support 1 certificate right now internal class X509CertificateClauseEntry : SecurityTokenSerializer.KeyIdentifierClauseEntry { protected override XmlDictionaryString LocalName { get { return XD.XmlSignatureDictionary.X509Data; } } protected override XmlDictionaryString NamespaceUri { get { return XD.XmlSignatureDictionary.Namespace; } } public override SecurityKeyIdentifierClause ReadKeyIdentifierClauseCore(XmlDictionaryReader reader) { throw new NotImplementedException(); } public override bool SupportsCore(SecurityKeyIdentifierClause keyIdentifierClause) { throw new NotImplementedException(); } public override void WriteKeyIdentifierClauseCore(XmlDictionaryWriter writer, SecurityKeyIdentifierClause keyIdentifierClause) { throw new NotImplementedException(); } } } }