Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Service / managed / Microsoft / InfoCards / HashUtility.cs / 1 / HashUtility.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace Microsoft.InfoCards { using System; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Security; using System.Security.Cryptography; using System.Text; using IDT = Microsoft.InfoCards.Diagnostics.InfoCardTrace; // // Summary: // Singleton utilty class for hashing data. // Remarks: // This class is currently global. Need to discuss a suitable hosting environment for it // ( per user is probably appropriate ) // internal static class HashUtility { // // Summary: // The String identifier of the alg we use. Do we need to abstract this choice somewhere // public const string HashAlgorithmName = "SHA256"; private static object s_lock = new Object(); private static SHA256Managed s_hasher = new SHA256Managed(); // // Summary: // Gets the BitLength of the current hashing algorithm // public static Int32 HashBitLength { get{ return s_hasher.HashSize; } } // // Summary: // Gets the Buffer Size of the current hashing algorithm // public static Int32 HashBufferLength { get { return HashBitLength / 8; } } // // Summary: // Hashes a given value, and write the value to the output buffer. // // Remarks: // To get the size required for the output buffer, use HashBufferLength // // Parameters: // data: the output data buffer // dataIndex: the index to place the hash in the output data buffer // dataToHash: the input data to hash // public static void SetHashValue( byte[] data, int dataIndex, byte[] dataToHash ) { if( null == dataToHash ) { throw IDT.ThrowHelperArgumentNull( "dataToHash" ); } SetHashValue( data, dataIndex, dataToHash, 0, dataToHash.Length ); } // // Summary: // Hashes a given value, and write the value to the output buffer. // // Remarks: // To get the size required for the output buffer, use HashBufferLength // // Parameters: // data: the output data buffer // dataIndex: the index to place the hash in the output data buffer // dataToHash: the input data to hash // dataToHashIndex: the index in the input to start hashing // dataToHashSize: the size of the data to hash. // public static void SetHashValue( byte[] data, int dataIndex, byte[] dataToHash, int dataToHashIndex, int dataToHashSize ) { if( null == data ) { throw IDT.ThrowHelperArgumentNull( "data" ); } if( dataIndex < 0 || dataIndex >= data.Length ) { throw IDT.ThrowHelperError( new ArgumentOutOfRangeException( "dataIndex", dataIndex, SR.GetString( SR.StoreHashUtilityDataOutOfRange ) ) ); } if( null == dataToHash ) { throw IDT.ThrowHelperArgumentNull( "dataToHash" ); } if( dataToHashIndex < 0 || dataToHashIndex > dataToHash.Length ) { throw IDT.ThrowHelperError( new ArgumentOutOfRangeException( "dataToHashIndex", dataToHashIndex, SR.GetString( SR.StoreHashUtilityDataToHashOutOfRange ) ) ); } if( dataToHashSize < 0 || dataToHashSize > ( dataToHash.Length - dataToHashIndex ) ) { throw IDT.ThrowHelperError( new ArgumentOutOfRangeException( "dataToHashIndex", dataToHashIndex, SR.GetString( SR.StoreHashUtilityDataToHashOutOfRange ) ) ); } byte[] newBuffer = null; lock( s_lock ) { newBuffer = s_hasher.ComputeHash( dataToHash, dataToHashIndex, dataToHashSize ); } // // Copy this buffer to the output buffer // Array.Copy( newBuffer, 0, data, dataIndex, newBuffer.Length ); // // Clear this has, as we can't ensure it will // be collected immediatly. // Array.Clear( newBuffer, 0, newBuffer.Length ); } } } // 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
- HitTestResult.cs
- FormsAuthenticationUser.cs
- ToolStripSeparatorRenderEventArgs.cs
- ExceptionUtil.cs
- AdCreatedEventArgs.cs
- AssemblyCollection.cs
- PageSettings.cs
- NameObjectCollectionBase.cs
- UnaryQueryOperator.cs
- HwndStylusInputProvider.cs
- Executor.cs
- TextInfo.cs
- SQLBoolean.cs
- safelinkcollection.cs
- ReadOnlyNameValueCollection.cs
- NotImplementedException.cs
- StateElement.cs
- CatalogPart.cs
- XmlBaseWriter.cs
- RegexBoyerMoore.cs
- DeliveryStrategy.cs
- PlaceHolder.cs
- EnumValAlphaComparer.cs
- XmlAnyElementAttributes.cs
- MethodToken.cs
- StylusPointProperty.cs
- Material.cs
- CachedPathData.cs
- DelegatingTypeDescriptionProvider.cs
- ISessionStateStore.cs
- NamespaceImport.cs
- ThreadPool.cs
- SingleConverter.cs
- UIElementPropertyUndoUnit.cs
- DataBindingHandlerAttribute.cs
- FrameworkTemplate.cs
- DocumentViewer.cs
- XmlCollation.cs
- DiscreteKeyFrames.cs
- ReturnType.cs
- XsltLibrary.cs
- recordstate.cs
- FixedPage.cs
- StreamAsIStream.cs
- XhtmlConformanceSection.cs
- FullTextLine.cs
- QilNode.cs
- InstanceDataCollection.cs
- StatusBarItem.cs
- ContainsRowNumberChecker.cs
- ReadWriteSpinLock.cs
- IconBitmapDecoder.cs
- Visitors.cs
- ToolboxComponentsCreatedEventArgs.cs
- ImageSource.cs
- TreeView.cs
- ProvidePropertyAttribute.cs
- SoapClientProtocol.cs
- TransportChannelListener.cs
- CssTextWriter.cs
- DataGridGeneralPage.cs
- PipeStream.cs
- LinearQuaternionKeyFrame.cs
- DataGridViewHeaderCell.cs
- ClassicBorderDecorator.cs
- VarInfo.cs
- PromptStyle.cs
- DataServiceRequestException.cs
- ImmComposition.cs
- DebugControllerThread.cs
- XmlHierarchyData.cs
- SystemDiagnosticsSection.cs
- UpdateTranslator.cs
- TemplateBindingExpressionConverter.cs
- RegistrationServices.cs
- FixedSOMContainer.cs
- Helpers.cs
- WeakHashtable.cs
- EventPrivateKey.cs
- Cursors.cs
- DotNetATv1WindowsLogEntryDeserializer.cs
- TypeLibConverter.cs
- HotSpot.cs
- UIHelper.cs
- ControlAdapter.cs
- CopyAction.cs
- Binding.cs
- InkCanvasAutomationPeer.cs
- QueryContext.cs
- DataGridPagerStyle.cs
- Speller.cs
- HtmlToClrEventProxy.cs
- SafeIUnknown.cs
- ReverseComparer.cs
- ObfuscationAttribute.cs
- GridViewColumnCollectionChangedEventArgs.cs
- AnnotationDocumentPaginator.cs
- TrackingServices.cs
- MenuItemCollection.cs
- SimpleApplicationHost.cs