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
#if !MOBILE
[assembly: SecurityCritical (SecurityCriticalScope.Explicit)]
-#endif
\ No newline at end of file
+[assembly: InternalsVisibleTo ("System.ServiceModel, PublicKey=00000000000000000400000000000000")]
+#endif
--- /dev/null
+//
+// 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 ();
+ }
+ }
+}
--- /dev/null
+//
+// 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 ());
+ }
+ }
+}
--- /dev/null
+//
+// 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;
+ }
+ }
+}
--- /dev/null
+//
+// 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;
+ }
+ }
+}
--- /dev/null
+//
+// 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, "')");
+ }
+ }
+}
--- /dev/null
+//
+// 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 ();
+ }
+ }
+}
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
#endif
+#if !MOBILE
+
+[assembly: TypeForwardedTo (typeof (System.ServiceModel.Security.BinarySecretKeyIdentifierClause))]
+[assembly: TypeForwardedTo (typeof (System.ServiceModel.Security.KeyNameIdentifierClause))]
+[assembly: TypeForwardedTo (typeof (System.ServiceModel.Security.SecurityContextKeyIdentifierClause))]
+[assembly: TypeForwardedTo (typeof (System.ServiceModel.Security.X509CertificateValidationMode))]
+[assembly: TypeForwardedTo (typeof (System.ServiceModel.Security.Tokens.BinarySecretSecurityToken))]
+[assembly: TypeForwardedTo (typeof (System.ServiceModel.Security.Tokens.WrappedKeySecurityToken))]
+#endif
+++ /dev/null
-//
-// 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 ();
- }
- }
-}
+++ /dev/null
-//
-// 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 ());
- }
- }
-}
+++ /dev/null
-//
-// 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;
- }
- }
-}
+++ /dev/null
-//
-// 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;
- }
- }
-}
+++ /dev/null
-//
-// 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, "')");
- }
- }
-}
+++ /dev/null
-//
-// 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 ();
- }
- }
-}
System.ServiceModel.PeerResolvers/UnregisterInfo.cs
System.ServiceModel.PeerResolvers/UpdateInfo.cs
System.ServiceModel.Security.Tokens/AuthenticatorCommunicationObject.cs
-System.ServiceModel.Security.Tokens/BinarySecretSecurityToken.cs
System.ServiceModel.Security.Tokens/ClaimTypeRequirement.cs
System.ServiceModel.Security.Tokens/CommunicationSecurityTokenAuthenticator.cs
System.ServiceModel.Security.Tokens/CommunicationSecurityTokenProvider.cs
System.ServiceModel.Security.Tokens/IIssuanceSecurityTokenAuthenticator.cs
System.ServiceModel.Security.Tokens/ISecurityContextSecurityTokenCache.cs
System.ServiceModel.Security.Tokens/InitiatorServiceModelSecurityTokenRequirement.cs
-System.ServiceModel.Security.Tokens/InternalEncryptedKeyIdentifierClause.cs
System.ServiceModel.Security.Tokens/IssuedSecurityTokenHandler.cs
System.ServiceModel.Security.Tokens/IssuedSecurityTokenParameters.cs
System.ServiceModel.Security.Tokens/IssuedSecurityTokenProvider.cs
System.ServiceModel.Security.Tokens/TlsClientSession.cs
System.ServiceModel.Security.Tokens/TlsServerSession.cs
System.ServiceModel.Security.Tokens/UserNameSecurityTokenParameters.cs
-System.ServiceModel.Security.Tokens/WrappedKeySecurityToken.cs
System.ServiceModel.Security.Tokens/X509SecurityTokenParameters.cs
System.ServiceModel.Security/BasicSecurityProfileVersion.cs
-System.ServiceModel.Security/BinarySecretKeyIdentifierClause.cs
System.ServiceModel.Security/ChannelProtectionRequirements.cs
System.ServiceModel.Security/DataProtectionSecurityStateEncoder.cs
System.ServiceModel.Security/ExpiredSecurityTokenException.cs
System.ServiceModel.Security/IssuedTokenClientCredential.cs
System.ServiceModel.Security/IssuedTokenServiceCredential.cs
System.ServiceModel.Security/KeyEntropyMode.cs
-System.ServiceModel.Security/KeyNameIdentifierClause.cs
System.ServiceModel.Security/MessagePartSpecification.cs
System.ServiceModel.Security/MessageProtectionOrder.cs
System.ServiceModel.Security/MessageSecurityException.cs
System.ServiceModel.Security/SecureConversationVersion.cs
System.ServiceModel.Security/SecurityAccessDeniedException.cs
System.ServiceModel.Security/SecurityAlgorithmSuite.cs
-System.ServiceModel.Security/SecurityContextKeyIdentifierClause.cs
System.ServiceModel.Security/SecurityCredentialsManager.cs
System.ServiceModel.Security/SecurityMessageProperty.cs
System.ServiceModel.Security/SecurityNegotiationException.cs
System.ServiceModel.Security/PeerCredential.cs
System.ServiceModel.Security/ScopedMessagePartSpecification.cs
System.ServiceModel.Security/SecurityAlgorithmSuite.cs
-System.ServiceModel.Security/SecurityContextKeyIdentifierClause.cs
System.ServiceModel.Security/SecurityMessageProperty.cs
System.ServiceModel.Security/SecurityStateEncoder.cs
System.ServiceModel.Security/SecurityTokenAttachmentMode.cs