File: System\ServiceModel\Security\MessageSecurityTokenVersion.cs
Web Access
Project: src\src\System.ServiceModel.Primitives\src\System.ServiceModel.Primitives.csproj (System.ServiceModel.Primitives)
// 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.
 
 
using System.Collections.ObjectModel;
using System.IdentityModel.Selectors;
 
namespace System.ServiceModel.Security
{
    public sealed class MessageSecurityTokenVersion : SecurityTokenVersion
    {
        private string _toString;
        private ReadOnlyCollection<string> _supportedSpecs;
 
        private const string bsp10ns = @"http://ws-i.org/profiles/basic-security/core/1.0";
        private static MessageSecurityTokenVersion s_wss10bsp10 = new MessageSecurityTokenVersion(
            SecurityVersion.WSSecurity10,
            TrustVersion.WSTrustFeb2005,
            SecureConversationVersion.WSSecureConversationFeb2005,
            "WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005BasicSecurityProfile10",
            true,
            XD.SecurityJan2004Dictionary.Namespace.Value,
            XD.TrustFeb2005Dictionary.Namespace.Value,
            XD.SecureConversationFeb2005Dictionary.Namespace.Value,
            bsp10ns);
        private static MessageSecurityTokenVersion s_wss11bsp10 = new MessageSecurityTokenVersion(
            SecurityVersion.WSSecurity11,
            TrustVersion.WSTrustFeb2005,
            SecureConversationVersion.WSSecureConversationFeb2005,
            "WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005BasicSecurityProfile10",
            true,
            XD.SecurityXXX2005Dictionary.Namespace.Value,
            XD.TrustFeb2005Dictionary.Namespace.Value,
            XD.SecureConversationFeb2005Dictionary.Namespace.Value,
            bsp10ns);
        private static MessageSecurityTokenVersion s_wss10oasisdec2005bsp10 = new MessageSecurityTokenVersion(
            SecurityVersion.WSSecurity10,
            TrustVersion.WSTrust13,
            SecureConversationVersion.WSSecureConversation13,
            "WSSecurity10WSTrust13WSSecureConversation13BasicSecurityProfile10",
            true,
            XD.SecurityXXX2005Dictionary.Namespace.Value,
            DXD.TrustDec2005Dictionary.Namespace.Value,
            DXD.SecureConversationDec2005Dictionary.Namespace.Value
            );
        private static MessageSecurityTokenVersion s_wss11oasisdec2005 = new MessageSecurityTokenVersion(
            SecurityVersion.WSSecurity11,
            TrustVersion.WSTrust13,
            SecureConversationVersion.WSSecureConversation13,
            "WSSecurity11WSTrust13WSSecureConversation13",
            false,
            XD.SecurityJan2004Dictionary.Namespace.Value,
            DXD.TrustDec2005Dictionary.Namespace.Value,
            DXD.SecureConversationDec2005Dictionary.Namespace.Value
            );
        private static MessageSecurityTokenVersion s_wss11oasisdec2005bsp10 = new MessageSecurityTokenVersion(
            SecurityVersion.WSSecurity11,
            TrustVersion.WSTrust13,
            SecureConversationVersion.WSSecureConversation13,
            "WSSecurity11WSTrust13WSSecureConversation13BasicSecurityProfile10",
            true,
            XD.SecurityXXX2005Dictionary.Namespace.Value,
            DXD.TrustDec2005Dictionary.Namespace.Value,
            DXD.SecureConversationDec2005Dictionary.Namespace.Value
            );
 
        public static MessageSecurityTokenVersion WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005 { get; } = new MessageSecurityTokenVersion(
            SecurityVersion.WSSecurity11,
            TrustVersion.WSTrustFeb2005,
            SecureConversationVersion.WSSecureConversationFeb2005,
            "WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005",
            false,
            XD.SecurityXXX2005Dictionary.Namespace.Value,
            XD.TrustFeb2005Dictionary.Namespace.Value,
            XD.SecureConversationFeb2005Dictionary.Namespace.Value);
 
        public static MessageSecurityTokenVersion WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005BasicSecurityProfile10
        {
            get
            {
                return s_wss11bsp10;
            }
        }
 
        public static MessageSecurityTokenVersion WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005BasicSecurityProfile10
        {
            get
            {
                return s_wss10bsp10;
            }
        }
 
        public static MessageSecurityTokenVersion WSSecurity10WSTrust13WSSecureConversation13BasicSecurityProfile10
        {
            get
            {
                return s_wss10oasisdec2005bsp10;
            }
        }
 
        public static MessageSecurityTokenVersion WSSecurity11WSTrust13WSSecureConversation13
        {
            get
            {
                return s_wss11oasisdec2005;
            }
        }
 
        public static MessageSecurityTokenVersion WSSecurity11WSTrust13WSSecureConversation13BasicSecurityProfile10
        {
            get
            {
                return s_wss11oasisdec2005bsp10;
            }
        }
 
        public static MessageSecurityTokenVersion GetSecurityTokenVersion(SecurityVersion version, bool emitBspAttributes)
        {
            if (version == SecurityVersion.WSSecurity10)
            {
                if (emitBspAttributes)
                {
                    return MessageSecurityTokenVersion.WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005BasicSecurityProfile10;
                }
                else
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException());
                }
            }
            else if (version == SecurityVersion.WSSecurity11)
            {
                if (emitBspAttributes)
                {
                    return MessageSecurityTokenVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005BasicSecurityProfile10;
                }
                else
                {
                    return MessageSecurityTokenVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005;
                }
            }
            else
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException());
            }
        }
 
        private MessageSecurityTokenVersion(SecurityVersion securityVersion, TrustVersion trustVersion, SecureConversationVersion secureConversationVersion, string toString, bool emitBspRequiredAttributes, params string[] supportedSpecs)
            : base()
        {
            EmitBspRequiredAttributes = emitBspRequiredAttributes;
            _supportedSpecs = new ReadOnlyCollection<string>(supportedSpecs);
            _toString = toString;
            SecurityVersion = securityVersion;
            TrustVersion = trustVersion;
            SecureConversationVersion = secureConversationVersion;
        }
 
        public bool EmitBspRequiredAttributes { get; }
 
        public SecurityVersion SecurityVersion { get; }
 
        public TrustVersion TrustVersion { get; }
 
        public SecureConversationVersion SecureConversationVersion { get; }
 
        public override ReadOnlyCollection<string> GetSecuritySpecifications()
        {
            return _supportedSpecs;
        }
 
        public override string ToString()
        {
            return _toString;
        }
    }
}