Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / Security / CookieProtection.cs / 1 / 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 || bMac.Length != 20) return null; if (buf.Length >= count + 20) { Buffer.BlockCopy (bMac, 0, buf, count, 20); } else { byte[] bTemp = buf; buf = new byte[count + 20]; Buffer.BlockCopy (bTemp, 0, buf, 0, count); Buffer.BlockCopy (bMac, 0, buf, count, 20); } count += 20; } 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) { ////////////////////////////////////////////////////////////////////// // Step 2: Get the MAC: Last 20 bytes if (buf.Length <= 20) return null; byte[] buf2 = new byte[buf.Length - 20]; Buffer.BlockCopy (buf, 0, buf2, 0, buf2.Length); byte[] bMac = MachineKeySection.HashData (buf2, null, 0, buf2.Length); ////////////////////////////////////////////////////////////////////// // Step 3: Make sure the MAC is correct if (bMac == null || bMac.Length != 20) return null; for (int iter = 0; iter < 20; iter++) if (bMac[iter] != buf[buf2.Length + iter]) return null; buf = buf2; } return buf; } } }
Link Menu
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MetadataSerializer.cs
- ScriptResourceHandler.cs
- TileBrush.cs
- BuiltInPermissionSets.cs
- WebPartUtil.cs
- LinqDataSourceDisposeEventArgs.cs
- Rotation3DAnimation.cs
- DataGridViewTopRowAccessibleObject.cs
- BufferBuilder.cs
- PageThemeParser.cs
- TypeSystem.cs
- DomainConstraint.cs
- UpdateInfo.cs
- ObjectView.cs
- InputGestureCollection.cs
- EntityConnectionStringBuilder.cs
- MessageSmuggler.cs
- Stack.cs
- LambdaCompiler.Binary.cs
- PointKeyFrameCollection.cs
- SecurityToken.cs
- FontFamily.cs
- ObjectNavigationPropertyMapping.cs
- PenThread.cs
- MenuBindingsEditor.cs
- DrawingCollection.cs
- FamilyMapCollection.cs
- SqlFunctions.cs
- MouseDevice.cs
- SchemaNames.cs
- ConfigXmlWhitespace.cs
- TextFragmentEngine.cs
- EntityWrapper.cs
- TextBlock.cs
- Stylesheet.cs
- WeakEventManager.cs
- ResourceManager.cs
- DataViewListener.cs
- PerformanceCounter.cs
- ToolStripSplitButton.cs
- SelectionRangeConverter.cs
- BindingEntityInfo.cs
- EnumMember.cs
- SpStreamWrapper.cs
- RenderData.cs
- GridItemPatternIdentifiers.cs
- TemplateXamlTreeBuilder.cs
- SettingsPropertyCollection.cs
- PassportAuthenticationModule.cs
- Accessors.cs
- RequestedSignatureDialog.cs
- ReflectPropertyDescriptor.cs
- TypeValidationEventArgs.cs
- CacheVirtualItemsEvent.cs
- DBSchemaTable.cs
- OutputBuffer.cs
- StrongName.cs
- PropertyManager.cs
- LinqToSqlWrapper.cs
- ViewgenContext.cs
- SelectionGlyphBase.cs
- CompiledIdentityConstraint.cs
- Set.cs
- OletxVolatileEnlistment.cs
- RequestTimeoutManager.cs
- CoTaskMemHandle.cs
- DataControlFieldHeaderCell.cs
- UnsafeNativeMethods.cs
- SelectedCellsChangedEventArgs.cs
- BamlCollectionHolder.cs
- SafeTokenHandle.cs
- HttpPostClientProtocol.cs
- HelpInfo.cs
- XmlTextWriter.cs
- AlignmentXValidation.cs
- QuaternionAnimationUsingKeyFrames.cs
- BroadcastEventHelper.cs
- CodeDomConfigurationHandler.cs
- BaseCodeDomTreeGenerator.cs
- OleDbRowUpdatingEvent.cs
- MenuCommandService.cs
- CharacterBuffer.cs
- ResourceSetExpression.cs
- InputReportEventArgs.cs
- CharAnimationUsingKeyFrames.cs
- KeyGestureValueSerializer.cs
- UnsafeNativeMethodsTablet.cs
- MultipleViewPattern.cs
- ImpersonateTokenRef.cs
- MtomMessageEncodingElement.cs
- DiscardableAttribute.cs
- EditorZone.cs
- LoginView.cs
- messageonlyhwndwrapper.cs
- Certificate.cs
- PackageStore.cs
- DynamicRenderer.cs
- ScrollEvent.cs
- UnmanagedBitmapWrapper.cs
- PenThreadPool.cs