Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / SignatureResourcePool.cs / 1305376 / SignatureResourcePool.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.IdentityModel { using System.IO; using System.Security.Cryptography; using System.IdentityModel.Tokens; using System.Xml; using System.Text; // for sequential use by one thread sealed class SignatureResourcePool { const int BufferSize = 64; CanonicalizationDriver canonicalizationDriver; HashStream hashStream; HashAlgorithm hashAlgorithm; #if NO XmlC14NWriter integratedWriter; #endif XmlDictionaryWriter utf8Writer; byte[] encodingBuffer; char[] base64Buffer; public char[] TakeBase64Buffer() { if (this.base64Buffer == null) { this.base64Buffer = new char[BufferSize]; } return this.base64Buffer; } public CanonicalizationDriver TakeCanonicalizationDriver() { if (this.canonicalizationDriver == null) { this.canonicalizationDriver = new CanonicalizationDriver(); } else { this.canonicalizationDriver.Reset(); } return this.canonicalizationDriver; } public byte[] TakeEncodingBuffer() { if (this.encodingBuffer == null) { this.encodingBuffer = new byte[BufferSize]; } return this.encodingBuffer; } public HashAlgorithm TakeHashAlgorithm(string algorithm) { if ( this.hashAlgorithm == null ) { if ( String.IsNullOrEmpty( algorithm ) ) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument( algorithm, SR.GetString( SR.EmptyOrNullArgumentString, "algorithm" ) ); } this.hashAlgorithm = CryptoHelper.CreateHashAlgorithm( algorithm ); } else { this.hashAlgorithm.Initialize(); } return this.hashAlgorithm; } public HashStream TakeHashStream(HashAlgorithm hash) { if (this.hashStream == null) { this.hashStream = new HashStream(hash); } else { this.hashStream.Reset(hash); } return this.hashStream; } public HashStream TakeHashStream(string algorithm) { return TakeHashStream(TakeHashAlgorithm(algorithm)); } #if NO public XmlC14NWriter TakeIntegratedWriter(Stream stream) { return TakeIntegratedWriter(stream, false, null); } public XmlC14NWriter TakeIntegratedWriter(Stream stream, bool includeComments, string[] inclusivePrefixes) { if (this.integratedWriter == null) { this.integratedWriter = new XmlC14NWriter(stream, includeComments, inclusivePrefixes); } else { this.integratedWriter.SetOutput(stream, includeComments, inclusivePrefixes); } return this.integratedWriter; } #endif public XmlDictionaryWriter TakeUtf8Writer() { if (this.utf8Writer == null) { this.utf8Writer = XmlDictionaryWriter.CreateTextWriter(Stream.Null, Encoding.UTF8, false); } else { ((IXmlTextWriterInitializer) this.utf8Writer).SetOutput(Stream.Null, Encoding.UTF8, false); } return this.utf8Writer; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.IdentityModel { using System.IO; using System.Security.Cryptography; using System.IdentityModel.Tokens; using System.Xml; using System.Text; // for sequential use by one thread sealed class SignatureResourcePool { const int BufferSize = 64; CanonicalizationDriver canonicalizationDriver; HashStream hashStream; HashAlgorithm hashAlgorithm; #if NO XmlC14NWriter integratedWriter; #endif XmlDictionaryWriter utf8Writer; byte[] encodingBuffer; char[] base64Buffer; public char[] TakeBase64Buffer() { if (this.base64Buffer == null) { this.base64Buffer = new char[BufferSize]; } return this.base64Buffer; } public CanonicalizationDriver TakeCanonicalizationDriver() { if (this.canonicalizationDriver == null) { this.canonicalizationDriver = new CanonicalizationDriver(); } else { this.canonicalizationDriver.Reset(); } return this.canonicalizationDriver; } public byte[] TakeEncodingBuffer() { if (this.encodingBuffer == null) { this.encodingBuffer = new byte[BufferSize]; } return this.encodingBuffer; } public HashAlgorithm TakeHashAlgorithm(string algorithm) { if ( this.hashAlgorithm == null ) { if ( String.IsNullOrEmpty( algorithm ) ) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument( algorithm, SR.GetString( SR.EmptyOrNullArgumentString, "algorithm" ) ); } this.hashAlgorithm = CryptoHelper.CreateHashAlgorithm( algorithm ); } else { this.hashAlgorithm.Initialize(); } return this.hashAlgorithm; } public HashStream TakeHashStream(HashAlgorithm hash) { if (this.hashStream == null) { this.hashStream = new HashStream(hash); } else { this.hashStream.Reset(hash); } return this.hashStream; } public HashStream TakeHashStream(string algorithm) { return TakeHashStream(TakeHashAlgorithm(algorithm)); } #if NO public XmlC14NWriter TakeIntegratedWriter(Stream stream) { return TakeIntegratedWriter(stream, false, null); } public XmlC14NWriter TakeIntegratedWriter(Stream stream, bool includeComments, string[] inclusivePrefixes) { if (this.integratedWriter == null) { this.integratedWriter = new XmlC14NWriter(stream, includeComments, inclusivePrefixes); } else { this.integratedWriter.SetOutput(stream, includeComments, inclusivePrefixes); } return this.integratedWriter; } #endif public XmlDictionaryWriter TakeUtf8Writer() { if (this.utf8Writer == null) { this.utf8Writer = XmlDictionaryWriter.CreateTextWriter(Stream.Null, Encoding.UTF8, false); } else { ((IXmlTextWriterInitializer) this.utf8Writer).SetOutput(Stream.Null, Encoding.UTF8, false); } return this.utf8Writer; } } } // 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
- ActiveDocumentEvent.cs
- OdbcErrorCollection.cs
- CodeIterationStatement.cs
- InputScopeAttribute.cs
- GC.cs
- ListViewEditEventArgs.cs
- KeyNameIdentifierClause.cs
- MdiWindowListItemConverter.cs
- ToolStripSeparatorRenderEventArgs.cs
- ProfileGroupSettings.cs
- ContractAdapter.cs
- StickyNoteAnnotations.cs
- ADConnectionHelper.cs
- SvcMapFile.cs
- StringBuilder.cs
- Propagator.cs
- ChangeProcessor.cs
- ParseElement.cs
- PluralizationServiceUtil.cs
- WhitespaceRuleLookup.cs
- GenerateTemporaryAssemblyTask.cs
- AdapterUtil.cs
- Filter.cs
- DoubleAnimation.cs
- ResXResourceWriter.cs
- EventHandlersDesigner.cs
- DependencyObjectCodeDomSerializer.cs
- GridErrorDlg.cs
- NonSerializedAttribute.cs
- TextPointer.cs
- SqlDataReader.cs
- Attributes.cs
- LazyLoadBehavior.cs
- BufferedStream.cs
- SafeNativeMethodsCLR.cs
- SafeArchiveContext.cs
- SelectionItemPattern.cs
- PageTheme.cs
- CompositeScriptReference.cs
- WebPartTransformer.cs
- ListItemsCollectionEditor.cs
- ProfileEventArgs.cs
- IPipelineRuntime.cs
- ColumnResizeAdorner.cs
- CacheForPrimitiveTypes.cs
- ContractHandle.cs
- InvokeHandlers.cs
- MediaContext.cs
- Configuration.cs
- CommandBinding.cs
- GetIsBrowserClientRequest.cs
- ResourceDisplayNameAttribute.cs
- NamespaceInfo.cs
- ellipse.cs
- SynchronizationContext.cs
- StringComparer.cs
- AuthenticateEventArgs.cs
- EventLogEntryCollection.cs
- Item.cs
- ProxyHwnd.cs
- GeneralTransformGroup.cs
- SerialPort.cs
- TextBox.cs
- AspProxy.cs
- ReferenceConverter.cs
- ManagementObjectSearcher.cs
- SpoolingTaskBase.cs
- TreeBuilderBamlTranslator.cs
- AuthorizationSection.cs
- CharUnicodeInfo.cs
- HttpCookie.cs
- InputLangChangeEvent.cs
- OutKeywords.cs
- XmlUTF8TextReader.cs
- BindingManagerDataErrorEventArgs.cs
- SystemUnicastIPAddressInformation.cs
- CompoundFileStreamReference.cs
- GPRECTF.cs
- RoleGroupCollection.cs
- selecteditemcollection.cs
- SecurityAccessDeniedException.cs
- Overlapped.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- PaperSize.cs
- SliderAutomationPeer.cs
- ScriptReference.cs
- FileDialogCustomPlace.cs
- DecimalMinMaxAggregationOperator.cs
- SimpleWebHandlerParser.cs
- BoolExpr.cs
- TreeView.cs
- SparseMemoryStream.cs
- XmlUtil.cs
- DataGridViewMethods.cs
- ByeOperation11AsyncResult.cs
- X509Extension.cs
- ConfigurationValidatorAttribute.cs
- SaveFileDialog.cs
- ColumnMapVisitor.cs
- ScriptingSectionGroup.cs