SignatureResourcePool.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / SignatureResourcePool.cs / 1 / 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;
        SHA1 sha1; 
#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 (algorithm == SecurityAlgorithms.Sha1Digest)
            { 
                return TakeSha1(); 
            }
            else 
            {
                return CryptoHelper.CreateHashAlgorithm(algorithm);
            }
        } 

        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
        SHA1 TakeSha1() 
        { 
            if (this.sha1 == null)
            { 
                this.sha1 = CryptoHelper.NewSha1HashAlgorithm();
            }
            else
            { 
                this.sha1.Initialize();
            } 
            return this.sha1; 
        }
 
        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.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK