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
- Compiler.cs
- ZipIOCentralDirectoryBlock.cs
- XmlException.cs
- WebErrorHandler.cs
- XpsPackagingException.cs
- WinEventTracker.cs
- RadioButtonRenderer.cs
- PersianCalendar.cs
- RenderData.cs
- Script.cs
- RtfControls.cs
- StructuralObject.cs
- BinaryFormatterWriter.cs
- StateInitialization.cs
- DataColumnMappingCollection.cs
- LassoHelper.cs
- cryptoapiTransform.cs
- TraceContextRecord.cs
- BitVector32.cs
- AstNode.cs
- IsolationInterop.cs
- ByeOperation11AsyncResult.cs
- ProtocolsSection.cs
- ExpressionParser.cs
- ByteKeyFrameCollection.cs
- AQNBuilder.cs
- WebPartDisplayMode.cs
- TaskFormBase.cs
- PrintDocument.cs
- X509ChainElement.cs
- BitmapCodecInfoInternal.cs
- DataGridViewCheckBoxCell.cs
- DebugController.cs
- XamlStream.cs
- FtpWebResponse.cs
- ListControlConvertEventArgs.cs
- Slider.cs
- Emitter.cs
- Int64.cs
- ClientRoleProvider.cs
- BuildProviderUtils.cs
- NavigationExpr.cs
- SignedInfo.cs
- querybuilder.cs
- SqlCachedBuffer.cs
- Effect.cs
- FrameworkElementFactoryMarkupObject.cs
- GPRECT.cs
- DataGridViewAdvancedBorderStyle.cs
- ParseElement.cs
- SuppressMergeCheckAttribute.cs
- WindowsGraphics2.cs
- ProviderIncompatibleException.cs
- FieldNameLookup.cs
- RoutedCommand.cs
- TraceXPathNavigator.cs
- SoapServerProtocol.cs
- PolyLineSegment.cs
- WebConfigurationHost.cs
- PhysicalFontFamily.cs
- ReturnValue.cs
- UnmanagedMemoryStream.cs
- CodeSpit.cs
- TokenBasedSet.cs
- HtmlTableCellCollection.cs
- ToolBarOverflowPanel.cs
- EdmProviderManifest.cs
- FixedSOMGroup.cs
- ConfigurationSectionGroup.cs
- BindValidator.cs
- SmtpLoginAuthenticationModule.cs
- _ListenerAsyncResult.cs
- DataGridCaption.cs
- AppDomain.cs
- DataBoundLiteralControl.cs
- Point3DAnimationBase.cs
- ConnectivityStatus.cs
- CreationContext.cs
- FileNotFoundException.cs
- ChangesetResponse.cs
- TextPenaltyModule.cs
- ProgressChangedEventArgs.cs
- TextAutomationPeer.cs
- WebDisplayNameAttribute.cs
- HwndSourceKeyboardInputSite.cs
- CodeExpressionCollection.cs
- ReceiveErrorHandling.cs
- Compilation.cs
- _LocalDataStoreMgr.cs
- MemoryFailPoint.cs
- Socket.cs
- ProcessInfo.cs
- TdsParser.cs
- CustomError.cs
- TextEditorSpelling.cs
- SqlUtil.cs
- Highlights.cs
- CqlParser.cs
- _LocalDataStore.cs
- SystemIPAddressInformation.cs