Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Security / CookieProtection.cs / 1305376 / CookieProtection.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.Security
{
using System.Security.Cryptography;
using System.Web.Configuration;
using System.Web.Management;
public enum CookieProtection
{
None, Validation, Encryption, All
}
internal class CookieProtectionHelper
{
internal static string Encode (CookieProtection cookieProtection, byte [] buf, int count)
{
if (cookieProtection == CookieProtection.All || cookieProtection == CookieProtection.Validation)
{
byte[] bMac = MachineKeySection.HashData (buf, null, 0, count);
if (bMac == null)
return null;
if (buf.Length >= count + bMac.Length)
{
Buffer.BlockCopy (bMac, 0, buf, count, bMac.Length);
}
else
{
byte[] bTemp = buf;
buf = new byte[count + bMac.Length];
Buffer.BlockCopy (bTemp, 0, buf, 0, count);
Buffer.BlockCopy (bMac, 0, buf, count, bMac.Length);
}
count += bMac.Length;
}
if (cookieProtection == CookieProtection.All || cookieProtection == CookieProtection.Encryption)
{
buf = MachineKeySection.EncryptOrDecryptData (true, buf, null, 0, count);
count = buf.Length;
}
if (count < buf.Length)
{
byte[] bTemp = buf;
buf = new byte[count];
Buffer.BlockCopy (bTemp, 0, buf, 0, count);
}
return HttpServerUtility.UrlTokenEncode(buf);
}
internal static byte[] Decode (CookieProtection cookieProtection, string data)
{
byte [] buf = HttpServerUtility.UrlTokenDecode(data);
if (buf == null || cookieProtection == CookieProtection.None)
return buf;
if (cookieProtection == CookieProtection.All || cookieProtection == CookieProtection.Encryption)
{
buf = MachineKeySection.EncryptOrDecryptData (false, buf, null, 0, buf.Length);
if (buf == null)
return null;
}
if (cookieProtection == CookieProtection.All || cookieProtection == CookieProtection.Validation)
return MachineKeySection.GetUnHashedData(buf);
return buf;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.Security
{
using System.Security.Cryptography;
using System.Web.Configuration;
using System.Web.Management;
public enum CookieProtection
{
None, Validation, Encryption, All
}
internal class CookieProtectionHelper
{
internal static string Encode (CookieProtection cookieProtection, byte [] buf, int count)
{
if (cookieProtection == CookieProtection.All || cookieProtection == CookieProtection.Validation)
{
byte[] bMac = MachineKeySection.HashData (buf, null, 0, count);
if (bMac == null)
return null;
if (buf.Length >= count + bMac.Length)
{
Buffer.BlockCopy (bMac, 0, buf, count, bMac.Length);
}
else
{
byte[] bTemp = buf;
buf = new byte[count + bMac.Length];
Buffer.BlockCopy (bTemp, 0, buf, 0, count);
Buffer.BlockCopy (bMac, 0, buf, count, bMac.Length);
}
count += bMac.Length;
}
if (cookieProtection == CookieProtection.All || cookieProtection == CookieProtection.Encryption)
{
buf = MachineKeySection.EncryptOrDecryptData (true, buf, null, 0, count);
count = buf.Length;
}
if (count < buf.Length)
{
byte[] bTemp = buf;
buf = new byte[count];
Buffer.BlockCopy (bTemp, 0, buf, 0, count);
}
return HttpServerUtility.UrlTokenEncode(buf);
}
internal static byte[] Decode (CookieProtection cookieProtection, string data)
{
byte [] buf = HttpServerUtility.UrlTokenDecode(data);
if (buf == null || cookieProtection == CookieProtection.None)
return buf;
if (cookieProtection == CookieProtection.All || cookieProtection == CookieProtection.Encryption)
{
buf = MachineKeySection.EncryptOrDecryptData (false, buf, null, 0, buf.Length);
if (buf == null)
return null;
}
if (cookieProtection == CookieProtection.All || cookieProtection == CookieProtection.Validation)
return MachineKeySection.GetUnHashedData(buf);
return buf;
}
}
}
// 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
- EventBuilder.cs
- ColumnPropertiesGroup.cs
- SqlCommand.cs
- DataControlPagerLinkButton.cs
- processwaithandle.cs
- CodeIndexerExpression.cs
- DataGridViewRowsAddedEventArgs.cs
- InnerItemCollectionView.cs
- MetadataItem_Static.cs
- figurelengthconverter.cs
- JavaScriptObjectDeserializer.cs
- ObjectListComponentEditor.cs
- DataRecordObjectView.cs
- PeerCustomResolverElement.cs
- ArrayElementGridEntry.cs
- TypedReference.cs
- _NativeSSPI.cs
- FigureParagraph.cs
- DiscardableAttribute.cs
- SafeNativeMethods.cs
- DTCTransactionManager.cs
- XmlAttribute.cs
- TraceSection.cs
- PseudoWebRequest.cs
- UInt64Storage.cs
- ConfigUtil.cs
- XmlWhitespace.cs
- DSASignatureDeformatter.cs
- CharacterString.cs
- BuildResultCache.cs
- Item.cs
- ConnectionStringsExpressionBuilder.cs
- Stylus.cs
- BasePattern.cs
- Pair.cs
- PointAnimationBase.cs
- RuleSettingsCollection.cs
- FieldDescriptor.cs
- SymbolType.cs
- LinkUtilities.cs
- CacheMemory.cs
- RequestCachingSection.cs
- SoapAttributes.cs
- UseLicense.cs
- HtmlTableCell.cs
- HtmlTextArea.cs
- BulletedList.cs
- OrCondition.cs
- SqlBulkCopyColumnMappingCollection.cs
- ResourcesChangeInfo.cs
- TextEndOfLine.cs
- ClientProxyGenerator.cs
- XmlAttributes.cs
- EntityDataSourceConfigureObjectContext.cs
- BinaryObjectInfo.cs
- OracleDataReader.cs
- RowBinding.cs
- TrackingStringDictionary.cs
- HtmlElementCollection.cs
- StringBuilder.cs
- AmbiguousMatchException.cs
- DoubleAnimationClockResource.cs
- RecordConverter.cs
- XmlDataProvider.cs
- DataGridViewCellLinkedList.cs
- SqlBulkCopy.cs
- SuppressIldasmAttribute.cs
- Matrix3DStack.cs
- ApplicationSecurityManager.cs
- SrgsElement.cs
- InvalidPropValue.cs
- XmlSchemaValidator.cs
- TcpStreams.cs
- DiscoveryCallbackBehavior.cs
- MessageQueuePermissionEntry.cs
- RuleInfoComparer.cs
- DataGridState.cs
- UIElementParagraph.cs
- ThousandthOfEmRealPoints.cs
- SiteIdentityPermission.cs
- WpfXamlType.cs
- Timeline.cs
- ToggleButtonAutomationPeer.cs
- WebServiceResponse.cs
- DrawingGroup.cs
- HttpContext.cs
- RequestCacheEntry.cs
- RegexBoyerMoore.cs
- DataSourceSelectArguments.cs
- PageCache.cs
- UpdatePanel.cs
- DashStyles.cs
- GroupBox.cs
- DoubleAnimationClockResource.cs
- basemetadatamappingvisitor.cs
- SmiEventSink_DeferedProcessing.cs
- PolyBezierSegmentFigureLogic.cs
- TokenBasedSetEnumerator.cs
- Point4DConverter.cs
- DelegateTypeInfo.cs