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
- EnumerationRangeValidationUtil.cs
- PointAnimationUsingPath.cs
- Sorting.cs
- Drawing.cs
- RealProxy.cs
- HostedNamedPipeTransportManager.cs
- MultipleViewPattern.cs
- Calendar.cs
- UniqueIdentifierService.cs
- FontDialog.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- RegistryKey.cs
- UpdateDelegates.Generated.cs
- LinkTarget.cs
- ToolStripItemCollection.cs
- InsufficientMemoryException.cs
- DigitShape.cs
- Constants.cs
- FileDialogCustomPlaces.cs
- ProxyWebPartConnectionCollection.cs
- CroppedBitmap.cs
- SBCSCodePageEncoding.cs
- EventHandlersDesigner.cs
- ArraySortHelper.cs
- Processor.cs
- SessionIDManager.cs
- ReadWriteObjectLock.cs
- EmbeddedMailObjectsCollection.cs
- IriParsingElement.cs
- AdobeCFFWrapper.cs
- InfoCard.cs
- GridViewColumnCollectionChangedEventArgs.cs
- TextDecorations.cs
- EventLogger.cs
- HttpListenerTimeoutManager.cs
- ScriptManagerProxy.cs
- DataFieldConverter.cs
- validation.cs
- MemberProjectionIndex.cs
- SmtpMail.cs
- VirtualizingPanel.cs
- DataGridViewRowsRemovedEventArgs.cs
- ColorTranslator.cs
- SymbolMethod.cs
- InternalPolicyElement.cs
- ReadOnlyHierarchicalDataSourceView.cs
- TileBrush.cs
- EpmCustomContentDeSerializer.cs
- RuntimeHelpers.cs
- CodeSnippetTypeMember.cs
- SolidBrush.cs
- UrlAuthorizationModule.cs
- SweepDirectionValidation.cs
- Page.cs
- WebPartMinimizeVerb.cs
- RSAOAEPKeyExchangeFormatter.cs
- AnonymousIdentificationSection.cs
- ManifestResourceInfo.cs
- ValidationEventArgs.cs
- CustomError.cs
- ListMarkerSourceInfo.cs
- TypeSource.cs
- ComponentChangingEvent.cs
- StateFinalizationActivity.cs
- ConcurrentBag.cs
- UnconditionalPolicy.cs
- ServiceContractViewControl.cs
- ExternalDataExchangeService.cs
- ExternalException.cs
- RunInstallerAttribute.cs
- XmlHierarchyData.cs
- DataControlFieldCell.cs
- MsmqBindingElementBase.cs
- BitmapEffectGroup.cs
- EntityTypeBase.cs
- FontFamilyValueSerializer.cs
- ReferenceSchema.cs
- SessionViewState.cs
- ListViewGroupItemCollection.cs
- WebBaseEventKeyComparer.cs
- DocumentXmlWriter.cs
- contentDescriptor.cs
- SurrogateSelector.cs
- coordinatorscratchpad.cs
- ScriptBehaviorDescriptor.cs
- TransactionFlowBindingElement.cs
- DashStyles.cs
- RootAction.cs
- CompilerGeneratedAttribute.cs
- FormatSettings.cs
- TdsRecordBufferSetter.cs
- ManagedFilter.cs
- ArraySortHelper.cs
- HttpHeaderCollection.cs
- Funcletizer.cs
- TemplateControlBuildProvider.cs
- TileBrush.cs
- RegexGroupCollection.cs
- VarRefManager.cs
- DetailsViewPageEventArgs.cs