Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataBoundControlAdapter.cs
- _LoggingObject.cs
- Soap12ServerProtocol.cs
- DocumentViewer.cs
- IntranetCredentialPolicy.cs
- InvalidOleVariantTypeException.cs
- UIElement3D.cs
- XamlSerializer.cs
- VisualStyleTypesAndProperties.cs
- KnowledgeBase.cs
- RequestFactory.cs
- JulianCalendar.cs
- MsmqIntegrationSecurityMode.cs
- SafeNativeMethodsOther.cs
- SourceChangedEventArgs.cs
- RootDesignerSerializerAttribute.cs
- DataIdProcessor.cs
- ClientSettingsStore.cs
- BindingMAnagerBase.cs
- FilteredAttributeCollection.cs
- DefaultEventAttribute.cs
- Dynamic.cs
- ScrollPattern.cs
- StringUtil.cs
- SingleObjectCollection.cs
- SortQueryOperator.cs
- LicenseContext.cs
- FormViewInsertEventArgs.cs
- GestureRecognizer.cs
- MissingSatelliteAssemblyException.cs
- PrivilegeNotHeldException.cs
- Header.cs
- MeasurementDCInfo.cs
- PersonalizationProvider.cs
- ToolboxDataAttribute.cs
- ContractReference.cs
- Trace.cs
- InputEventArgs.cs
- IndentedTextWriter.cs
- MatrixCamera.cs
- PieceDirectory.cs
- BlobPersonalizationState.cs
- XmlNavigatorStack.cs
- MenuAdapter.cs
- MetadataArtifactLoaderComposite.cs
- TextViewBase.cs
- Frame.cs
- SchemaMerger.cs
- Matrix.cs
- XsdDataContractExporter.cs
- StringUtil.cs
- BindToObject.cs
- XmlTextReaderImpl.cs
- LongMinMaxAggregationOperator.cs
- AutomationElementIdentifiers.cs
- SingleSelectRootGridEntry.cs
- ProtocolState.cs
- XmlIncludeAttribute.cs
- QueryContinueDragEventArgs.cs
- X509ServiceCertificateAuthentication.cs
- TagPrefixCollection.cs
- FrameAutomationPeer.cs
- SelectionEditor.cs
- Label.cs
- UnlockInstanceCommand.cs
- WebPartDescriptionCollection.cs
- SystemWebCachingSectionGroup.cs
- DecoderReplacementFallback.cs
- SqlRecordBuffer.cs
- URLMembershipCondition.cs
- RadioButtonPopupAdapter.cs
- PageScaling.cs
- VisualBasicDesignerHelper.cs
- followingquery.cs
- CorrelationManager.cs
- CodeGotoStatement.cs
- ListBoxAutomationPeer.cs
- TypeDescriptor.cs
- CatalogZoneDesigner.cs
- StrokeCollectionDefaultValueFactory.cs
- PieceDirectory.cs
- ScrollChrome.cs
- XamlStream.cs
- DtrList.cs
- EntitySetDataBindingList.cs
- ReaderWriterLockSlim.cs
- _BasicClient.cs
- EndpointAddress.cs
- ContourSegment.cs
- SplayTreeNode.cs
- DbProviderFactoriesConfigurationHandler.cs
- KeyValueConfigurationElement.cs
- ClientConfigurationHost.cs
- PtsHelper.cs
- PropertyInfo.cs
- ViewKeyConstraint.cs
- NoResizeHandleGlyph.cs
- ToolboxCategory.cs
- EncoderBestFitFallback.cs
- FieldToken.cs