Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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.
//
//-----------------------------------------------------------------------------
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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- X509InitiatorCertificateServiceElement.cs
- PenContext.cs
- DataTableMappingCollection.cs
- MatcherBuilder.cs
- ListenerConnectionDemuxer.cs
- CaseStatement.cs
- CaseStatementSlot.cs
- EmptyControlCollection.cs
- XmlComplianceUtil.cs
- TextTreeUndo.cs
- CurrentChangingEventArgs.cs
- RuntimeWrappedException.cs
- UserNameServiceElement.cs
- ExcludePathInfo.cs
- StickyNoteAnnotations.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- HyperlinkAutomationPeer.cs
- UpdateManifestForBrowserApplication.cs
- ContextBase.cs
- RegisteredArrayDeclaration.cs
- SerializableAttribute.cs
- DoWorkEventArgs.cs
- LifetimeMonitor.cs
- ValidationErrorCollection.cs
- EntityProviderServices.cs
- UpdateRecord.cs
- DataGridColumnCollection.cs
- FontEmbeddingManager.cs
- QuestionEventArgs.cs
- RouteValueDictionary.cs
- LambdaCompiler.Address.cs
- FormViewUpdateEventArgs.cs
- ResourceSet.cs
- CompilationUtil.cs
- EditorPartCollection.cs
- ResourceExpressionEditorSheet.cs
- CipherData.cs
- TypeLoadException.cs
- FastPropertyAccessor.cs
- JoinSymbol.cs
- XmlC14NWriter.cs
- DummyDataSource.cs
- XmlDataSourceNodeDescriptor.cs
- DelegatedStream.cs
- DiagnosticTraceSource.cs
- XmlCharCheckingReader.cs
- XmlTypeAttribute.cs
- PersonalizationEntry.cs
- ChangePassword.cs
- FilterInvalidBodyAccessException.cs
- CodeConditionStatement.cs
- GridItemCollection.cs
- SqlDataReaderSmi.cs
- EnumType.cs
- ComboBox.cs
- CodeExpressionStatement.cs
- LocalValueEnumerator.cs
- DrawingContextDrawingContextWalker.cs
- SequenceDesigner.cs
- FieldBuilder.cs
- Material.cs
- ServiceModelReg.cs
- Context.cs
- PixelShader.cs
- QuaternionRotation3D.cs
- OleDbConnection.cs
- DocumentPageTextView.cs
- WorkflowCompensationBehavior.cs
- QuadraticBezierSegment.cs
- InspectionWorker.cs
- Facet.cs
- UniqueConstraint.cs
- DBAsyncResult.cs
- dtdvalidator.cs
- StatusBarPanel.cs
- HMACSHA256.cs
- PageThemeBuildProvider.cs
- WinInetCache.cs
- CrossSiteScriptingValidation.cs
- TabItem.cs
- PageThemeParser.cs
- DropTarget.cs
- RawMouseInputReport.cs
- MenuCommandsChangedEventArgs.cs
- PlatformCulture.cs
- DescendantQuery.cs
- VerificationAttribute.cs
- MetadataUtil.cs
- DbDataAdapter.cs
- RoleService.cs
- ListViewCancelEventArgs.cs
- WrappedIUnknown.cs
- PenThread.cs
- AuthorizationRule.cs
- HotCommands.cs
- ClientReliableChannelBinder.cs
- FragmentNavigationEventArgs.cs
- ResumeStoryboard.cs
- ActivityTypeCodeDomSerializer.cs
- ReflectionUtil.cs