Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / Tokens / X509SubjectKeyIdentifierClause.cs / 1 / X509SubjectKeyIdentifierClause.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.IdentityModel.Tokens
{
using System.Globalization;
using System.Security.Cryptography.X509Certificates;
public class X509SubjectKeyIdentifierClause : BinaryKeyIdentifierClause
{
const string SubjectKeyIdentifierOid = "2.5.29.14";
const int SkiDataOffset = 2;
public X509SubjectKeyIdentifierClause(byte[] ski)
: this(ski, true)
{
}
internal X509SubjectKeyIdentifierClause(byte[] ski, bool cloneBuffer)
: base(null, ski, cloneBuffer)
{
}
static byte[] GetSkiRawData(X509Certificate2 certificate)
{
if (certificate == null)
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("certificate");
X509SubjectKeyIdentifierExtension skiExtension =
certificate.Extensions[SubjectKeyIdentifierOid] as X509SubjectKeyIdentifierExtension;
if (skiExtension != null)
{
return skiExtension.RawData;
}
else
{
return null;
}
}
public byte[] GetX509SubjectKeyIdentifier()
{
return GetBuffer();
}
public bool Matches(X509Certificate2 certificate)
{
if (certificate == null)
return false;
byte[] data = GetSkiRawData(certificate);
return data != null && Matches(data, SkiDataOffset);
}
public static bool TryCreateFrom(X509Certificate2 certificate, out X509SubjectKeyIdentifierClause keyIdentifierClause)
{
byte[] data = GetSkiRawData(certificate);
keyIdentifierClause = null;
if (data != null)
{
byte[] ski = SecurityUtils.CloneBuffer(data, SkiDataOffset, data.Length - SkiDataOffset);
keyIdentifierClause = new X509SubjectKeyIdentifierClause(ski, false);
}
return keyIdentifierClause != null;
}
public static bool CanCreateFrom(X509Certificate2 certificate)
{
return null != GetSkiRawData(certificate);
}
public override string ToString()
{
return string.Format(CultureInfo.InvariantCulture, "X509SubjectKeyIdentifierClause(SKI = 0x{0})", ToHexString());
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- EdmFunctions.cs
- BindableAttribute.cs
- CorrelationActionMessageFilter.cs
- OpenTypeCommon.cs
- LinkLabel.cs
- ExtendLockCommand.cs
- UrlMappingCollection.cs
- BaseCAMarshaler.cs
- IItemProperties.cs
- BuilderPropertyEntry.cs
- ButtonChrome.cs
- MarshalDirectiveException.cs
- WebRequestModuleElement.cs
- BitmapFrameDecode.cs
- OutputScopeManager.cs
- LinkedList.cs
- ExternalException.cs
- XmlWrappingReader.cs
- ListControlStringCollectionEditor.cs
- UnionCqlBlock.cs
- MasterPage.cs
- SqlConnectionManager.cs
- RSAPKCS1SignatureFormatter.cs
- Transform3DCollection.cs
- ExpressionTextBox.xaml.cs
- Floater.cs
- Style.cs
- EntityAdapter.cs
- RangeBase.cs
- WsrmFault.cs
- ProcessModelSection.cs
- ControlPager.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- InstanceOwner.cs
- SynchronizedInputPattern.cs
- Config.cs
- ServiceOperationInfoTypeConverter.cs
- EntityDesignPluralizationHandler.cs
- InputScopeNameConverter.cs
- HttpRuntimeSection.cs
- HtmlInputHidden.cs
- XmlBinaryReader.cs
- UrlAuthFailedErrorFormatter.cs
- NetworkInformationException.cs
- Point3DCollection.cs
- BaseInfoTable.cs
- EnumType.cs
- SubMenuStyle.cs
- DateTimeConverter.cs
- NetSectionGroup.cs
- WorkflowInstance.cs
- SqlDelegatedTransaction.cs
- ArraySubsetEnumerator.cs
- RefreshEventArgs.cs
- TriggerAction.cs
- SortAction.cs
- PartManifestEntry.cs
- ApplicationSecurityManager.cs
- ManagementEventWatcher.cs
- Collection.cs
- ReadingWritingEntityEventArgs.cs
- SectionInput.cs
- ContractNamespaceAttribute.cs
- StructuredType.cs
- complextypematerializer.cs
- RegularExpressionValidator.cs
- input.cs
- SafeNativeMethods.cs
- SqlDataSourceView.cs
- ZipIOLocalFileHeader.cs
- XamlVector3DCollectionSerializer.cs
- XmlDataImplementation.cs
- NotImplementedException.cs
- UICuesEvent.cs
- WebPartConnectVerb.cs
- QilTypeChecker.cs
- DSASignatureDeformatter.cs
- ScopedKnownTypes.cs
- JsonWriterDelegator.cs
- Int32Animation.cs
- StyleBamlRecordReader.cs
- InfiniteIntConverter.cs
- ClientSettingsStore.cs
- BooleanConverter.cs
- UnsafeNetInfoNativeMethods.cs
- ExpandButtonVisibilityConverter.cs
- WebPartCancelEventArgs.cs
- ResourceContainer.cs
- WebPartDeleteVerb.cs
- AttachedProperty.cs
- ContentPlaceHolderDesigner.cs
- MatrixAnimationUsingPath.cs
- FormsIdentity.cs
- BindingSource.cs
- SortDescription.cs
- ElementHostPropertyMap.cs
- PageCatalogPartDesigner.cs
- PathSegment.cs
- IntersectQueryOperator.cs
- QuaternionRotation3D.cs