Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / Tokens / SecurityKeyIdentifier.cs / 1305376 / SecurityKeyIdentifier.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.IdentityModel.Tokens { using System.Collections; using System.Collections.Generic; using System.IO; using System.Globalization; public class SecurityKeyIdentifier : IEnumerable{ const int InitialSize = 2; readonly List clauses; bool isReadOnly; public SecurityKeyIdentifier() { this.clauses = new List (InitialSize); } public SecurityKeyIdentifier(params SecurityKeyIdentifierClause[] clauses) { if (clauses == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("clauses"); } this.clauses = new List (clauses.Length); for (int i = 0; i < clauses.Length; i++) { Add(clauses[i]); } } public SecurityKeyIdentifierClause this[int index] { get { return this.clauses[index]; } } public bool CanCreateKey { get { for (int i = 0; i < this.Count; i++) { if (this[i].CanCreateKey) { return true; } } return false; } } public int Count { get { return this.clauses.Count; } } public bool IsReadOnly { get { return this.isReadOnly; } } public void Add(SecurityKeyIdentifierClause clause) { if (this.isReadOnly) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ObjectIsReadOnly))); } if (clause == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("clause")); } this.clauses.Add(clause); } public SecurityKey CreateKey() { for (int i = 0; i < this.Count; i++) { if (this[i].CanCreateKey) { return this[i].CreateKey(); } } throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.KeyIdentifierCannotCreateKey))); } public TClause Find () where TClause : SecurityKeyIdentifierClause { TClause clause; if (!TryFind (out clause)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.NoKeyIdentifierClauseFound, typeof(TClause)), "TClause")); } return clause; } public IEnumerator GetEnumerator() { return this.clauses.GetEnumerator(); } public void MakeReadOnly() { this.isReadOnly = true; } public override string ToString() { using (StringWriter writer = new StringWriter(CultureInfo.InvariantCulture)) { writer.WriteLine("SecurityKeyIdentifier"); writer.WriteLine(" ("); writer.WriteLine(" IsReadOnly = {0},", this.IsReadOnly); writer.WriteLine(" Count = {0}{1}", this.Count, this.Count > 0 ? "," : ""); for (int i = 0; i < this.Count; i++) { writer.WriteLine(" Clause[{0}] = {1}{2}", i, this[i], i < this.Count - 1 ? "," : ""); } writer.WriteLine(" )"); return writer.ToString(); } } public bool TryFind (out TClause clause) where TClause : SecurityKeyIdentifierClause { for (int i = 0; i < this.clauses.Count; i++) { TClause c = this.clauses[i] as TClause; if (c != null) { clause = c; return true; } } clause = null; return false; } IEnumerator IEnumerable.GetEnumerator() { return this.GetEnumerator(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WebScriptServiceHostFactory.cs
- Graphics.cs
- ZoneLinkButton.cs
- WindowManager.cs
- CatalogZone.cs
- RuleRef.cs
- COM2IDispatchConverter.cs
- WebServiceClientProxyGenerator.cs
- TextContainerChangedEventArgs.cs
- StateItem.cs
- ObfuscationAttribute.cs
- Compiler.cs
- SystemEvents.cs
- IntMinMaxAggregationOperator.cs
- SubstitutionDesigner.cs
- SelectionEditor.cs
- SqlDataSource.cs
- RSAOAEPKeyExchangeDeformatter.cs
- WebPartDescription.cs
- MetadataImporter.cs
- XpsFontSerializationService.cs
- FormsAuthenticationUserCollection.cs
- UnlockInstanceCommand.cs
- DataServiceQueryException.cs
- ApplicationDirectoryMembershipCondition.cs
- OneOfConst.cs
- ComponentGuaranteesAttribute.cs
- DesignerForm.cs
- SymbolPair.cs
- DeferredSelectedIndexReference.cs
- SafeNativeMethodsMilCoreApi.cs
- ResourceReader.cs
- XmlAttributeCollection.cs
- TextEditorTyping.cs
- PerfCounterSection.cs
- HttpPostClientProtocol.cs
- SqlDataSourceCommandParser.cs
- AmbientEnvironment.cs
- WebPartDisplayMode.cs
- BitmapEffectGeneralTransform.cs
- SymbolType.cs
- TimelineGroup.cs
- SecurityException.cs
- LookupBindingPropertiesAttribute.cs
- EntityDataSourceSelectingEventArgs.cs
- DictionaryEntry.cs
- InitializerFacet.cs
- CollectionBuilder.cs
- MutexSecurity.cs
- FontConverter.cs
- Comparer.cs
- TextSerializer.cs
- ProfileModule.cs
- AnnotationResource.cs
- DbProviderFactory.cs
- ModifierKeysValueSerializer.cs
- Page.cs
- ApplicationManager.cs
- DayRenderEvent.cs
- SoapServerMethod.cs
- RemotingServices.cs
- TextSimpleMarkerProperties.cs
- SqlTypeConverter.cs
- AssemblyAssociatedContentFileAttribute.cs
- StorageTypeMapping.cs
- shaperfactoryquerycachekey.cs
- WebPartCloseVerb.cs
- EndpointDispatcher.cs
- ComponentResourceKeyConverter.cs
- IndexedEnumerable.cs
- ToolboxItem.cs
- smtppermission.cs
- TypeConvertions.cs
- WindowsScrollBar.cs
- RoleManagerEventArgs.cs
- HttpContextWrapper.cs
- DocumentReference.cs
- System.Data_BID.cs
- XmlDataSource.cs
- ProvideValueServiceProvider.cs
- SHA256.cs
- URLIdentityPermission.cs
- IntSecurity.cs
- DataStorage.cs
- ProviderSettingsCollection.cs
- ConfigurationException.cs
- DataObject.cs
- SelectionEditingBehavior.cs
- StructuralType.cs
- ResXBuildProvider.cs
- EntityProviderFactory.cs
- Utility.cs
- SBCSCodePageEncoding.cs
- SamlAction.cs
- CachedBitmap.cs
- DataProtectionSecurityStateEncoder.cs
- GPPOINT.cs
- ByteConverter.cs
- Image.cs
- IdlingCommunicationPool.cs