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
- EventLogPermissionEntryCollection.cs
- CachedFontFace.cs
- ConnectionManagementSection.cs
- WindowsScrollBar.cs
- FontSizeConverter.cs
- ObfuscationAttribute.cs
- HyperLinkStyle.cs
- RectValueSerializer.cs
- ImageBrush.cs
- SiteMapHierarchicalDataSourceView.cs
- FileVersion.cs
- Graphics.cs
- CommandPlan.cs
- MouseGestureConverter.cs
- XmlKeywords.cs
- CodeDomSerializerBase.cs
- TreeIterator.cs
- EntityCommandDefinition.cs
- TextClipboardData.cs
- SID.cs
- PasswordPropertyTextAttribute.cs
- DoubleMinMaxAggregationOperator.cs
- CodeParameterDeclarationExpressionCollection.cs
- PolyBezierSegmentFigureLogic.cs
- StateManager.cs
- NamespaceExpr.cs
- DataGridItemEventArgs.cs
- TextContainerHelper.cs
- SortAction.cs
- ProgressBarRenderer.cs
- AsyncPostBackTrigger.cs
- __Filters.cs
- DrawingBrush.cs
- ColumnWidthChangedEvent.cs
- DiscreteKeyFrames.cs
- UiaCoreApi.cs
- ScrollPatternIdentifiers.cs
- HandledMouseEvent.cs
- SynchronizedPool.cs
- WebCategoryAttribute.cs
- SoundPlayerAction.cs
- DataException.cs
- TextEffect.cs
- GenericRootAutomationPeer.cs
- ToolboxComponentsCreatedEventArgs.cs
- FindCriteriaCD1.cs
- InvalidAsynchronousStateException.cs
- Span.cs
- EnvelopeVersion.cs
- InkCanvas.cs
- TrackingLocation.cs
- Span.cs
- SoapInteropTypes.cs
- TaiwanCalendar.cs
- FilterQueryOptionExpression.cs
- ZoneButton.cs
- ErrorsHelper.cs
- SqlBooleanizer.cs
- DoubleAnimationBase.cs
- HtmlInputReset.cs
- ThreadAttributes.cs
- StrongTypingException.cs
- Geometry3D.cs
- ExtensionQuery.cs
- CommonDialog.cs
- IndentedTextWriter.cs
- BufferedGraphicsManager.cs
- DateTimeFormatInfoScanner.cs
- CheckBoxAutomationPeer.cs
- InArgumentConverter.cs
- FilterUserControlBase.cs
- RadioButtonList.cs
- TargetParameterCountException.cs
- VectorValueSerializer.cs
- NameScopePropertyAttribute.cs
- MultipartContentParser.cs
- ArrayElementGridEntry.cs
- XmlNodeReader.cs
- SyndicationDeserializer.cs
- HtmlTextArea.cs
- HttpProtocolReflector.cs
- HttpCapabilitiesEvaluator.cs
- Condition.cs
- UserMapPath.cs
- BehaviorEditorPart.cs
- SecurityDescriptor.cs
- ListItemCollection.cs
- MethodBuilderInstantiation.cs
- FloaterBaseParagraph.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- HyperLinkField.cs
- SoapObjectInfo.cs
- HashHelpers.cs
- ProcessModuleDesigner.cs
- EnumUnknown.cs
- SqlFacetAttribute.cs
- StringArrayEditor.cs
- XmlBinaryReader.cs
- ProcessHostConfigUtils.cs
- BuildProvider.cs