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
- GridLengthConverter.cs
- SequenceNumber.cs
- LayoutInformation.cs
- FixedDocumentSequencePaginator.cs
- ResolveDuplexCD1AsyncResult.cs
- VisualStyleRenderer.cs
- CqlGenerator.cs
- CustomErrorCollection.cs
- AccessedThroughPropertyAttribute.cs
- SectionInformation.cs
- RangeBaseAutomationPeer.cs
- XmlSchemaAll.cs
- ExpressionBuilder.cs
- DataSysAttribute.cs
- DataRowIndexBuffer.cs
- Parsers.cs
- SQLSingle.cs
- EUCJPEncoding.cs
- RemotingConfiguration.cs
- SqlUtils.cs
- ScrollPattern.cs
- CodeObjectCreateExpression.cs
- ValidatorCollection.cs
- SqlCacheDependency.cs
- TimeStampChecker.cs
- PrinterUnitConvert.cs
- ControlValuePropertyAttribute.cs
- AccessedThroughPropertyAttribute.cs
- ToolStripControlHost.cs
- Scalars.cs
- PageVisual.cs
- AddInController.cs
- GroupJoinQueryOperator.cs
- NetDataContractSerializer.cs
- ValuePattern.cs
- ValidatorCollection.cs
- ServiceCredentials.cs
- ExceptionUtil.cs
- SemaphoreSecurity.cs
- AdornedElementPlaceholder.cs
- SoapSchemaExporter.cs
- Helper.cs
- NativeMethods.cs
- RadioButtonPopupAdapter.cs
- PersianCalendar.cs
- PlatformCulture.cs
- XPathEmptyIterator.cs
- TargetPerspective.cs
- RenderContext.cs
- StateMachineWorkflowInstance.cs
- AccessDataSourceDesigner.cs
- smtppermission.cs
- FileSystemInfo.cs
- Rights.cs
- RuleSetDialog.Designer.cs
- DataGridViewHitTestInfo.cs
- DrawingBrush.cs
- SqlRemoveConstantOrderBy.cs
- SystemWebSectionGroup.cs
- LongTypeConverter.cs
- DateTimeUtil.cs
- DBBindings.cs
- UnaryNode.cs
- UserControl.cs
- ConnectionPoolManager.cs
- Deflater.cs
- UInt16Storage.cs
- GAC.cs
- EntityClassGenerator.cs
- ConnectionPool.cs
- MenuItemStyleCollection.cs
- sitestring.cs
- SubMenuStyleCollection.cs
- BitmapEffectGeneralTransform.cs
- ServiceBuildProvider.cs
- SqlCaseSimplifier.cs
- RectAnimation.cs
- UnsafeNativeMethodsTablet.cs
- SpeechSynthesizer.cs
- DbParameterCollectionHelper.cs
- WebPartExportVerb.cs
- Calendar.cs
- PenThreadWorker.cs
- ReachDocumentPageSerializer.cs
- MaskedTextProvider.cs
- KnownColorTable.cs
- SharedMemory.cs
- BrowserDefinitionCollection.cs
- ObjectDataSourceView.cs
- TimeSpanValidatorAttribute.cs
- SqlGenerator.cs
- TextParaLineResult.cs
- TypeTypeConverter.cs
- XmlSchemaValidator.cs
- SymbolType.cs
- UniqueIdentifierService.cs
- WebContext.cs
- RequestCacheValidator.cs
- AttributeCollection.cs
- HostProtectionPermission.cs