Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / 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.
//------------------------------------------------------------------------------
//
// 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
- XmlMemberMapping.cs
- datacache.cs
- DataGridViewCellParsingEventArgs.cs
- RecipientInfo.cs
- DecoderReplacementFallback.cs
- ISCIIEncoding.cs
- WinEventWrap.cs
- DataGridViewComboBoxColumn.cs
- CodeStatement.cs
- SoapMessage.cs
- ComponentResourceManager.cs
- ExpandCollapsePattern.cs
- DataBoundLiteralControl.cs
- TaskSchedulerException.cs
- UnaryExpressionHelper.cs
- ScrollItemPatternIdentifiers.cs
- ModelVisual3D.cs
- DbDataReader.cs
- Not.cs
- ScriptResourceMapping.cs
- FormClosedEvent.cs
- CultureInfoConverter.cs
- ProgressBar.cs
- DataKey.cs
- GAC.cs
- CommandPlan.cs
- LoginUtil.cs
- EntitySetBase.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- BinaryFormatterWriter.cs
- BitmapPalettes.cs
- KnownTypeAttribute.cs
- SoapIncludeAttribute.cs
- TableLayoutSettingsTypeConverter.cs
- ServicePoint.cs
- TextRangeProviderWrapper.cs
- MetadataUtil.cs
- RegistryKey.cs
- MatrixAnimationUsingPath.cs
- Empty.cs
- ControlsConfig.cs
- DocumentNUp.cs
- EntryIndex.cs
- SafeNativeMethods.cs
- JsonSerializer.cs
- UnsafeNativeMethods.cs
- MetadataSource.cs
- GroupStyle.cs
- DataSourceProvider.cs
- ByteConverter.cs
- BuiltInExpr.cs
- CommandCollectionEditor.cs
- RawStylusInputCustomData.cs
- StringFreezingAttribute.cs
- OwnerDrawPropertyBag.cs
- ValidationRuleCollection.cs
- HelpInfo.cs
- DataGridViewComboBoxEditingControl.cs
- documentation.cs
- ApplicationSettingsBase.cs
- figurelength.cs
- ColumnProvider.cs
- ScriptingAuthenticationServiceSection.cs
- ScrollableControl.cs
- PropertyChangingEventArgs.cs
- ChannelServices.cs
- WebBrowserPermission.cs
- TextRangeAdaptor.cs
- ParameterCollection.cs
- LogLogRecord.cs
- StateMachineDesignerPaint.cs
- SoundPlayerAction.cs
- ZoomingMessageFilter.cs
- KeyProperty.cs
- CachedResourceDictionaryExtension.cs
- Aggregates.cs
- XPathSelfQuery.cs
- CommentAction.cs
- StringFormat.cs
- XmlSchemaSimpleTypeList.cs
- StringWriter.cs
- Helpers.cs
- ItemList.cs
- MemoryStream.cs
- RuntimeIdentifierPropertyAttribute.cs
- WaitHandle.cs
- ProfileServiceManager.cs
- ChtmlCalendarAdapter.cs
- DataGridItemCollection.cs
- ColorDialog.cs
- TextViewBase.cs
- EditBehavior.cs
- Walker.cs
- GCHandleCookieTable.cs
- MSAAEventDispatcher.cs
- ComponentGlyph.cs
- XPathAncestorQuery.cs
- XmlReaderSettings.cs
- TdsRecordBufferSetter.cs
- SmtpFailedRecipientsException.cs