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
- UniqueIdentifierService.cs
- PlanCompiler.cs
- dataobject.cs
- QilFactory.cs
- CheckableControlBaseAdapter.cs
- CustomWebEventKey.cs
- Validator.cs
- CommunicationObjectManager.cs
- EmptyArray.cs
- TypefaceMap.cs
- UnknownWrapper.cs
- FontDialog.cs
- ReachPageContentSerializer.cs
- ServiceNameCollection.cs
- CompilerScopeManager.cs
- SoundPlayerAction.cs
- SelfIssuedAuthProofToken.cs
- DateTimeEditor.cs
- SourceFilter.cs
- FontStyles.cs
- StatusStrip.cs
- ListInitExpression.cs
- InputReportEventArgs.cs
- EntityConnection.cs
- StreamSecurityUpgradeInitiator.cs
- BasicExpressionVisitor.cs
- UseLicense.cs
- DataControlField.cs
- DefaultBinder.cs
- ProcessHostServerConfig.cs
- WebSysDisplayNameAttribute.cs
- SafeNativeMethods.cs
- TableLayoutCellPaintEventArgs.cs
- DynamicPropertyHolder.cs
- Base64Stream.cs
- Pkcs7Recipient.cs
- ConfigurationValue.cs
- SponsorHelper.cs
- DataGridViewUtilities.cs
- SAPIEngineTypes.cs
- TrackingMemoryStream.cs
- DbMetaDataColumnNames.cs
- CounterNameConverter.cs
- TypeExtensionConverter.cs
- AppDomainFactory.cs
- DrawingVisual.cs
- ResourceReader.cs
- XsltLibrary.cs
- SQLMembershipProvider.cs
- ChannelManager.cs
- CompensationParticipant.cs
- AesCryptoServiceProvider.cs
- Assembly.cs
- StorageMappingItemLoader.cs
- ProxyWebPartManagerDesigner.cs
- Parser.cs
- XsltSettings.cs
- TextLine.cs
- X509Chain.cs
- GridProviderWrapper.cs
- ModelVisual3D.cs
- ACE.cs
- BaseTemplateBuildProvider.cs
- transactioncontext.cs
- ProviderUtil.cs
- XamlFigureLengthSerializer.cs
- DataGridTable.cs
- Types.cs
- ParsedAttributeCollection.cs
- DiagnosticEventProvider.cs
- ObjectDataSourceWizardForm.cs
- RTLAwareMessageBox.cs
- PenContext.cs
- HttpsTransportElement.cs
- PresentationTraceSources.cs
- MdiWindowListStrip.cs
- EpmSourcePathSegment.cs
- AggregateNode.cs
- BindingValueChangedEventArgs.cs
- Pen.cs
- Header.cs
- Polyline.cs
- PtsPage.cs
- SecurityTokenReferenceStyle.cs
- CodeIdentifier.cs
- RuntimeResourceSet.cs
- LambdaCompiler.ControlFlow.cs
- Interlocked.cs
- MergeFilterQuery.cs
- Label.cs
- SmtpCommands.cs
- SettingsAttributeDictionary.cs
- SQLGuidStorage.cs
- FamilyMapCollection.cs
- QueryExpr.cs
- SmiContext.cs
- RegisteredArrayDeclaration.cs
- OledbConnectionStringbuilder.cs
- DetailsView.cs
- DefaultValueAttribute.cs