Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / X509CertificateEndpointIdentity.cs / 1 / X509CertificateEndpointIdentity.cs
//---------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel { using System; using System.IdentityModel.Claims; using System.IdentityModel.Policy; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.Xml; using System.Xml.Serialization; public class X509CertificateEndpointIdentity : EndpointIdentity { X509Certificate2Collection certificateCollection = new X509Certificate2Collection(); public X509CertificateEndpointIdentity(X509Certificate2 certificate) { if (certificate == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("certificate"); base.Initialize(new Claim(ClaimTypes.Thumbprint, certificate.GetCertHash(), Rights.PossessProperty)); this.certificateCollection.Add(certificate); } public X509CertificateEndpointIdentity(X509Certificate2 primaryCertificate, X509Certificate2Collection supportingCertificates) { if (primaryCertificate == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("primaryCertificate"); if (supportingCertificates == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("supportingCertificates"); base.Initialize(new Claim(ClaimTypes.Thumbprint, primaryCertificate.GetCertHash(), Rights.PossessProperty)); this.certificateCollection.Add(primaryCertificate); for (int i = 0; i < supportingCertificates.Count; ++i) { this.certificateCollection.Add(supportingCertificates[i]); } } internal X509CertificateEndpointIdentity(XmlDictionaryReader reader) { if (reader == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("reader"); reader.MoveToContent(); if (reader.IsEmptyElement) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.GetString(SR.UnexpectedEmptyElementExpectingClaim, XD.AddressingDictionary.X509v3Certificate.Value, XD.AddressingDictionary.IdentityExtensionNamespace.Value))); reader.ReadStartElement(XD.XmlSignatureDictionary.X509Data, XD.XmlSignatureDictionary.Namespace); while (reader.IsStartElement(XD.XmlSignatureDictionary.X509Certificate, XD.XmlSignatureDictionary.Namespace)) { X509Certificate2 certificate = new X509Certificate2(Convert.FromBase64String(reader.ReadElementString())); if (this.certificateCollection.Count == 0) { // This is the first certificate. We assume this as the primary // certificate and initialize the base class. base.Initialize(new Claim(ClaimTypes.Thumbprint, certificate.GetCertHash(), Rights.PossessProperty)); } this.certificateCollection.Add(certificate); } reader.ReadEndElement(); if (this.certificateCollection.Count == 0) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.GetString(SR.UnexpectedEmptyElementExpectingClaim, XD.AddressingDictionary.X509v3Certificate.Value, XD.AddressingDictionary.IdentityExtensionNamespace.Value))); } public X509Certificate2Collection Certificates { get { return this.certificateCollection; } } internal override void WriteContentsTo(XmlDictionaryWriter writer) { if (writer == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("writer"); writer.WriteStartElement(XD.XmlSignatureDictionary.Prefix.Value, XD.XmlSignatureDictionary.KeyInfo, XD.XmlSignatureDictionary.Namespace); writer.WriteStartElement(XD.XmlSignatureDictionary.Prefix.Value, XD.XmlSignatureDictionary.X509Data, XD.XmlSignatureDictionary.Namespace); for (int i = 0; i < certificateCollection.Count; ++i) { writer.WriteElementString(XD.XmlSignatureDictionary.X509Certificate, XD.XmlSignatureDictionary.Namespace, Convert.ToBase64String(certificateCollection[i].RawData)); } writer.WriteEndElement(); writer.WriteEndElement(); } } } // 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
- UnmanagedMemoryStreamWrapper.cs
- MenuTracker.cs
- ItemCheckedEvent.cs
- LabelAutomationPeer.cs
- Decorator.cs
- CallContext.cs
- _LocalDataStoreMgr.cs
- TreeViewImageKeyConverter.cs
- XmlBindingWorker.cs
- ToolBarPanel.cs
- CalendarSelectionChangedEventArgs.cs
- Update.cs
- TraceHandler.cs
- SecurityRuntime.cs
- WebProxyScriptElement.cs
- AdCreatedEventArgs.cs
- IChannel.cs
- StreamReader.cs
- MenuCommandService.cs
- PersonalizationProvider.cs
- FontDialog.cs
- EndpointReference.cs
- TraceSection.cs
- UIElementPropertyUndoUnit.cs
- WebException.cs
- uribuilder.cs
- AstTree.cs
- CallbackHandler.cs
- PresentationAppDomainManager.cs
- __ComObject.cs
- XsltArgumentList.cs
- SafeEventHandle.cs
- Cell.cs
- IIS7WorkerRequest.cs
- ScriptingRoleServiceSection.cs
- NullableLongMinMaxAggregationOperator.cs
- EventManager.cs
- KeyGestureValueSerializer.cs
- CommandSet.cs
- PointF.cs
- EntityProviderServices.cs
- HebrewCalendar.cs
- RenderingEventArgs.cs
- BitmapSourceSafeMILHandle.cs
- TripleDES.cs
- WindowsTitleBar.cs
- ProviderBase.cs
- TypedElement.cs
- SafePointer.cs
- VersionedStreamOwner.cs
- DeploymentSectionCache.cs
- SafeArrayRankMismatchException.cs
- DataServiceExpressionVisitor.cs
- UIElement3D.cs
- ResourceReferenceExpressionConverter.cs
- StylusPointProperties.cs
- SHA256Managed.cs
- EntityCommandCompilationException.cs
- EventDescriptorCollection.cs
- ZipIOBlockManager.cs
- SqlTransaction.cs
- StoreContentChangedEventArgs.cs
- ColorBlend.cs
- UndoUnit.cs
- SuppressMessageAttribute.cs
- ToolstripProfessionalRenderer.cs
- PointUtil.cs
- CustomTypeDescriptor.cs
- OutputCacheModule.cs
- ResourceProviderFactory.cs
- TaiwanLunisolarCalendar.cs
- WebPartVerbCollection.cs
- DataExpression.cs
- InternalDuplexBindingElement.cs
- SolidColorBrush.cs
- ObjectConverter.cs
- XpsFixedDocumentReaderWriter.cs
- EdmToObjectNamespaceMap.cs
- XomlCompilerResults.cs
- ConstraintStruct.cs
- EntityDataSourceChangingEventArgs.cs
- NumberSubstitution.cs
- CrossContextChannel.cs
- TabletCollection.cs
- TextHidden.cs
- DesignerActionGlyph.cs
- DataServiceExpressionVisitor.cs
- OLEDB_Util.cs
- ColorMap.cs
- ActiveXSite.cs
- StrongNameMembershipCondition.cs
- Assert.cs
- CompoundFileStorageReference.cs
- PropertyChangedEventManager.cs
- TrustManager.cs
- TreeNodeMouseHoverEvent.cs
- ValueUnavailableException.cs
- CommentAction.cs
- FormsAuthenticationTicket.cs
- DiscriminatorMap.cs