Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / clr / src / BCL / System / Reflection / StrongNameKeyPair.cs / 1 / StrongNameKeyPair.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** File: StrongNameKeyPair.cs ** ** ** Purpose: Encapsulate access to a public/private key pair ** used to sign strong name assemblies. ** ** ===========================================================*/ namespace System.Reflection { using System; using System.IO; using System.Runtime.CompilerServices; using System.Runtime.Serialization; using System.Security.Permissions; [Serializable()] [System.Runtime.InteropServices.ComVisible(true)] public class StrongNameKeyPair : IDeserializationCallback, ISerializable { private bool _keyPairExported; private byte[] _keyPairArray; private String _keyPairContainer; private byte[] _publicKey; // Build key pair from file. [SecurityPermissionAttribute(SecurityAction.Demand, Flags=SecurityPermissionFlag.UnmanagedCode)] public StrongNameKeyPair(FileStream keyPairFile) { if (keyPairFile == null) throw new ArgumentNullException("keyPairFile"); int length = (int)keyPairFile.Length; _keyPairArray = new byte[length]; keyPairFile.Read(_keyPairArray, 0, length); _keyPairExported = true; } // Build key pair from byte array in memory. [SecurityPermissionAttribute(SecurityAction.Demand, Flags=SecurityPermissionFlag.UnmanagedCode)] public StrongNameKeyPair(byte[] keyPairArray) { if (keyPairArray == null) throw new ArgumentNullException("keyPairArray"); _keyPairArray = new byte[keyPairArray.Length]; Array.Copy(keyPairArray, _keyPairArray, keyPairArray.Length); _keyPairExported = true; } // Reference key pair in named key container. [SecurityPermissionAttribute(SecurityAction.Demand, Flags=SecurityPermissionFlag.UnmanagedCode)] public StrongNameKeyPair(String keyPairContainer) { if (keyPairContainer == null) throw new ArgumentNullException("keyPairContainer"); _keyPairContainer = keyPairContainer; _keyPairExported = false; } [SecurityPermissionAttribute(SecurityAction.Demand, Flags=SecurityPermissionFlag.UnmanagedCode)] protected StrongNameKeyPair (SerializationInfo info, StreamingContext context) { _keyPairExported = (bool) info.GetValue("_keyPairExported", typeof(bool)); _keyPairArray = (byte[]) info.GetValue("_keyPairArray", typeof(byte[])); _keyPairContainer = (string) info.GetValue("_keyPairContainer", typeof(string)); _publicKey = (byte[]) info.GetValue("_publicKey", typeof(byte[])); } // Get the public portion of the key pair. public byte[] PublicKey { get { if (_publicKey == null) { _publicKey = nGetPublicKey(_keyPairExported, _keyPairArray, _keyPairContainer); } byte[] publicKey = new byte[_publicKey.Length]; Array.Copy(_publicKey, publicKey, _publicKey.Length); return publicKey; } } ///void ISerializable.GetObjectData (SerializationInfo info, StreamingContext context) { info.AddValue("_keyPairExported", _keyPairExported); info.AddValue("_keyPairArray", _keyPairArray); info.AddValue("_keyPairContainer", _keyPairContainer); info.AddValue("_publicKey", _publicKey); } /// void IDeserializationCallback.OnDeserialization (Object sender) {} // Internal routine used to retrieve key pair info from unmanaged code. private bool GetKeyPair(out Object arrayOrContainer) { arrayOrContainer = _keyPairExported ? (Object)_keyPairArray : (Object)_keyPairContainer; return _keyPairExported; } [MethodImplAttribute(MethodImplOptions.InternalCall)] private extern byte[] nGetPublicKey(bool exported, byte[] array, String container); } } // 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
- Win32.cs
- ProvidersHelper.cs
- AddInAttribute.cs
- WebPartDescription.cs
- ResXResourceWriter.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- DelegateSerializationHolder.cs
- CodeVariableDeclarationStatement.cs
- HttpException.cs
- EntityTypeEmitter.cs
- VectorAnimationBase.cs
- RequiredFieldValidator.cs
- EdmComplexPropertyAttribute.cs
- TableStyle.cs
- mediaeventshelper.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- StrongNameUtility.cs
- FloatUtil.cs
- IdentitySection.cs
- WindowsToolbarItemAsMenuItem.cs
- SqlDataSource.cs
- TdsParser.cs
- Win32PrintDialog.cs
- DragStartedEventArgs.cs
- RemoteWebConfigurationHostServer.cs
- CompiledELinqQueryState.cs
- ListViewTableCell.cs
- XmlCustomFormatter.cs
- CornerRadius.cs
- DocumentGridPage.cs
- DataPagerFieldItem.cs
- TextElementEditingBehaviorAttribute.cs
- SecurityUniqueId.cs
- ContainerParaClient.cs
- AuthenticationModulesSection.cs
- SmtpNetworkElement.cs
- EtwTrackingParticipant.cs
- HttpRuntimeSection.cs
- XmlValueConverter.cs
- Util.cs
- SqlServices.cs
- Int32AnimationUsingKeyFrames.cs
- StubHelpers.cs
- CryptoHelper.cs
- XmlCodeExporter.cs
- CharAnimationUsingKeyFrames.cs
- Model3DGroup.cs
- RouteData.cs
- ObjectPersistData.cs
- DiscoveryDocument.cs
- MsmqIntegrationChannelListener.cs
- VisualBasicSettingsHandler.cs
- BookmarkOptionsHelper.cs
- XamlSerializerUtil.cs
- IdleTimeoutMonitor.cs
- ScriptServiceAttribute.cs
- XmlQualifiedNameTest.cs
- ConnectionStringSettings.cs
- WbemProvider.cs
- ToolStripPanelDesigner.cs
- TypeConverter.cs
- DecimalConverter.cs
- ComponentCommands.cs
- ClientData.cs
- Calendar.cs
- ClientSettingsStore.cs
- TrustManagerMoreInformation.cs
- ModelFunctionTypeElement.cs
- HtmlGenericControl.cs
- CancelEventArgs.cs
- AuthenticatedStream.cs
- PathParser.cs
- CodeThrowExceptionStatement.cs
- FillErrorEventArgs.cs
- WorkflowQueueInfo.cs
- ClientProxyGenerator.cs
- ExpressionConverter.cs
- WebServiceMethodData.cs
- ProjectionPruner.cs
- ServiceDescriptionSerializer.cs
- DataGridViewCellMouseEventArgs.cs
- BoundColumn.cs
- PrtTicket_Public.cs
- ThreadExceptionDialog.cs
- XComponentModel.cs
- DeviceContext.cs
- ClockController.cs
- SafeArrayRankMismatchException.cs
- DiscoveryClientChannelBase.cs
- CodeTypeDelegate.cs
- DataDocumentXPathNavigator.cs
- TrailingSpaceComparer.cs
- NumberFunctions.cs
- RangeValuePattern.cs
- UndoManager.cs
- LongValidator.cs
- SystemPens.cs
- SessionStateModule.cs
- OuterGlowBitmapEffect.cs
- ForwardPositionQuery.cs