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
- WebResourceAttribute.cs
- EntityAdapter.cs
- CollectionConverter.cs
- UncommonField.cs
- DbDataReader.cs
- Tile.cs
- BitSet.cs
- GenericTransactionFlowAttribute.cs
- ImageAutomationPeer.cs
- PixelFormats.cs
- DependencyObjectProvider.cs
- RsaSecurityKey.cs
- FormViewPagerRow.cs
- GridViewRow.cs
- RegexStringValidatorAttribute.cs
- Thread.cs
- PropVariant.cs
- StringWriter.cs
- SByteConverter.cs
- IDQuery.cs
- ComPlusTypeValidator.cs
- RowBinding.cs
- ButtonBase.cs
- MultipartIdentifier.cs
- ValueSerializer.cs
- ProtocolElement.cs
- WorkflowDebuggerSteppingAttribute.cs
- CodePageEncoding.cs
- HtmlInputControl.cs
- ValueUnavailableException.cs
- KeyboardEventArgs.cs
- DateTimeFormatInfo.cs
- HttpHandlerAction.cs
- TextEncodedRawTextWriter.cs
- TransformerInfo.cs
- SqlBooleanizer.cs
- LookupBindingPropertiesAttribute.cs
- LinearGradientBrush.cs
- ResourcePool.cs
- TransactionFilter.cs
- ActivationWorker.cs
- DescendentsWalker.cs
- EncodingInfo.cs
- Choices.cs
- MediaTimeline.cs
- GridViewRowCollection.cs
- XhtmlTextWriter.cs
- QuaternionKeyFrameCollection.cs
- OracleParameter.cs
- ValueUtilsSmi.cs
- SystemIPInterfaceProperties.cs
- AssociationSetEnd.cs
- RegistryKey.cs
- Solver.cs
- AnnotationHighlightLayer.cs
- CommentEmitter.cs
- FrameworkContentElement.cs
- Style.cs
- CodeObject.cs
- ISAPIApplicationHost.cs
- IdentityValidationException.cs
- HtmlForm.cs
- Latin1Encoding.cs
- SingleKeyFrameCollection.cs
- SQLBytesStorage.cs
- SqlBulkCopyColumnMapping.cs
- Byte.cs
- BitmapSource.cs
- SelfIssuedAuthProofToken.cs
- SessionIDManager.cs
- TextTreeTextNode.cs
- SimpleParser.cs
- SqlTypeSystemProvider.cs
- QueryPrefixOp.cs
- PerformanceCountersElement.cs
- AsyncPostBackTrigger.cs
- DeviceContext2.cs
- WebPartTracker.cs
- DiscardableAttribute.cs
- MetadataSource.cs
- DrawingGroup.cs
- KeyValueConfigurationCollection.cs
- ContextQuery.cs
- DnsEndPoint.cs
- Icon.cs
- DetailsViewRowCollection.cs
- UriTemplateMatch.cs
- CollectionViewProxy.cs
- ToolStripSettings.cs
- SoapEnumAttribute.cs
- ProfileParameter.cs
- BinaryReader.cs
- ProgressBarAutomationPeer.cs
- TabControl.cs
- GacUtil.cs
- XmlIlTypeHelper.cs
- WinFormsSecurity.cs
- GradientSpreadMethodValidation.cs
- MsmqAppDomainProtocolHandler.cs
- WebControl.cs