Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / HashStream.cs / 1305376 / HashStream.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.IdentityModel { using System.IO; using System.Security.Cryptography; using System.IdentityModel.Diagnostics; sealed class HashStream : Stream { HashAlgorithm hash; long length; bool hashNeedsReset; MemoryStream logStream; public HashStream(HashAlgorithm hash) { if (hash == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("hash"); Reset(hash); } public override bool CanRead { get { return false; } } public override bool CanWrite { get { return true; } } public override bool CanSeek { get { return false; } } public HashAlgorithm Hash { get { return this.hash; } } public override long Length { get { return this.length; } } public override long Position { get { return this.length; } set { // PreSharp Bug: Property get methods should not throw exceptions. #pragma warning suppress 56503 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException()); } } public override void Flush() { } public void FlushHash() { this.hash.TransformFinalBlock(CryptoHelper.EmptyBuffer, 0, 0); if (DigestTraceRecordHelper.ShouldTraceDigest) DigestTraceRecordHelper.TraceDigest(this.logStream, this.hash); } public byte[] FlushHashAndGetValue() { FlushHash(); return this.hash.Hash; } public override int Read(byte[] buffer, int offset, int count) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException()); } public void Reset() { if (this.hashNeedsReset) { this.hash.Initialize(); this.hashNeedsReset = false; } this.length = 0; if (DigestTraceRecordHelper.ShouldTraceDigest) this.logStream = new MemoryStream(); } public void Reset(HashAlgorithm hash) { this.hash = hash; this.hashNeedsReset = false; this.length = 0; if (DigestTraceRecordHelper.ShouldTraceDigest) this.logStream = new MemoryStream(); } public override void Write(byte[] buffer, int offset, int count) { this.hash.TransformBlock(buffer, offset, count, buffer, offset); this.length += count; this.hashNeedsReset = true; if (DigestTraceRecordHelper.ShouldTraceDigest) this.logStream.Write(buffer, offset, count); } public override long Seek(long offset, SeekOrigin origin) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException()); } public override void SetLength(long length) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException()); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.IdentityModel { using System.IO; using System.Security.Cryptography; using System.IdentityModel.Diagnostics; sealed class HashStream : Stream { HashAlgorithm hash; long length; bool hashNeedsReset; MemoryStream logStream; public HashStream(HashAlgorithm hash) { if (hash == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("hash"); Reset(hash); } public override bool CanRead { get { return false; } } public override bool CanWrite { get { return true; } } public override bool CanSeek { get { return false; } } public HashAlgorithm Hash { get { return this.hash; } } public override long Length { get { return this.length; } } public override long Position { get { return this.length; } set { // PreSharp Bug: Property get methods should not throw exceptions. #pragma warning suppress 56503 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException()); } } public override void Flush() { } public void FlushHash() { this.hash.TransformFinalBlock(CryptoHelper.EmptyBuffer, 0, 0); if (DigestTraceRecordHelper.ShouldTraceDigest) DigestTraceRecordHelper.TraceDigest(this.logStream, this.hash); } public byte[] FlushHashAndGetValue() { FlushHash(); return this.hash.Hash; } public override int Read(byte[] buffer, int offset, int count) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException()); } public void Reset() { if (this.hashNeedsReset) { this.hash.Initialize(); this.hashNeedsReset = false; } this.length = 0; if (DigestTraceRecordHelper.ShouldTraceDigest) this.logStream = new MemoryStream(); } public void Reset(HashAlgorithm hash) { this.hash = hash; this.hashNeedsReset = false; this.length = 0; if (DigestTraceRecordHelper.ShouldTraceDigest) this.logStream = new MemoryStream(); } public override void Write(byte[] buffer, int offset, int count) { this.hash.TransformBlock(buffer, offset, count, buffer, offset); this.length += count; this.hashNeedsReset = true; if (DigestTraceRecordHelper.ShouldTraceDigest) this.logStream.Write(buffer, offset, count); } public override long Seek(long offset, SeekOrigin origin) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException()); } public override void SetLength(long length) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException()); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- JulianCalendar.cs
- PlatformNotSupportedException.cs
- ChtmlCalendarAdapter.cs
- RawMouseInputReport.cs
- PageParserFilter.cs
- MessageSmuggler.cs
- ItemsControlAutomationPeer.cs
- SafeTokenHandle.cs
- WebPart.cs
- HttpProfileGroupBase.cs
- OptionUsage.cs
- LogSwitch.cs
- MessageRpc.cs
- NodeFunctions.cs
- TaiwanLunisolarCalendar.cs
- TabletDevice.cs
- IndexExpression.cs
- WindowsFormsHostAutomationPeer.cs
- BufferAllocator.cs
- LabelLiteral.cs
- CatalogPartCollection.cs
- NullableConverter.cs
- NoClickablePointException.cs
- XPathAncestorIterator.cs
- CustomBindingElementCollection.cs
- EFDataModelProvider.cs
- DataGridCheckBoxColumn.cs
- GeometryCombineModeValidation.cs
- XPathNodeHelper.cs
- QuaternionAnimation.cs
- CheckableControlBaseAdapter.cs
- PageParser.cs
- AttributeEmitter.cs
- CodeTypeDelegate.cs
- MulticastDelegate.cs
- HttpStreamMessage.cs
- SiteOfOriginContainer.cs
- InfoCardXmlSerializer.cs
- DataGridRowHeader.cs
- FlowLayout.cs
- PrimaryKeyTypeConverter.cs
- RSACryptoServiceProvider.cs
- CellTreeNode.cs
- SignedXml.cs
- processwaithandle.cs
- DoubleAnimationUsingPath.cs
- LogEntrySerializationException.cs
- ButtonChrome.cs
- ContextProperty.cs
- DataSourceControlBuilder.cs
- WizardPanel.cs
- SiteMapDataSource.cs
- TaskExceptionHolder.cs
- SelectedCellsCollection.cs
- TitleStyle.cs
- BackgroundWorker.cs
- Journal.cs
- RoutedPropertyChangedEventArgs.cs
- MappingModelBuildProvider.cs
- ToolStripItemCollection.cs
- GenericWebPart.cs
- SizeAnimationBase.cs
- XamlReader.cs
- RewritingProcessor.cs
- FontEmbeddingManager.cs
- AppSettingsExpressionEditor.cs
- ActivitiesCollection.cs
- OdbcConnectionOpen.cs
- RolePrincipal.cs
- TextFormatterContext.cs
- GetKeyedHashRequest.cs
- ObservableCollection.cs
- DataGridrowEditEndingEventArgs.cs
- Underline.cs
- VariableDesigner.xaml.cs
- PointF.cs
- RC2CryptoServiceProvider.cs
- ToolBarButton.cs
- StatusStrip.cs
- OleServicesContext.cs
- WindowsGraphics.cs
- BindingRestrictions.cs
- WriterOutput.cs
- SqlGenerator.cs
- BaseAddressElementCollection.cs
- ChangeTracker.cs
- StyleModeStack.cs
- OdbcParameterCollection.cs
- ParameterDataSourceExpression.cs
- DynamicDocumentPaginator.cs
- PropertyGridEditorPart.cs
- DataGridViewCheckBoxCell.cs
- ReturnEventArgs.cs
- WebServiceEnumData.cs
- DateTimeOffset.cs
- SmtpReplyReaderFactory.cs
- MapPathBasedVirtualPathProvider.cs
- ConnectionStringsExpressionEditor.cs
- HttpListenerException.cs
- ParameterReplacerVisitor.cs