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
- SmtpNetworkElement.cs
- XPathNavigatorKeyComparer.cs
- MarkupExtensionReturnTypeAttribute.cs
- ReturnEventArgs.cs
- SiteMapSection.cs
- SpecialTypeDataContract.cs
- Cursor.cs
- TypeUtil.cs
- Rectangle.cs
- ToolStripComboBox.cs
- FieldBuilder.cs
- WS2007HttpBinding.cs
- XPathDocumentIterator.cs
- PerfCounters.cs
- DocumentSchemaValidator.cs
- CookieHandler.cs
- RegularExpressionValidator.cs
- SortDescription.cs
- PropertyFilterAttribute.cs
- NetworkInformationPermission.cs
- ConfigPathUtility.cs
- NetNamedPipeBindingElement.cs
- CodeDefaultValueExpression.cs
- CompleteWizardStep.cs
- SqlDataSourceFilteringEventArgs.cs
- InfiniteTimeSpanConverter.cs
- SimpleLine.cs
- DataList.cs
- _RequestCacheProtocol.cs
- AlternateViewCollection.cs
- VScrollProperties.cs
- TypeConverterHelper.cs
- NamespaceQuery.cs
- SourceItem.cs
- ProcessHostConfigUtils.cs
- EdmType.cs
- ScriptHandlerFactory.cs
- MailAddressCollection.cs
- DataGridViewCellCancelEventArgs.cs
- SecurityTokenResolver.cs
- XmlCDATASection.cs
- DelegateSerializationHolder.cs
- SimpleWorkerRequest.cs
- Ipv6Element.cs
- FolderLevelBuildProviderCollection.cs
- Context.cs
- ValidationSummaryDesigner.cs
- IncrementalHitTester.cs
- TreeViewCancelEvent.cs
- ADRoleFactoryConfiguration.cs
- tibetanshape.cs
- StorageEntitySetMapping.cs
- SchemaElementLookUpTable.cs
- TreeNode.cs
- ResourceCategoryAttribute.cs
- NestedContainer.cs
- PathSegment.cs
- PointAnimation.cs
- TextSelectionHighlightLayer.cs
- ComboBox.cs
- CellCreator.cs
- ProviderCommandInfoUtils.cs
- EventLogPermissionAttribute.cs
- XmlAttribute.cs
- MobilePage.cs
- TraceSource.cs
- ActivityBindForm.Designer.cs
- NonBatchDirectoryCompiler.cs
- DependencyPropertyDescriptor.cs
- TreeBuilderBamlTranslator.cs
- XmlPreloadedResolver.cs
- GridViewSelectEventArgs.cs
- DateTimeConverter2.cs
- ScriptRegistrationManager.cs
- TargetConverter.cs
- SponsorHelper.cs
- FilterElement.cs
- BrowserTree.cs
- DashStyle.cs
- WmlObjectListAdapter.cs
- httpserverutility.cs
- SessionStateUtil.cs
- AppDomain.cs
- BindingWorker.cs
- DataView.cs
- UserUseLicenseDictionaryLoader.cs
- AsyncCompletedEventArgs.cs
- BlobPersonalizationState.cs
- XmlEntityReference.cs
- Connector.xaml.cs
- PropertyValueChangedEvent.cs
- IPipelineRuntime.cs
- HttpVersion.cs
- Privilege.cs
- AmbientLight.cs
- FullTextBreakpoint.cs
- SequenceQuery.cs
- BamlResourceDeserializer.cs
- ListBoxItemAutomationPeer.cs
- CodeNamespaceImportCollection.cs