Code:
/ FX-1434 / FX-1434 / 1.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
- PenCursorManager.cs
- GenericNameHandler.cs
- ItemContainerProviderWrapper.cs
- DBConnection.cs
- ImageBrush.cs
- DashStyle.cs
- Stream.cs
- OleDbInfoMessageEvent.cs
- ScriptingWebServicesSectionGroup.cs
- EnumDataContract.cs
- RepeatEnumerable.cs
- Rectangle.cs
- GeneralTransform2DTo3DTo2D.cs
- GlobalEventManager.cs
- ArrayWithOffset.cs
- NotifyCollectionChangedEventArgs.cs
- OwnerDrawPropertyBag.cs
- DefaultValueAttribute.cs
- DiffuseMaterial.cs
- HandleCollector.cs
- SqlRewriteScalarSubqueries.cs
- DelegateHelpers.Generated.cs
- VectorAnimationBase.cs
- Point4DConverter.cs
- SmiMetaDataProperty.cs
- XPathDocumentIterator.cs
- RelationshipDetailsRow.cs
- Grant.cs
- PropertyTabAttribute.cs
- BoundsDrawingContextWalker.cs
- InputReferenceExpression.cs
- ActivityBuilderXamlWriter.cs
- Geometry.cs
- Serializer.cs
- StyleReferenceConverter.cs
- TraceData.cs
- _WinHttpWebProxyDataBuilder.cs
- DrawingAttributesDefaultValueFactory.cs
- AddInControllerImpl.cs
- _Semaphore.cs
- OleDbParameter.cs
- HttpCapabilitiesBase.cs
- PenLineJoinValidation.cs
- SamlDoNotCacheCondition.cs
- XmlJsonWriter.cs
- AttributeAction.cs
- WebPartVerbCollection.cs
- SecondaryIndex.cs
- FilterQuery.cs
- TextElementCollectionHelper.cs
- EntityContainerEmitter.cs
- Matrix.cs
- Expressions.cs
- KeyTime.cs
- ComAwareEventInfo.cs
- SmiContext.cs
- BindingContext.cs
- XmlSchemaSubstitutionGroup.cs
- WizardStepBase.cs
- FullTextBreakpoint.cs
- PointHitTestResult.cs
- SafeRightsManagementEnvironmentHandle.cs
- SafeArrayRankMismatchException.cs
- NamespaceInfo.cs
- SByte.cs
- PagedDataSource.cs
- _BasicClient.cs
- GrammarBuilderBase.cs
- URLAttribute.cs
- LockCookie.cs
- CodeMethodMap.cs
- ClientSideProviderDescription.cs
- CodeSnippetStatement.cs
- SerializationObjectManager.cs
- WebBaseEventKeyComparer.cs
- SqlInternalConnectionTds.cs
- EntityType.cs
- ComponentCommands.cs
- ellipse.cs
- Lasso.cs
- NamespaceList.cs
- DomainConstraint.cs
- DataGridBoolColumn.cs
- DesignTimeTemplateParser.cs
- WebPartDeleteVerb.cs
- ListenerConfig.cs
- WebServiceTypeData.cs
- EntityClientCacheKey.cs
- LockedAssemblyCache.cs
- ExtendedPropertyDescriptor.cs
- TextFormatterContext.cs
- HelpEvent.cs
- HandleCollector.cs
- CommandBindingCollection.cs
- XmlImplementation.cs
- JoinSymbol.cs
- DSASignatureFormatter.cs
- TdsValueSetter.cs
- BinaryCommonClasses.cs
- QuaternionAnimation.cs