|
//-----------------------------------------------------------------------
// <copyright file="Saml2Id.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//-----------------------------------------------------------------------
namespace System.IdentityModel.Tokens
{
using System;
using System.Xml;
/// <summary>
/// Represents the identifier used for SAML assertions.
/// </summary>
/// <details>
/// This identifier should be unique per [Saml2Core, 1.3.4]
/// and must fit the NCName xml schema definition, which is to say that
/// it must begin with a letter or underscore.
/// </details>
public class Saml2Id
{
private string value;
/// <summary>
/// Creates a new ID value based on a GUID.
/// </summary>
public Saml2Id()
: this(System.IdentityModel.UniqueId.CreateRandomId())
{
}
/// <summary>
/// Creates a new ID whose value is the given string.
/// </summary>
/// <param name="value">The Saml2 Id.</param>
/// <exception cref="ArgumentException">If the value is not a valid NCName.</exception>
public Saml2Id(string value)
{
if (string.IsNullOrEmpty(value))
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("value");
}
try
{
this.value = XmlConvert.VerifyNCName(value);
}
catch (XmlException e)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(
new ArgumentException(SR.GetString(SR.ID4128), "value", e));
}
}
/// <summary>
/// Gets the identifier string.
/// </summary>
public string Value
{
get { return this.value; }
}
/// <summary>
/// Compares two <see cref="Saml2Id"/> for equality.
/// </summary>
/// <param name="obj">Object to campare to.</param>
/// <returns>True if this equals object. False otherwise.</returns>
public override bool Equals(object obj)
{
if (Object.ReferenceEquals(this, obj))
{
return true;
}
Saml2Id other = obj as Saml2Id;
#pragma warning suppress 56506 // PreSharp thinks other can be null-dereffed here
return (null != other) && StringComparer.Ordinal.Equals(this.value, other.Value);
}
/// <summary>
/// Gets the hash code for the <see cref="Saml2Id"/> as an integer.
/// </summary>
/// <returns>The hash code for this object.</returns>
public override int GetHashCode()
{
return this.value.GetHashCode();
}
/// <summary>
/// Gets the <see cref="Saml2Id"/> in text format.
/// </summary>
/// <returns>The string representation of this object.</returns>
public override string ToString()
{
return this.value;
}
}
}
|