Code:
/ DotNET / DotNET / 8.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
- WindowHideOrCloseTracker.cs
- _IPv6Address.cs
- BindingCollection.cs
- TextBoxAutoCompleteSourceConverter.cs
- SoapFormatExtensions.cs
- OracleLob.cs
- ObjectListCommandsPage.cs
- XLinq.cs
- ServiceDescriptionReflector.cs
- TextTreeTextBlock.cs
- ObsoleteAttribute.cs
- TemplateControl.cs
- DataMemberAttribute.cs
- SqlProcedureAttribute.cs
- OperationInvokerBehavior.cs
- ComPlusAuthorization.cs
- DictionaryBase.cs
- Rotation3DKeyFrameCollection.cs
- COM2TypeInfoProcessor.cs
- LassoSelectionBehavior.cs
- CanonicalFontFamilyReference.cs
- SqlOuterApplyReducer.cs
- NetworkAddressChange.cs
- ShapingWorkspace.cs
- CalendarButtonAutomationPeer.cs
- IpcClientChannel.cs
- ControlCollection.cs
- ExpressionBindings.cs
- OdbcError.cs
- ProxyWebPartConnectionCollection.cs
- PixelFormat.cs
- AssemblyBuilderData.cs
- SoapProtocolImporter.cs
- StorageComplexPropertyMapping.cs
- CompilerGlobalScopeAttribute.cs
- RotateTransform.cs
- SafeMarshalContext.cs
- HtmlTableRowCollection.cs
- ImageProxy.cs
- TextProviderWrapper.cs
- ReferenceEqualityComparer.cs
- RewritingPass.cs
- DataGridTableCollection.cs
- HitTestParameters3D.cs
- ServicePointManager.cs
- ProcessModule.cs
- Environment.cs
- XmlTextEncoder.cs
- ListDataBindEventArgs.cs
- DataPagerFieldCollection.cs
- WorkflowMessageEventArgs.cs
- SoapHeader.cs
- TypeForwardedToAttribute.cs
- MediaTimeline.cs
- Run.cs
- WindowsSlider.cs
- ScriptResourceHandler.cs
- SecurityChannelFaultConverter.cs
- SecurityManager.cs
- PropertySegmentSerializer.cs
- CrossAppDomainChannel.cs
- PeerTransportListenAddressConverter.cs
- TextTreeInsertElementUndoUnit.cs
- SqlUtil.cs
- SystemDropShadowChrome.cs
- CustomGrammar.cs
- HtmlInputReset.cs
- CancelEventArgs.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- Model3DCollection.cs
- MulticastOption.cs
- FirstMatchCodeGroup.cs
- OdbcInfoMessageEvent.cs
- SingleAnimationUsingKeyFrames.cs
- _ListenerAsyncResult.cs
- PieceNameHelper.cs
- MenuItem.cs
- XmlWrappingReader.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- ProcessStartInfo.cs
- ExpressionPrefixAttribute.cs
- Variant.cs
- XmlSignatureManifest.cs
- MenuItem.cs
- BufferedReadStream.cs
- Parsers.cs
- AnnotationResource.cs
- BridgeDataRecord.cs
- WebPartManagerDesigner.cs
- XmlDocumentFragment.cs
- WorkflowElementDialog.cs
- DurableTimerExtension.cs
- DesignerResources.cs
- RegexWorker.cs
- GridErrorDlg.cs
- WebPartTracker.cs
- ResourcePermissionBaseEntry.cs
- SHA1CryptoServiceProvider.cs
- SqlVersion.cs
- StrokeNodeData.cs