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
- ThaiBuddhistCalendar.cs
- UTF8Encoding.cs
- DispatcherHookEventArgs.cs
- SEHException.cs
- BinaryNode.cs
- SmtpReplyReader.cs
- MaskDesignerDialog.cs
- ResourceExpressionBuilder.cs
- EventBuilder.cs
- CorrelationToken.cs
- DefaultMemberAttribute.cs
- SecurityContext.cs
- HwndSourceParameters.cs
- TableAutomationPeer.cs
- WhileDesigner.cs
- SymmetricSecurityProtocol.cs
- ScriptRegistrationManager.cs
- _ConnectStream.cs
- SqlEnums.cs
- PropertyItemInternal.cs
- WriteableBitmap.cs
- DataKeyArray.cs
- DescendantOverDescendantQuery.cs
- ZipArchive.cs
- SqlCacheDependencyDatabase.cs
- Geometry3D.cs
- ClipboardData.cs
- Vector3DAnimationBase.cs
- TdsParserStateObject.cs
- Inflater.cs
- SystemNetHelpers.cs
- OperationResponse.cs
- MsmqInputChannelBase.cs
- COM2EnumConverter.cs
- RowToFieldTransformer.cs
- ToolBarOverflowPanel.cs
- Comparer.cs
- SimpleBitVector32.cs
- EventLogPermissionEntryCollection.cs
- PrinterSettings.cs
- FunctionGenerator.cs
- SecurityElement.cs
- NameValuePermission.cs
- BmpBitmapEncoder.cs
- UInt16.cs
- DataGridViewRowEventArgs.cs
- MetadataSet.cs
- PenLineJoinValidation.cs
- DoubleAnimationUsingKeyFrames.cs
- MessagePropertyFilter.cs
- DuplicateContext.cs
- AnnouncementInnerClient11.cs
- TransactionFilter.cs
- StrokeIntersection.cs
- CardSpacePolicyElement.cs
- X509Certificate.cs
- Deflater.cs
- Utils.cs
- Transform3DGroup.cs
- EdgeModeValidation.cs
- Comparer.cs
- XmlResolver.cs
- CacheModeValueSerializer.cs
- ArrayWithOffset.cs
- SqlCommandSet.cs
- PropertyToken.cs
- WebPartDescription.cs
- PackWebResponse.cs
- EventLogEntry.cs
- RemoteWebConfigurationHostStream.cs
- LingerOption.cs
- FlowDocumentPage.cs
- MultipleViewPatternIdentifiers.cs
- ProfileServiceManager.cs
- BevelBitmapEffect.cs
- ExpressionBuilder.cs
- InstancePersistence.cs
- XmlHelper.cs
- QualificationDataItem.cs
- RenderTargetBitmap.cs
- VirtualPathUtility.cs
- InputProviderSite.cs
- FastEncoder.cs
- MeasureItemEvent.cs
- ObjectListShowCommandsEventArgs.cs
- ResXDataNode.cs
- PanningMessageFilter.cs
- MessageQueueAccessControlEntry.cs
- EventRouteFactory.cs
- FontWeights.cs
- AlternationConverter.cs
- BitmapImage.cs
- WsdlWriter.cs
- ObjectCacheSettings.cs
- TabItem.cs
- ObjectView.cs
- FrameworkTemplate.cs
- FormViewInsertedEventArgs.cs
- IntSecurity.cs
- ObjectConverter.cs