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
- EventArgs.cs
- FocusManager.cs
- BinarySecretKeyIdentifierClause.cs
- CapabilitiesRule.cs
- CommonXSendMessage.cs
- AlternateViewCollection.cs
- SoapEnumAttribute.cs
- PixelShader.cs
- CodeAccessPermission.cs
- WebPartCollection.cs
- NonBatchDirectoryCompiler.cs
- BaseEntityWrapper.cs
- InlineObject.cs
- DataGridItemCollection.cs
- AdCreatedEventArgs.cs
- GridViewColumnCollection.cs
- PropertyRef.cs
- ContainerTracking.cs
- HttpRuntimeSection.cs
- FileIOPermission.cs
- WebServiceBindingAttribute.cs
- FormsIdentity.cs
- PageOutputQuality.cs
- Helper.cs
- SizeConverter.cs
- SecureUICommand.cs
- SQLCharsStorage.cs
- WorkflowQueueInfo.cs
- ExpressionServices.cs
- ParagraphResult.cs
- WindowsListView.cs
- RenderTargetBitmap.cs
- lengthconverter.cs
- PlainXmlSerializer.cs
- HyperLinkStyle.cs
- SafeNativeMemoryHandle.cs
- designeractionlistschangedeventargs.cs
- SBCSCodePageEncoding.cs
- XMLUtil.cs
- ListBoxChrome.cs
- BamlCollectionHolder.cs
- TextEmbeddedObject.cs
- dbenumerator.cs
- WhiteSpaceTrimStringConverter.cs
- ColorConvertedBitmap.cs
- followingsibling.cs
- DictionarySectionHandler.cs
- MenuTracker.cs
- ColorMap.cs
- XmlUtf8RawTextWriter.cs
- SerializationObjectManager.cs
- PasswordBox.cs
- securitycriticaldata.cs
- DataControlReferenceCollection.cs
- NestedContainer.cs
- RegionData.cs
- SqlUtils.cs
- CommonGetThemePartSize.cs
- XmlNodeChangedEventManager.cs
- SizeKeyFrameCollection.cs
- _LocalDataStoreMgr.cs
- BookmarkOptionsHelper.cs
- SqlWebEventProvider.cs
- WorkflowApplicationCompletedException.cs
- CaretElement.cs
- OutputCacheSettingsSection.cs
- DefaultParameterValueAttribute.cs
- ToolBarButtonClickEvent.cs
- WebPartMovingEventArgs.cs
- EntityCommand.cs
- SqlConnection.cs
- TemplateField.cs
- FilteredDataSetHelper.cs
- base64Transforms.cs
- ArgumentNullException.cs
- WorkflowTerminatedException.cs
- SQLInt32.cs
- Win32PrintDialog.cs
- Viewport3DAutomationPeer.cs
- RuntimeConfigLKG.cs
- SerializationBinder.cs
- ThreadPoolTaskScheduler.cs
- TemplatingOptionsDialog.cs
- ColorAnimation.cs
- AliasedExpr.cs
- DataList.cs
- SqlInternalConnectionTds.cs
- BinaryWriter.cs
- RestHandler.cs
- HttpListenerRequest.cs
- URLMembershipCondition.cs
- RemotingServices.cs
- CodeTypeDeclarationCollection.cs
- CodeStatement.cs
- BrowserDefinitionCollection.cs
- AnimationStorage.cs
- ChannelServices.cs
- ElementMarkupObject.cs
- ServiceProviders.cs
- ShapeTypeface.cs