Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / clr / src / BCL / System / Security / Cryptography / HMACSHA512.cs / 1 / HMACSHA512.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
//
// HMACSHA512.cs
//
namespace System.Security.Cryptography {
[System.Runtime.InteropServices.ComVisible(true)]
public class HMACSHA512 : HMAC {
private bool m_useLegacyBlockSize = Utils._ProduceLegacyHmacValues();
//
// public constructors
//
public HMACSHA512 () : this (Utils.GenerateRandom(128)) {}
public HMACSHA512 (byte[] key) {
Utils._ShowLegacyHmacWarning();
m_hashName = "SHA512";
m_hash1 = new SHA512Managed();
m_hash2 = new SHA512Managed();
HashSizeValue = 512;
BlockSizeValue = BlockSize;
base.InitializeKey(key);
}
private int BlockSize {
get { return m_useLegacyBlockSize ? 64 : 128; }
}
///
/// In Whidbey we incorrectly used a block size of 64 bytes for HMAC-SHA-384 and HMAC-SHA-512,
/// rather than using the correct value of 128 bytes. Setting this to true causes us to fall
/// back to the Whidbey mode which produces incorrect HMAC values.
///
/// This value should be set only once, before hashing has begun, since we need to reset the key
/// buffer for the block size change to take effect.
///
/// The default vaue is off, however this can be toggled for the application by setting the
/// legacyHMACMode config switch.
///
/// We will also produce a warning when using either of these classes which is output to the
/// debugger and event log unless the showLegacyHMACWarning config setting is disabled. This
/// warning is generated for the first time either class is constructed.
///
public bool ProduceLegacyHmacValues {
get { return m_useLegacyBlockSize; }
set {
m_useLegacyBlockSize = value;
BlockSizeValue = BlockSize;
InitializeKey(KeyValue);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
//
// HMACSHA512.cs
//
namespace System.Security.Cryptography {
[System.Runtime.InteropServices.ComVisible(true)]
public class HMACSHA512 : HMAC {
private bool m_useLegacyBlockSize = Utils._ProduceLegacyHmacValues();
//
// public constructors
//
public HMACSHA512 () : this (Utils.GenerateRandom(128)) {}
public HMACSHA512 (byte[] key) {
Utils._ShowLegacyHmacWarning();
m_hashName = "SHA512";
m_hash1 = new SHA512Managed();
m_hash2 = new SHA512Managed();
HashSizeValue = 512;
BlockSizeValue = BlockSize;
base.InitializeKey(key);
}
private int BlockSize {
get { return m_useLegacyBlockSize ? 64 : 128; }
}
///
/// In Whidbey we incorrectly used a block size of 64 bytes for HMAC-SHA-384 and HMAC-SHA-512,
/// rather than using the correct value of 128 bytes. Setting this to true causes us to fall
/// back to the Whidbey mode which produces incorrect HMAC values.
///
/// This value should be set only once, before hashing has begun, since we need to reset the key
/// buffer for the block size change to take effect.
///
/// The default vaue is off, however this can be toggled for the application by setting the
/// legacyHMACMode config switch.
///
/// We will also produce a warning when using either of these classes which is output to the
/// debugger and event log unless the showLegacyHMACWarning config setting is disabled. This
/// warning is generated for the first time either class is constructed.
///
public bool ProduceLegacyHmacValues {
get { return m_useLegacyBlockSize; }
set {
m_useLegacyBlockSize = value;
BlockSizeValue = BlockSize;
InitializeKey(KeyValue);
}
}
}
}
// 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
- AutomationAttributeInfo.cs
- PropertyExpression.cs
- XmlBinaryReader.cs
- SystemIPGlobalStatistics.cs
- TabControlCancelEvent.cs
- SqlRowUpdatedEvent.cs
- FixedSOMSemanticBox.cs
- SettingsBindableAttribute.cs
- Misc.cs
- UnsafeNativeMethods.cs
- ProfilePropertySettingsCollection.cs
- ListViewUpdatedEventArgs.cs
- Rect3D.cs
- RequestTimeoutManager.cs
- ParsedAttributeCollection.cs
- DirectionalLight.cs
- ColorTransform.cs
- StringWriter.cs
- WebBaseEventKeyComparer.cs
- Floater.cs
- BitmapImage.cs
- FilterQuery.cs
- NavigationEventArgs.cs
- CodeDOMUtility.cs
- UnmanagedBitmapWrapper.cs
- Bitmap.cs
- StrongName.cs
- CustomErrorsSection.cs
- MemberInfoSerializationHolder.cs
- HitTestDrawingContextWalker.cs
- UrlPropertyAttribute.cs
- BoundPropertyEntry.cs
- SessionSwitchEventArgs.cs
- Vertex.cs
- TableProviderWrapper.cs
- XmlKeywords.cs
- SiteMapPath.cs
- StandardToolWindows.cs
- SimplePropertyEntry.cs
- hresults.cs
- PaintValueEventArgs.cs
- InstalledFontCollection.cs
- AffineTransform3D.cs
- Maps.cs
- JoinSymbol.cs
- CodeLinePragma.cs
- ValidationHelper.cs
- CompiledIdentityConstraint.cs
- DispatcherOperation.cs
- PathGradientBrush.cs
- X509Certificate2.cs
- UInt64Storage.cs
- ImageButton.cs
- FileBasedResourceGroveler.cs
- AsyncOperationManager.cs
- ParallelLoopState.cs
- Graphics.cs
- SoapMessage.cs
- UInt64.cs
- DataSetMappper.cs
- FactoryMaker.cs
- ConstructorBuilder.cs
- AsyncContentLoadedEventArgs.cs
- ResXBuildProvider.cs
- ConditionBrowserDialog.cs
- Aggregates.cs
- WebPartUserCapability.cs
- XmlCustomFormatter.cs
- TriggerAction.cs
- ExpressionBindings.cs
- AdornerDecorator.cs
- AttributeData.cs
- HttpsHostedTransportConfiguration.cs
- MapPathBasedVirtualPathProvider.cs
- DataGridViewCellValueEventArgs.cs
- PointAnimationBase.cs
- MailDefinition.cs
- DbMetaDataColumnNames.cs
- UrlPath.cs
- PointCollectionValueSerializer.cs
- Char.cs
- NegotiateStream.cs
- DataBindingList.cs
- DataGridViewMethods.cs
- ConsumerConnectionPoint.cs
- IdentifierCollection.cs
- KeyBinding.cs
- WindowsListViewGroupSubsetLink.cs
- TextDecorationLocationValidation.cs
- SqlBulkCopy.cs
- NativeMsmqMessage.cs
- RenderContext.cs
- GridViewHeaderRowPresenter.cs
- ExpressionList.cs
- NativeRecognizer.cs
- XmlSchemaCompilationSettings.cs
- Comparer.cs
- SkinBuilder.cs
- LinqTreeNodeEvaluator.cs
- SmiRequestExecutor.cs