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
- AttributeConverter.cs
- Debug.cs
- PartialTrustVisibleAssembliesSection.cs
- ChangeNode.cs
- OdbcInfoMessageEvent.cs
- PeerNameRecord.cs
- _KerberosClient.cs
- SecuritySessionClientSettings.cs
- OdbcDataAdapter.cs
- DefaultValueTypeConverter.cs
- TraceHwndHost.cs
- AnnotationAdorner.cs
- EntityDataSourceChangingEventArgs.cs
- GridViewSortEventArgs.cs
- SemanticAnalyzer.cs
- SrgsSubset.cs
- RegexCharClass.cs
- FontFamilyValueSerializer.cs
- CompileXomlTask.cs
- DataGridViewLinkCell.cs
- jithelpers.cs
- SHA1Cng.cs
- XPathNodeList.cs
- DbConnectionPoolIdentity.cs
- PointLight.cs
- InternalDuplexChannelListener.cs
- InputMethodStateTypeInfo.cs
- Viewport3DAutomationPeer.cs
- LinqToSqlWrapper.cs
- PolicyUnit.cs
- AssemblyBuilderData.cs
- Scene3D.cs
- IsolatedStorageFilePermission.cs
- UnsafeNativeMethods.cs
- XmlSchemaChoice.cs
- XPathNavigator.cs
- HtmlElementCollection.cs
- CatalogPartChrome.cs
- StylusButtonEventArgs.cs
- SiteMap.cs
- mediaeventshelper.cs
- ToolBarButtonClickEvent.cs
- SymLanguageVendor.cs
- altserialization.cs
- CheckBoxList.cs
- InertiaRotationBehavior.cs
- FormParameter.cs
- BeginEvent.cs
- ConnectionPoolManager.cs
- UnauthorizedWebPart.cs
- FrameAutomationPeer.cs
- WebPartAuthorizationEventArgs.cs
- CompositionAdorner.cs
- __FastResourceComparer.cs
- controlskin.cs
- dbenumerator.cs
- AddressingProperty.cs
- HtmlLink.cs
- ProcessModule.cs
- ComponentChangingEvent.cs
- UrlAuthFailedErrorFormatter.cs
- CommandExpr.cs
- TypeSource.cs
- BamlRecords.cs
- ZipPackagePart.cs
- AttachmentService.cs
- X509Certificate2.cs
- SmiContextFactory.cs
- OneWayBindingElementImporter.cs
- HMACRIPEMD160.cs
- FrameworkContentElement.cs
- sqlnorm.cs
- InfoCardCryptoHelper.cs
- Gdiplus.cs
- StatusBar.cs
- SQLStringStorage.cs
- RemoveFromCollection.cs
- XmlSchemaCompilationSettings.cs
- Expr.cs
- ItemContainerGenerator.cs
- FixedSchema.cs
- PeerToPeerException.cs
- OdbcRowUpdatingEvent.cs
- Automation.cs
- XmlSchemaObjectCollection.cs
- GlobalDataBindingHandler.cs
- EllipticalNodeOperations.cs
- RelationshipEndCollection.cs
- Rfc2898DeriveBytes.cs
- LockCookie.cs
- ListViewGroupCollectionEditor.cs
- ClrPerspective.cs
- DataTemplate.cs
- RelationshipEntry.cs
- TextInfo.cs
- TransactionInterop.cs
- ExpressionBindingCollection.cs
- RMPermissions.cs
- RawStylusInput.cs
- DataGridSortingEventArgs.cs