Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- CallbackValidator.cs
- shaperfactoryquerycacheentry.cs
- ReadOnlyDictionary.cs
- DocumentViewerHelper.cs
- WebPartConnectionCollection.cs
- PolicyAssertionCollection.cs
- Inflater.cs
- AtomMaterializer.cs
- ThreadStateException.cs
- QilScopedVisitor.cs
- XPathMessageFilterElement.cs
- FileRecordSequenceCompletedAsyncResult.cs
- AmbientValueAttribute.cs
- XPathNodeInfoAtom.cs
- Tracer.cs
- SrgsDocument.cs
- WaitHandleCannotBeOpenedException.cs
- XamlClipboardData.cs
- SocketException.cs
- MethodBuilderInstantiation.cs
- WebConfigurationHost.cs
- CheckBoxList.cs
- GroupLabel.cs
- RectKeyFrameCollection.cs
- GridViewPageEventArgs.cs
- StatusBarPanel.cs
- DirectoryNotFoundException.cs
- QuadraticBezierSegment.cs
- TextContainerChangeEventArgs.cs
- Overlapped.cs
- VirtualizingPanel.cs
- VoiceInfo.cs
- FormClosedEvent.cs
- TemplateAction.cs
- DeferredRunTextReference.cs
- XmlSchemaFacet.cs
- QuaternionValueSerializer.cs
- NameTable.cs
- ElementsClipboardData.cs
- OpacityConverter.cs
- EntityKeyElement.cs
- SmiTypedGetterSetter.cs
- CookieProtection.cs
- CodeGroup.cs
- AsyncCodeActivityContext.cs
- _LoggingObject.cs
- DoubleAnimationBase.cs
- DefaultParameterValueAttribute.cs
- WindowsButton.cs
- ConfigurationStrings.cs
- CaretElement.cs
- MatchingStyle.cs
- ClientSettingsProvider.cs
- CodeMemberEvent.cs
- ContactManager.cs
- HebrewNumber.cs
- ResolveMatchesCD1.cs
- COM2ICategorizePropertiesHandler.cs
- CryptoApi.cs
- TagPrefixInfo.cs
- OleDbPermission.cs
- TextSpanModifier.cs
- VsPropertyGrid.cs
- BaseCAMarshaler.cs
- RuntimeArgumentHandle.cs
- UpdatePanelControlTrigger.cs
- GrammarBuilderBase.cs
- XPathDocumentNavigator.cs
- DataSourceListEditor.cs
- CheckPair.cs
- Double.cs
- DeclarationUpdate.cs
- SqlExpressionNullability.cs
- DataGrid.cs
- CrossContextChannel.cs
- TextViewSelectionProcessor.cs
- SamlSubject.cs
- COM2IDispatchConverter.cs
- StringFormat.cs
- TimeSpanSecondsConverter.cs
- _LocalDataStore.cs
- Stylesheet.cs
- XmlNodeChangedEventArgs.cs
- FlowDocumentFormatter.cs
- CodePageUtils.cs
- QueryMatcher.cs
- Point3D.cs
- ModulesEntry.cs
- MessageSecurityVersionConverter.cs
- DomainUpDown.cs
- NotImplementedException.cs
- ItemTypeToolStripMenuItem.cs
- MsmqHostedTransportManager.cs
- RotationValidation.cs
- EntityDataSourceWrapperCollection.cs
- TCEAdapterGenerator.cs
- DrawingContextWalker.cs
- ADMembershipUser.cs
- StorageEndPropertyMapping.cs
- AssertFilter.cs