diff options
author | Alexander Köplinger <alex.koeplinger@outlook.com> | 2016-10-13 00:18:30 +0300 |
---|---|---|
committer | Alexander Köplinger <alex.koeplinger@outlook.com> | 2016-10-13 00:20:57 +0300 |
commit | 34f6aab87e86e4ad31eeb3fa0e5b3091079ddd97 (patch) | |
tree | 212c7828882db3a6e319e639041a6727a9446245 /mcs/class/System.IdentityModel | |
parent | b40bfda0e224a5c923cbd9fde1b09a36998880d9 (diff) |
[System.ServiceModel] Move a few types into System.IdentityModel
They were moved there in MS.NET 4.5. Added typeforwards so existing references continue to work.
Fixes https://bugzilla.xamarin.com/show_bug.cgi?id=35662
Diffstat (limited to 'mcs/class/System.IdentityModel')
8 files changed, 594 insertions, 1 deletions
diff --git a/mcs/class/System.IdentityModel/Assembly/AssemblyInfo.cs b/mcs/class/System.IdentityModel/Assembly/AssemblyInfo.cs index 4c70c66dfd6..0b98df20420 100644 --- a/mcs/class/System.IdentityModel/Assembly/AssemblyInfo.cs +++ b/mcs/class/System.IdentityModel/Assembly/AssemblyInfo.cs @@ -63,4 +63,5 @@ using System.Runtime.InteropServices; #if !MOBILE [assembly: SecurityCritical (SecurityCriticalScope.Explicit)] -#endif
\ No newline at end of file +[assembly: InternalsVisibleTo ("System.ServiceModel, PublicKey=00000000000000000400000000000000")] +#endif diff --git a/mcs/class/System.IdentityModel/System.ServiceModel.Security.Tokens/BinarySecretSecurityToken.cs b/mcs/class/System.IdentityModel/System.ServiceModel.Security.Tokens/BinarySecretSecurityToken.cs new file mode 100644 index 00000000000..464c936cc2e --- /dev/null +++ b/mcs/class/System.IdentityModel/System.ServiceModel.Security.Tokens/BinarySecretSecurityToken.cs @@ -0,0 +1,119 @@ +// +// BinarySecretSecurityToken.cs +// +// Author: +// Atsushi Enomoto <atsushi@ximian.com> +// +// Copyright (C) 2006 Novell, Inc. http://www.novell.com +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +using System; +using System.Collections.ObjectModel; +using System.Xml; +using System.IdentityModel.Policy; +using System.IdentityModel.Tokens; + +namespace System.ServiceModel.Security.Tokens +{ + public class BinarySecretSecurityToken : SecurityToken + { + ReadOnlyCollection<SecurityKey> keys; + + string id; + byte [] key; + bool allow_crypto; + DateTime valid_from = DateTime.Now.ToUniversalTime (); + + BinarySecretSecurityToken (string id, bool allowCrypto) + { + this.id = id; + allow_crypto = allowCrypto; + } + + public BinarySecretSecurityToken (byte [] key) + : this ("uuid:" + Guid.NewGuid ().ToString (), key) + { + } + + public BinarySecretSecurityToken (string id, byte [] key) + : this (id, key, false) + { + } + + protected BinarySecretSecurityToken (string id, byte [] key, bool allowCrypto) + : this (id, allowCrypto) + { + if (key == null) + throw new ArgumentNullException ("key"); + this.key = key; + + SecurityKey [] arr = new SecurityKey [] {new InMemorySymmetricSecurityKey (key)}; + keys = new ReadOnlyCollection<SecurityKey> (arr); + } + + public BinarySecretSecurityToken (int keySizeInBits) + : this ("uuid:" + Guid.NewGuid ().ToString (), keySizeInBits) + { + } + + public BinarySecretSecurityToken (string id, int keySizeInBits) + : this (id, keySizeInBits, false) + { + } + + protected BinarySecretSecurityToken (string id, int keySizeInBits, bool allowCrypto) + : this (id, allowCrypto) + { + if (keySizeInBits < 0) + throw new ArgumentOutOfRangeException ("keySizeInBits"); + + this.key = new byte [keySizeInBits >> 3 + (keySizeInBits % 8 == 0 ? 0 : 1)]; + + SecurityKey [] arr = new SecurityKey [] {new InMemorySymmetricSecurityKey (key)}; + keys = new ReadOnlyCollection<SecurityKey> (arr); + } + + public override DateTime ValidFrom { + get { return valid_from; } + } + + public override DateTime ValidTo { + get { return DateTime.MaxValue.AddDays (-1); } + } + + public override string Id { + get { return id; } + } + + public int KeySize { + get { return key.Length; } + } + + public override ReadOnlyCollection<SecurityKey> SecurityKeys { + get { return keys; } + } + + public byte [] GetKeyBytes () + { + return (byte []) key.Clone (); + } + } +} diff --git a/mcs/class/System.IdentityModel/System.ServiceModel.Security.Tokens/InternalEncryptedKeyIdentifierClause.cs b/mcs/class/System.IdentityModel/System.ServiceModel.Security.Tokens/InternalEncryptedKeyIdentifierClause.cs new file mode 100644 index 00000000000..95e43342561 --- /dev/null +++ b/mcs/class/System.IdentityModel/System.ServiceModel.Security.Tokens/InternalEncryptedKeyIdentifierClause.cs @@ -0,0 +1,51 @@ +// +// InternalEncryptedKeyIdentifierClause.cs +// +// Author: +// Atsushi Enomoto <atsushi@ximian.com> +// +// Copyright (C) 2007 Novell, Inc. http://www.novell.com +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +using System; +using System.Collections.ObjectModel; +using System.Security.Cryptography.Xml; +using System.Xml; +using System.IdentityModel.Tokens; + +namespace System.ServiceModel.Security.Tokens +{ + internal class InternalEncryptedKeyIdentifierClause : BinaryKeyIdentifierClause + { + public InternalEncryptedKeyIdentifierClause (byte [] hash) + : base (null, hash, false) + { + } + + public override bool Matches (SecurityKeyIdentifierClause keyIdentifierClause) + { + InternalEncryptedKeyIdentifierClause kic = keyIdentifierClause as InternalEncryptedKeyIdentifierClause; + if (kic == null) + return false; + return Matches (kic.GetRawBuffer ()); + } + } +} diff --git a/mcs/class/System.IdentityModel/System.ServiceModel.Security.Tokens/WrappedKeySecurityToken.cs b/mcs/class/System.IdentityModel/System.ServiceModel.Security.Tokens/WrappedKeySecurityToken.cs new file mode 100644 index 00000000000..d3c47f24328 --- /dev/null +++ b/mcs/class/System.IdentityModel/System.ServiceModel.Security.Tokens/WrappedKeySecurityToken.cs @@ -0,0 +1,176 @@ +// +// WrappedKeySecurityToken.cs +// +// Author: +// Atsushi Enomoto <atsushi@ximian.com> +// +// Copyright (C) 2006 Novell, Inc. http://www.novell.com +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +using System; +using System.Collections.ObjectModel; +using System.Security.Cryptography; +using System.Security.Cryptography.Xml; +using System.Xml; +using System.IdentityModel.Policy; +using System.IdentityModel.Tokens; + +namespace System.ServiceModel.Security.Tokens +{ + public class WrappedKeySecurityToken : SecurityToken + { + string id; + byte [] raw_key; + byte [] wrapped_key; + string wrap_alg; + SecurityToken wrap_token; + SecurityKeyIdentifier wrap_token_ref; + DateTime valid_from = DateTime.Now.ToUniversalTime (); + ReadOnlyCollection<SecurityKey> keys; + ReferenceList reference_list; + byte [] keyhash; + + public WrappedKeySecurityToken ( + string id, + byte [] keyToWrap, + string wrappingAlgorithm, + SecurityToken wrappingToken, + SecurityKeyIdentifier wrappingTokenReference) + { + if (id == null) + throw new ArgumentNullException ("id"); + if (keyToWrap == null) + throw new ArgumentNullException ("keyToWrap"); + if (wrappingAlgorithm == null) + throw new ArgumentNullException ("wrappingAlgorithm"); + if (wrappingToken == null) + throw new ArgumentNullException ("wrappingToken"); + + raw_key = keyToWrap; + this.id = id; + wrap_alg = wrappingAlgorithm; + wrap_token = wrappingToken; + wrap_token_ref = wrappingTokenReference; + Collection<SecurityKey> l = new Collection<SecurityKey> (); + foreach (SecurityKey sk in wrappingToken.SecurityKeys) { + if (sk.IsSupportedAlgorithm (wrappingAlgorithm)) { + wrapped_key = sk.EncryptKey (wrappingAlgorithm, keyToWrap); + l.Add (new InMemorySymmetricSecurityKey (keyToWrap)); + break; + } + } + keys = new ReadOnlyCollection<SecurityKey> (l); + if (wrapped_key == null) + throw new ArgumentException (String.Format ("None of the security keys in the argument token supports specified wrapping algorithm '{0}'", wrappingAlgorithm)); + } + + internal byte [] RawKey { + get { return raw_key; } + } + + // It is kind of compromised solution to output + // ReferenceList inside e:EncryptedKey and might disappear + // when non-wrapped key is represented by another token type. + internal ReferenceList ReferenceList { + get { return reference_list; } + set { reference_list = value; } + } + + public override DateTime ValidFrom { + get { return valid_from; } + } + + public override DateTime ValidTo { + get { return DateTime.MaxValue.AddDays (-1); } + } + + public override string Id { + get { return id; } + } + + public override ReadOnlyCollection<SecurityKey> SecurityKeys { + get { return keys; } + } + + public string WrappingAlgorithm { + get { return wrap_alg; } + } + + public SecurityToken WrappingToken { + get { return wrap_token; } + } + + public SecurityKeyIdentifier WrappingTokenReference { + get { return wrap_token_ref; } + } + + public byte [] GetWrappedKey () + { + return (byte []) wrapped_key.Clone (); + } + + internal void SetWrappedKey (byte [] value) + { + wrapped_key = (byte []) value.Clone (); + } + + [MonoTODO] + public override bool CanCreateKeyIdentifierClause<T> () + { + /* + foreach (SecurityKeyIdentifierClause k in WrappingTokenReference) { + Type t = k.GetType (); + if (t == typeof (T) || t.IsSubclassOf (typeof (T))) + return true; + } + */ + return false; + } + + [MonoTODO] + public override T CreateKeyIdentifierClause<T> () + { + /* + foreach (SecurityKeyIdentifierClause k in WrappingTokenReference) { + Type t = k.GetType (); + if (t == typeof (T) || t.IsSubclassOf (typeof (T))) + return (T) k; + } + */ + throw new NotSupportedException (String.Format ("WrappedKeySecurityToken cannot create '{0}'", typeof (T))); + } + + public override bool MatchesKeyIdentifierClause (SecurityKeyIdentifierClause keyIdentifierClause) + { + LocalIdKeyIdentifierClause lkic = keyIdentifierClause as LocalIdKeyIdentifierClause; + if (lkic != null && lkic.LocalId == Id) + return true; + + InternalEncryptedKeyIdentifierClause khic = keyIdentifierClause as InternalEncryptedKeyIdentifierClause; + if (keyhash == null) + keyhash = SHA1.Create ().ComputeHash (wrapped_key); + if (khic != null && khic.Matches (keyhash)) + return true; + + return false; + } + } +} diff --git a/mcs/class/System.IdentityModel/System.ServiceModel.Security/BinarySecretKeyIdentifierClause.cs b/mcs/class/System.IdentityModel/System.ServiceModel.Security/BinarySecretKeyIdentifierClause.cs new file mode 100644 index 00000000000..497d5c7fbad --- /dev/null +++ b/mcs/class/System.IdentityModel/System.ServiceModel.Security/BinarySecretKeyIdentifierClause.cs @@ -0,0 +1,87 @@ +// +// BinarySecretKeyIdentifierClause.cs +// +// Author: +// Atsushi Enomoto <atsushi@ximian.com> +// +// Copyright (C) 2006 Novell, Inc. http://www.novell.com +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +using System; +using System.Collections.Generic; +using System.Xml; +using System.IdentityModel.Policy; +using System.IdentityModel.Tokens; + +namespace System.ServiceModel.Security +{ + public class BinarySecretKeyIdentifierClause : BinaryKeyIdentifierClause + { + public BinarySecretKeyIdentifierClause (byte [] key) + : this (key, true) + { + } + + [MonoTODO ("ClauseType")] + public BinarySecretKeyIdentifierClause (byte [] key, bool cloneBuffer) + : base ("", key, cloneBuffer) + { + } + + [MonoTODO ("ClauseType")] + public BinarySecretKeyIdentifierClause (byte [] key, bool cloneBuffer, byte [] derivationNonce, int derivationLength) + : base ("", key, cloneBuffer, derivationNonce, derivationLength) + { + } + + public override bool CanCreateKey { + get { return true; } + } + + public byte [] GetKeyBytes () + { + return GetBuffer (); + } + + public override SecurityKey CreateKey () + { + return new InMemorySymmetricSecurityKey (GetRawBuffer (), true); + } + + public override bool Matches (SecurityKeyIdentifierClause clause) + { + if (clause == null) + throw new ArgumentNullException ("clause"); + BinarySecretKeyIdentifierClause other = + clause as BinarySecretKeyIdentifierClause; + if (other == null) + return false; + byte [] b1 = GetRawBuffer (); + byte [] b2 = other.GetRawBuffer (); + if (b1.Length != b2.Length) + return false; + for (int i = 0; i < b1.Length; i++) + if (b1 [i] != b2 [i]) + return false; + return true; + } + } +} diff --git a/mcs/class/System.IdentityModel/System.ServiceModel.Security/KeyNameIdentifierClause.cs b/mcs/class/System.IdentityModel/System.ServiceModel.Security/KeyNameIdentifierClause.cs new file mode 100644 index 00000000000..ad7a84a9ce1 --- /dev/null +++ b/mcs/class/System.IdentityModel/System.ServiceModel.Security/KeyNameIdentifierClause.cs @@ -0,0 +1,69 @@ +// +// KeyNameIdentifierClause.cs +// +// Author: +// Atsushi Enomoto <atsushi@ximian.com> +// +// Copyright (C) 2006 Novell, Inc. http://www.novell.com +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +using System; +using System.Collections.Generic; +using System.Xml; +using System.IdentityModel.Policy; +using System.IdentityModel.Tokens; + +namespace System.ServiceModel.Security +{ + public class KeyNameIdentifierClause : SecurityKeyIdentifierClause + { + public KeyNameIdentifierClause (string keyName) + : base (null) + { + key_name = keyName; + } + + string key_name; + + public string KeyName { + get { return key_name; } + } + + public override bool Matches (SecurityKeyIdentifierClause clause) + { + if (clause == null) + throw new ArgumentNullException ("clause"); + KeyNameIdentifierClause knic = + clause as KeyNameIdentifierClause; + return knic != null && Matches (knic.KeyName); + } + + public bool Matches (string keyName) + { + return key_name == keyName; + } + + public override string ToString () + { + return String.Concat ("KeyNameIdentifierClause(KeyName = '", KeyName, "')"); + } + } +} diff --git a/mcs/class/System.IdentityModel/System.ServiceModel.Security/SecurityContextKeyIdentifierClause.cs b/mcs/class/System.IdentityModel/System.ServiceModel.Security/SecurityContextKeyIdentifierClause.cs new file mode 100644 index 00000000000..2ac33bae679 --- /dev/null +++ b/mcs/class/System.IdentityModel/System.ServiceModel.Security/SecurityContextKeyIdentifierClause.cs @@ -0,0 +1,84 @@ +// +// SecurityContextKeyIdentifierClause.cs +// +// Author: +// Atsushi Enomoto <atsushi@ximian.com> +// +// Copyright (C) 2006 Novell, Inc. http://www.novell.com +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// + +using System.IdentityModel.Selectors; +using System.IdentityModel.Tokens; +using System.Xml; + +namespace System.ServiceModel.Security +{ + public class SecurityContextKeyIdentifierClause : SecurityKeyIdentifierClause + { + public SecurityContextKeyIdentifierClause (UniqueId contextId) + : this (contextId, new UniqueId ()) + { + } + + public SecurityContextKeyIdentifierClause (UniqueId contextId, UniqueId generation) + : this (contextId, generation, null, 0) + { + } + + public SecurityContextKeyIdentifierClause (UniqueId contextId, UniqueId generation, byte [] derivationNonce, int derivationLength) + : base (null, derivationNonce, derivationLength) + { + this.context = contextId; + this.generation = generation; + } + + UniqueId context, generation; + + public UniqueId ContextId { + get { return context; } + } + + public UniqueId Generation { + get { return generation; } + } + + public override bool Matches ( + SecurityKeyIdentifierClause keyIdentifierClause) + { + SecurityContextKeyIdentifierClause other = + keyIdentifierClause as SecurityContextKeyIdentifierClause; + return other != null && Matches (other.context, other.generation); + } + + public bool Matches (UniqueId contextId, UniqueId generation) + { + return context == contextId && + this.generation == generation; + } + + [MonoTODO] + public override string ToString () + { + return base.ToString (); + } + } +} diff --git a/mcs/class/System.IdentityModel/net_4_x_System.IdentityModel.dll.sources b/mcs/class/System.IdentityModel/net_4_x_System.IdentityModel.dll.sources index 4d705d24d57..c6ab55fe8d7 100755 --- a/mcs/class/System.IdentityModel/net_4_x_System.IdentityModel.dll.sources +++ b/mcs/class/System.IdentityModel/net_4_x_System.IdentityModel.dll.sources @@ -128,4 +128,10 @@ System.IdentityModel.Tokens/X509SubjectKeyIdentifierClause.cs System.IdentityModel.Tokens/X509ThumbprintKeyIdentifierClause.cs System.IdentityModel.Tokens/X509WindowsSecurityToken.cs System.Security.Claims/AuthenticationTypes.cs +System.ServiceModel.Security/BinarySecretKeyIdentifierClause.cs +System.ServiceModel.Security/KeyNameIdentifierClause.cs +System.ServiceModel.Security/SecurityContextKeyIdentifierClause.cs System.ServiceModel.Security/X509CertificateValidationMode.cs +System.ServiceModel.Security.Tokens/BinarySecretSecurityToken.cs +System.ServiceModel.Security.Tokens/InternalEncryptedKeyIdentifierClause.cs +System.ServiceModel.Security.Tokens/WrappedKeySecurityToken.cs |