You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			85 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| //------------------------------------------------------------
 | |
| // Copyright (c) Microsoft Corporation.  All rights reserved.
 | |
| //------------------------------------------------------------
 | |
| 
 | |
| namespace System.IdentityModel.Tokens
 | |
| {
 | |
|     using System.Globalization;
 | |
|     using HexBinary = System.Runtime.Remoting.Metadata.W3cXsd2001.SoapHexBinary;
 | |
| 
 | |
|     public abstract class BinaryKeyIdentifierClause : SecurityKeyIdentifierClause
 | |
|     {
 | |
|         readonly byte[] identificationData;
 | |
| 
 | |
|         protected BinaryKeyIdentifierClause(string clauseType, byte[] identificationData, bool cloneBuffer)
 | |
|             : this(clauseType, identificationData, cloneBuffer, null, 0)
 | |
|         {
 | |
|         }
 | |
| 
 | |
|         protected BinaryKeyIdentifierClause(string clauseType, byte[] identificationData, bool cloneBuffer, byte[] derivationNonce, int derivationLength)
 | |
|             : base(clauseType, derivationNonce, derivationLength)
 | |
|         {
 | |
|             if (identificationData == null)
 | |
|             {
 | |
|                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("identificationData"));
 | |
|             }
 | |
|             if (identificationData.Length == 0)
 | |
|             {
 | |
|                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("identificationData", SR.GetString(SR.LengthMustBeGreaterThanZero)));
 | |
|             }
 | |
| 
 | |
|             if (cloneBuffer)
 | |
|             {
 | |
|                 this.identificationData = SecurityUtils.CloneBuffer(identificationData);
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 this.identificationData = identificationData;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public byte[] GetBuffer()
 | |
|         {
 | |
|             return SecurityUtils.CloneBuffer(this.identificationData);
 | |
|         }
 | |
| 
 | |
|         protected byte[] GetRawBuffer()
 | |
|         {
 | |
|             return this.identificationData;
 | |
|         }
 | |
| 
 | |
|         public override bool Matches(SecurityKeyIdentifierClause keyIdentifierClause)
 | |
|         {
 | |
|             BinaryKeyIdentifierClause that = keyIdentifierClause as BinaryKeyIdentifierClause;
 | |
| 
 | |
|             // 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.identificationData));
 | |
|         }
 | |
| 
 | |
|         public bool Matches(byte[] data)
 | |
|         {
 | |
|             return Matches(data, 0);
 | |
|         }
 | |
| 
 | |
|         public bool Matches(byte[] data, int offset)
 | |
|         {
 | |
|             if (offset < 0)
 | |
|             {
 | |
|                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("offset", SR.GetString(SR.ValueMustBeNonNegative)));
 | |
|             }
 | |
|             return SecurityUtils.MatchesBuffer(this.identificationData, 0, data, offset);
 | |
|         }
 | |
| 
 | |
|         internal string ToBase64String()
 | |
|         {
 | |
|             return Convert.ToBase64String(this.identificationData);
 | |
|         }
 | |
| 
 | |
|         internal string ToHexString()
 | |
|         {
 | |
|             return new HexBinary(this.identificationData).ToString();
 | |
|         }
 | |
|     }
 | |
| }
 |