Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / xsp / System / Web / Configuration / StrongNameUtility.cs / 1 / StrongNameUtility.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Configuration { using System.Diagnostics; using System.IO; using System.Runtime.InteropServices; using System.Security.Permissions; internal class StrongNameUtility { // Help class shouldn't be instantiated. private StrongNameUtility() { } /// Free the buffer allocated by strong name functions /// /// address of memory to free [DllImport("mscoree.dll")] internal extern static void StrongNameFreeBuffer(IntPtr pbMemory); ////// Return the last error /// ///error information for the last strong name call [DllImport("mscoree.dll")] internal extern static int StrongNameErrorInfo(); ////// Generate a new key pair for strong name use /// /// desired key container name /// flags /// [out] generated public / private key blob /// [out] size of the generated blob ///true if the key was generated, false if there was an error [DllImport("mscoree.dll")] internal extern static bool StrongNameKeyGen([MarshalAs(UnmanagedType.LPWStr)]string wszKeyContainer, uint dwFlags, [Out]out IntPtr ppbKeyBlob, [Out]out long pcbKeyBlob); internal static bool GenerateStrongNameFile(string filename) { // variables that hold the unmanaged key IntPtr keyBlob = IntPtr.Zero; long generatedSize = 0; // create the key bool createdKey = StrongNameKeyGen(null, 0 /*No flags. 1 is to save the key in the key container */, out keyBlob, out generatedSize); // if there was a problem, translate it and report it if (!createdKey || keyBlob == IntPtr.Zero) { throw Marshal.GetExceptionForHR(StrongNameErrorInfo()); } try { Debug.Assert(keyBlob != IntPtr.Zero); // make sure the key size makes sense Debug.Assert(generatedSize > 0 && generatedSize <= Int32.MaxValue); if (generatedSize <= 0 || generatedSize > Int32.MaxValue) { throw new InvalidOperationException(SR.GetString(SR.Browser_InvalidStrongNameKey)); } // get the key into managed memory byte[] key = new byte[generatedSize]; Marshal.Copy(keyBlob, key, 0, (int)generatedSize); // write the key to the specified file using (FileStream snkStream = new FileStream(filename, FileMode.Create, FileAccess.Write)) { using (BinaryWriter snkWriter = new BinaryWriter(snkStream)) { snkWriter.Write(key); } } } finally { // release the unmanaged memory the key resides in if (keyBlob != IntPtr.Zero) { StrongNameFreeBuffer(keyBlob); } } return true; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Configuration { using System.Diagnostics; using System.IO; using System.Runtime.InteropServices; using System.Security.Permissions; internal class StrongNameUtility { // Help class shouldn't be instantiated. private StrongNameUtility() { } /// Free the buffer allocated by strong name functions /// /// address of memory to free [DllImport("mscoree.dll")] internal extern static void StrongNameFreeBuffer(IntPtr pbMemory); ////// Return the last error /// ///error information for the last strong name call [DllImport("mscoree.dll")] internal extern static int StrongNameErrorInfo(); ////// Generate a new key pair for strong name use /// /// desired key container name /// flags /// [out] generated public / private key blob /// [out] size of the generated blob ///true if the key was generated, false if there was an error [DllImport("mscoree.dll")] internal extern static bool StrongNameKeyGen([MarshalAs(UnmanagedType.LPWStr)]string wszKeyContainer, uint dwFlags, [Out]out IntPtr ppbKeyBlob, [Out]out long pcbKeyBlob); internal static bool GenerateStrongNameFile(string filename) { // variables that hold the unmanaged key IntPtr keyBlob = IntPtr.Zero; long generatedSize = 0; // create the key bool createdKey = StrongNameKeyGen(null, 0 /*No flags. 1 is to save the key in the key container */, out keyBlob, out generatedSize); // if there was a problem, translate it and report it if (!createdKey || keyBlob == IntPtr.Zero) { throw Marshal.GetExceptionForHR(StrongNameErrorInfo()); } try { Debug.Assert(keyBlob != IntPtr.Zero); // make sure the key size makes sense Debug.Assert(generatedSize > 0 && generatedSize <= Int32.MaxValue); if (generatedSize <= 0 || generatedSize > Int32.MaxValue) { throw new InvalidOperationException(SR.GetString(SR.Browser_InvalidStrongNameKey)); } // get the key into managed memory byte[] key = new byte[generatedSize]; Marshal.Copy(keyBlob, key, 0, (int)generatedSize); // write the key to the specified file using (FileStream snkStream = new FileStream(filename, FileMode.Create, FileAccess.Write)) { using (BinaryWriter snkWriter = new BinaryWriter(snkStream)) { snkWriter.Write(key); } } } finally { // release the unmanaged memory the key resides in if (keyBlob != IntPtr.Zero) { StrongNameFreeBuffer(keyBlob); } } return true; } } } // 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
- WeakReference.cs
- SafeCryptoHandles.cs
- TreeNodeConverter.cs
- XPathExpr.cs
- ObjectDataSourceStatusEventArgs.cs
- DataRelationPropertyDescriptor.cs
- ClassDataContract.cs
- DecimalAnimationUsingKeyFrames.cs
- ToolboxComponentsCreatedEventArgs.cs
- BitmapSourceSafeMILHandle.cs
- ImageCollectionCodeDomSerializer.cs
- SinglePageViewer.cs
- SerializationObjectManager.cs
- AllMembershipCondition.cs
- DesignerSerializationVisibilityAttribute.cs
- ValueQuery.cs
- WebPartAddingEventArgs.cs
- OleDbRowUpdatedEvent.cs
- EmptyEnumerator.cs
- SerializationSectionGroup.cs
- SingleTagSectionHandler.cs
- CacheModeConverter.cs
- QilInvokeLateBound.cs
- PasswordBoxAutomationPeer.cs
- BitmapSource.cs
- RightsManagementInformation.cs
- KeyGestureValueSerializer.cs
- InternalResources.cs
- InsufficientMemoryException.cs
- CachedCompositeFamily.cs
- KeyGesture.cs
- ActiveDocumentEvent.cs
- AuthenticationService.cs
- SoapMessage.cs
- RtfControls.cs
- DataGridViewTextBoxCell.cs
- XmlSchemaChoice.cs
- ReadOnlyDictionary.cs
- RotateTransform3D.cs
- WindowHideOrCloseTracker.cs
- MimeObjectFactory.cs
- ExceptionHelpers.cs
- Stacktrace.cs
- TextFormatterImp.cs
- ClipboardData.cs
- DnsPermission.cs
- SafeRegistryHandle.cs
- TextTreeText.cs
- TransformationRules.cs
- ElementsClipboardData.cs
- SQLInt64Storage.cs
- TargetException.cs
- Expressions.cs
- FormViewInsertEventArgs.cs
- BitmapPalette.cs
- WindowsGraphics.cs
- XamlBrushSerializer.cs
- MultipleViewPattern.cs
- RefreshPropertiesAttribute.cs
- BindingContext.cs
- AnonymousIdentificationSection.cs
- EventSourceCreationData.cs
- DrawingContextWalker.cs
- PageSetupDialog.cs
- KeyInterop.cs
- HuffModule.cs
- CircleEase.cs
- ThicknessKeyFrameCollection.cs
- IsolatedStorageFilePermission.cs
- Command.cs
- DBSqlParserTableCollection.cs
- HTTPNotFoundHandler.cs
- SafeRegistryKey.cs
- counter.cs
- BrowserDefinition.cs
- SQLDouble.cs
- InstanceNameConverter.cs
- Ray3DHitTestResult.cs
- ContentPresenter.cs
- ColumnClickEvent.cs
- BaseWebProxyFinder.cs
- NullToBooleanConverter.cs
- SimpleRecyclingCache.cs
- ScriptModule.cs
- BoundPropertyEntry.cs
- SiteMapNodeItemEventArgs.cs
- Calendar.cs
- Rule.cs
- EntityUtil.cs
- XmlDataLoader.cs
- CharacterBuffer.cs
- UIElementCollection.cs
- PatternMatchRules.cs
- ArgumentOutOfRangeException.cs
- AdRotator.cs
- AssemblyHash.cs
- TypeConverterAttribute.cs
- DataControlButton.cs
- Transform.cs
- QilCloneVisitor.cs