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
- XmlSchema.cs
- BaseParagraph.cs
- GlobalizationAssembly.cs
- DesignerTransactionCloseEvent.cs
- QilStrConcatenator.cs
- TextOptionsInternal.cs
- XmlElement.cs
- SubclassTypeValidatorAttribute.cs
- PropertyChangeTracker.cs
- XAMLParseException.cs
- PhysicalOps.cs
- XmlSchemaInclude.cs
- FacetDescription.cs
- AddInIpcChannel.cs
- XmlHierarchicalDataSourceView.cs
- ComponentEvent.cs
- BoundField.cs
- SiteMap.cs
- TextTreeDeleteContentUndoUnit.cs
- WebControlAdapter.cs
- IdnMapping.cs
- LinqDataSourceContextEventArgs.cs
- ParallelEnumerable.cs
- SqlVisitor.cs
- AsyncStreamReader.cs
- EraserBehavior.cs
- ApplyTemplatesAction.cs
- EntityDataSourceChangedEventArgs.cs
- HwndAppCommandInputProvider.cs
- DependencyPropertyAttribute.cs
- _HTTPDateParse.cs
- ResourceAssociationSet.cs
- DbDataAdapter.cs
- PreviewPageInfo.cs
- ItemsPanelTemplate.cs
- ComNativeDescriptor.cs
- MenuRendererStandards.cs
- DrawingContextWalker.cs
- SmtpException.cs
- X509CertificateClaimSet.cs
- DbReferenceCollection.cs
- DefaultValueConverter.cs
- wgx_render.cs
- OutputCacheProviderCollection.cs
- HitTestFilterBehavior.cs
- DataServiceBuildProvider.cs
- FrugalMap.cs
- DataColumn.cs
- TreeNodeCollection.cs
- LabelDesigner.cs
- CacheOutputQuery.cs
- MimeFormReflector.cs
- ProcessThread.cs
- IsolationInterop.cs
- Propagator.JoinPropagator.cs
- OdbcEnvironmentHandle.cs
- ExpandedProjectionNode.cs
- SafeProcessHandle.cs
- PackUriHelper.cs
- NameTable.cs
- WorkflowApplicationEventArgs.cs
- basecomparevalidator.cs
- SqlNotificationEventArgs.cs
- IProvider.cs
- CultureInfoConverter.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- HeaderElement.cs
- SymLanguageVendor.cs
- DefaultBindingPropertyAttribute.cs
- ZoneLinkButton.cs
- NotifyIcon.cs
- System.Data.OracleClient_BID.cs
- Light.cs
- FormParameter.cs
- ConnectionString.cs
- ApplicationContext.cs
- HttpCacheParams.cs
- NameSpaceExtractor.cs
- UserPersonalizationStateInfo.cs
- ExpressionBuilderContext.cs
- InputScopeNameConverter.cs
- ObservableDictionary.cs
- TrustLevel.cs
- WebPartConnection.cs
- IdentityModelDictionary.cs
- DocComment.cs
- ClientTargetCollection.cs
- CodeTypeMemberCollection.cs
- ConfigurationStrings.cs
- UserUseLicenseDictionaryLoader.cs
- EncoderBestFitFallback.cs
- XmlKeywords.cs
- IsolatedStorageFile.cs
- XmlSchemaFacet.cs
- SiteMapSection.cs
- DebugView.cs
- ObjectDataSourceMethodEventArgs.cs
- DockPattern.cs
- CodeCompiler.cs
- HotCommands.cs