Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / clr / src / BCL / System / Security / Cryptography / HMACSHA512.cs / 5 / 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
- ByteAnimation.cs
- GuidelineCollection.cs
- MenuStrip.cs
- Certificate.cs
- TextServicesCompartmentContext.cs
- DataRelationCollection.cs
- StringDictionary.cs
- QueryableDataSourceView.cs
- Vector3DAnimationBase.cs
- Brush.cs
- DllHostInitializer.cs
- TypeSystem.cs
- PackageRelationshipSelector.cs
- ClientCultureInfo.cs
- FamilyCollection.cs
- WebPartActionVerb.cs
- TemplatePropertyEntry.cs
- TableParagraph.cs
- CodeNamespaceImport.cs
- Queue.cs
- OdbcRowUpdatingEvent.cs
- InternalsVisibleToAttribute.cs
- Point3DConverter.cs
- FileVersionInfo.cs
- FixedDocument.cs
- ExtenderProvidedPropertyAttribute.cs
- IsolatedStorageException.cs
- RoleServiceManager.cs
- SpnEndpointIdentity.cs
- IntegrationExceptionEventArgs.cs
- OdbcCommand.cs
- CustomError.cs
- X509Extension.cs
- InvokeGenerator.cs
- DragCompletedEventArgs.cs
- PanelDesigner.cs
- AuthenticationManager.cs
- LineVisual.cs
- XmlDocumentType.cs
- MembershipSection.cs
- DtrList.cs
- UrlPath.cs
- DragStartedEventArgs.cs
- StringUtil.cs
- PointF.cs
- FtpCachePolicyElement.cs
- Zone.cs
- DataBoundControlParameterTarget.cs
- AffineTransform3D.cs
- ClientConfigurationHost.cs
- DriveInfo.cs
- ThreadStartException.cs
- SafeLocalMemHandle.cs
- dbdatarecord.cs
- MimeMultiPart.cs
- FormatControl.cs
- SubMenuStyle.cs
- TypeSystem.cs
- DataGrid.cs
- DefaultClaimSet.cs
- SerializableAttribute.cs
- mda.cs
- _Connection.cs
- TargetException.cs
- CompiledAction.cs
- Panel.cs
- ListView.cs
- LockedBorderGlyph.cs
- AsyncCompletedEventArgs.cs
- RenderTargetBitmap.cs
- EntityDataSourceContextDisposingEventArgs.cs
- MetadataPropertyAttribute.cs
- WebEvents.cs
- XmlComplianceUtil.cs
- InternalConfigConfigurationFactory.cs
- SchemaTableOptionalColumn.cs
- LocationSectionRecord.cs
- assemblycache.cs
- ThreadExceptionDialog.cs
- WarningException.cs
- DataGridHeaderBorder.cs
- Point.cs
- PersonalizationAdministration.cs
- LabelTarget.cs
- TriggerAction.cs
- ProxySimple.cs
- ConfigurationStrings.cs
- ObjectViewListener.cs
- PersonalizationStateQuery.cs
- CodeDirectiveCollection.cs
- SmtpReplyReader.cs
- ConfigXmlText.cs
- QueryConverter.cs
- GlobalItem.cs
- DiscoveryDocumentReference.cs
- ProcessModule.cs
- RegionIterator.cs
- SqlRetyper.cs
- DataGridViewLayoutData.cs
- RoutedEvent.cs