Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / 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; } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ObjectConverter.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- ScalarRestriction.cs
- SyntaxCheck.cs
- PolyBezierSegment.cs
- DataSvcMapFile.cs
- GZipDecoder.cs
- XPathNodeList.cs
- ComboBoxRenderer.cs
- IsolatedStorageFilePermission.cs
- TreeIterator.cs
- WpfXamlMember.cs
- ReverseQueryOperator.cs
- ApplicationSettingsBase.cs
- EdmFunctions.cs
- DbXmlEnabledProviderManifest.cs
- UIPermission.cs
- sitestring.cs
- ExternalException.cs
- DSASignatureFormatter.cs
- RectKeyFrameCollection.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- HtmlControlPersistable.cs
- ByeMessageApril2005.cs
- DataGridViewColumnTypePicker.cs
- SoapSchemaImporter.cs
- BoundingRectTracker.cs
- BindingWorker.cs
- PropertyGrid.cs
- StrongNameKeyPair.cs
- WebPartConnectionsEventArgs.cs
- PrimitiveXmlSerializers.cs
- UInt16Storage.cs
- SystemIPv4InterfaceProperties.cs
- SQLBytes.cs
- GeometryCollection.cs
- RoutedUICommand.cs
- ExecutionContext.cs
- XmlNodeChangedEventManager.cs
- NegotiateStream.cs
- RoutedEvent.cs
- PatternMatcher.cs
- PropertySourceInfo.cs
- Geometry.cs
- BuildProvider.cs
- CustomGrammar.cs
- StickyNoteContentControl.cs
- BamlRecordWriter.cs
- SystemColors.cs
- Point4D.cs
- LocalizedNameDescriptionPair.cs
- WebPartTransformerCollection.cs
- RegexCode.cs
- _SingleItemRequestCache.cs
- DataGridCell.cs
- ValueTypeFixupInfo.cs
- MergePropertyDescriptor.cs
- SoapFault.cs
- SizeAnimationUsingKeyFrames.cs
- complextypematerializer.cs
- CompilationUtil.cs
- TemplateInstanceAttribute.cs
- Grid.cs
- XmlSchemaSimpleTypeUnion.cs
- XmlCharCheckingReader.cs
- XPathDescendantIterator.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- WindowsAuthenticationEventArgs.cs
- UpdatePanelTriggerCollection.cs
- CLRBindingWorker.cs
- ExceptionRoutedEventArgs.cs
- TextDecoration.cs
- xmlglyphRunInfo.cs
- ForeignKeyConstraint.cs
- DataBoundControlAdapter.cs
- FieldReference.cs
- TextLineResult.cs
- CngKey.cs
- MessageQueueKey.cs
- AnnotationObservableCollection.cs
- sqlser.cs
- RightsManagementInformation.cs
- TemplateBindingExtensionConverter.cs
- StatusStrip.cs
- Helpers.cs
- SingleTagSectionHandler.cs
- ScrollItemPattern.cs
- PersistenceTypeAttribute.cs
- AutomationAttributeInfo.cs
- Error.cs
- SizeChangedInfo.cs
- WebPartCollection.cs
- EmptyControlCollection.cs
- OleDbStruct.cs
- NavigationCommands.cs
- ButtonRenderer.cs
- DataSourceListEditor.cs
- ACL.cs
- FillRuleValidation.cs
- CodeObjectCreateExpression.cs