You've already forked linux-packaging-mono
							
							
		
			
	
	
		
			91 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			91 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|   | //------------------------------------------------------------ | ||
|  | // Copyright (c) Microsoft Corporation.  All rights reserved. | ||
|  | //------------------------------------------------------------ | ||
|  | 
 | ||
|  | namespace System.IdentityModel.Tokens | ||
|  | { | ||
|  |     using System.Globalization; | ||
|  | 
 | ||
|  |     public class LocalIdKeyIdentifierClause : SecurityKeyIdentifierClause | ||
|  |     { | ||
|  |         readonly string localId; | ||
|  |         readonly Type[] ownerTypes; | ||
|  | 
 | ||
|  |         public LocalIdKeyIdentifierClause(string localId) | ||
|  |             : this(localId, (Type[])null) | ||
|  |         { | ||
|  |         } | ||
|  | 
 | ||
|  |         public LocalIdKeyIdentifierClause(string localId, Type ownerType) | ||
|  |             : this(localId, ownerType == null ? (Type[])null : new Type[] { ownerType }) | ||
|  |         { | ||
|  |         } | ||
|  | 
 | ||
|  |         public LocalIdKeyIdentifierClause(string localId, byte[] derivationNonce, int derivationLength, Type ownerType) | ||
|  |             : this(null, derivationNonce, derivationLength, ownerType == null ? (Type[])null : new Type[] { ownerType }) | ||
|  |         { | ||
|  |         } | ||
|  | 
 | ||
|  |         internal LocalIdKeyIdentifierClause(string localId, Type[] ownerTypes) | ||
|  |             : this(localId, null, 0, ownerTypes) | ||
|  |         { | ||
|  |         } | ||
|  | 
 | ||
|  |         internal LocalIdKeyIdentifierClause(string localId, byte[] derivationNonce, int derivationLength, Type[] ownerTypes) | ||
|  |             : base(null, derivationNonce, derivationLength) | ||
|  |         { | ||
|  |             if (localId == null) | ||
|  |             { | ||
|  |                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("localId"); | ||
|  |             } | ||
|  |             if (localId == string.Empty) | ||
|  |             { | ||
|  |                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(SR.GetString(SR.LocalIdCannotBeEmpty)); | ||
|  |             } | ||
|  |             this.localId = localId; | ||
|  |             this.ownerTypes = ownerTypes; | ||
|  |         } | ||
|  | 
 | ||
|  |         public string LocalId | ||
|  |         { | ||
|  |             get { return this.localId; } | ||
|  |         } | ||
|  | 
 | ||
|  |         public Type OwnerType | ||
|  |         { | ||
|  |             get { return (this.ownerTypes == null || this.ownerTypes.Length == 0) ? null : this.ownerTypes[0]; } | ||
|  |         } | ||
|  | 
 | ||
|  |         public override bool Matches(SecurityKeyIdentifierClause keyIdentifierClause) | ||
|  |         { | ||
|  |             LocalIdKeyIdentifierClause that = keyIdentifierClause as LocalIdKeyIdentifierClause; | ||
|  | 
 | ||
|  |             // PreSharp Bug: Parameter 'that' to this public method must be validated: A null-dereference can occur here. | ||
|  | #pragma warning suppress 56506 | ||
|  |             return ReferenceEquals(this, that) || (that != null && that.Matches(this.localId, this.OwnerType)); | ||
|  |         } | ||
|  | 
 | ||
|  |         public bool Matches(string localId, Type ownerType) | ||
|  |         { | ||
|  |             if (string.IsNullOrEmpty(localId)) | ||
|  |                 return false; | ||
|  |             if (this.localId != localId) | ||
|  |                 return false; | ||
|  |             if (this.ownerTypes == null || ownerType == null) | ||
|  |                 return true; | ||
|  | 
 | ||
|  |             for (int i = 0; i < this.ownerTypes.Length; ++i) | ||
|  |             { | ||
|  |                 if (this.ownerTypes[i] == null || this.ownerTypes[i] == ownerType) | ||
|  |                     return true; | ||
|  |             } | ||
|  |             return false; | ||
|  |         } | ||
|  | 
 | ||
|  |         public override string ToString() | ||
|  |         { | ||
|  |             return string.Format(CultureInfo.InvariantCulture, "LocalIdKeyIdentifierClause(LocalId = '{0}', Owner = '{1}')", this.LocalId, this.OwnerType); | ||
|  |         } | ||
|  |     } | ||
|  | } |