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
- SerializationAttributes.cs
- WebPartEditorCancelVerb.cs
- SpecialNameAttribute.cs
- ChannelHandler.cs
- CombinedGeometry.cs
- XmlTextReader.cs
- MethodAccessException.cs
- HTTPNotFoundHandler.cs
- DataGridViewLayoutData.cs
- HwndSourceKeyboardInputSite.cs
- DesignerWebPartChrome.cs
- AnnotationMap.cs
- PackagePartCollection.cs
- __TransparentProxy.cs
- WasEndpointConfigContainer.cs
- DependencyObjectType.cs
- SQLString.cs
- TheQuery.cs
- precedingsibling.cs
- Menu.cs
- MethodCallTranslator.cs
- TraceSwitch.cs
- XamlReader.cs
- QilReplaceVisitor.cs
- URL.cs
- XAMLParseException.cs
- LoadWorkflowCommand.cs
- WindowAutomationPeer.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- OdbcUtils.cs
- RbTree.cs
- DataFormats.cs
- MethodBody.cs
- ImageFormatConverter.cs
- UserControl.cs
- AnimationLayer.cs
- InheritanceContextChangedEventManager.cs
- FormClosedEvent.cs
- WinEventTracker.cs
- SystemWebCachingSectionGroup.cs
- TraceSection.cs
- ServicesUtilities.cs
- MDIClient.cs
- MaterialGroup.cs
- CodeMemberField.cs
- XmlSchemaSimpleTypeList.cs
- Opcode.cs
- StylusDevice.cs
- Inflater.cs
- ExpandableObjectConverter.cs
- Html32TextWriter.cs
- DefaultClaimSet.cs
- FunctionQuery.cs
- SqlProviderManifest.cs
- AnchoredBlock.cs
- XmlSortKey.cs
- Visitor.cs
- ColumnBinding.cs
- MTConfigUtil.cs
- RepeatButton.cs
- FrameworkContentElement.cs
- newinstructionaction.cs
- FileStream.cs
- SystemIPGlobalStatistics.cs
- MetafileHeader.cs
- UserMapPath.cs
- LineMetrics.cs
- Hex.cs
- TextTreeDeleteContentUndoUnit.cs
- CodeMethodInvokeExpression.cs
- MarkupExtensionParser.cs
- OleServicesContext.cs
- PointCollectionConverter.cs
- ClientOptions.cs
- TypefaceCollection.cs
- FontDialog.cs
- InertiaExpansionBehavior.cs
- XmlSchemaGroupRef.cs
- WorkflowInstanceExtensionCollection.cs
- recordstatescratchpad.cs
- ExpressionVisitor.cs
- DatatypeImplementation.cs
- TraceListener.cs
- WSHttpTransportSecurityElement.cs
- NetSectionGroup.cs
- Constraint.cs
- HMACSHA512.cs
- TableCellCollection.cs
- FileSecurity.cs
- ProviderConnectionPointCollection.cs
- ConfigXmlDocument.cs
- ResourceDefaultValueAttribute.cs
- SQLBinary.cs
- StagingAreaInputItem.cs
- ApplicationServiceHelper.cs
- Crypto.cs
- StylusOverProperty.cs
- ParameterElement.cs
- CollectionBase.cs
- DesignColumn.cs