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
- ModelPerspective.cs
- UdpDiscoveryEndpointProvider.cs
- linebase.cs
- BypassElement.cs
- DataKeyCollection.cs
- PingOptions.cs
- XMLSchema.cs
- BulletChrome.cs
- FileUtil.cs
- XmlTextReaderImplHelpers.cs
- WebBrowserUriTypeConverter.cs
- Queue.cs
- LoginView.cs
- DateTimeOffset.cs
- NestPullup.cs
- Command.cs
- XmlWriterSettings.cs
- DispatcherFrame.cs
- TraceContextEventArgs.cs
- ProviderBase.cs
- CanonicalXml.cs
- BulletChrome.cs
- QilSortKey.cs
- PeerNearMe.cs
- BrowserTree.cs
- BaseDataBoundControlDesigner.cs
- CustomValidator.cs
- Sql8ConformanceChecker.cs
- TaskResultSetter.cs
- EntityDataSourceChangingEventArgs.cs
- TabControl.cs
- ObjectSecurity.cs
- XmlSchemaAttribute.cs
- ProcessHostServerConfig.cs
- StyleHelper.cs
- Rotation3D.cs
- WebMessageFormatHelper.cs
- WindowsIdentity.cs
- ClientScriptManager.cs
- WebPartsPersonalization.cs
- EncryptedKeyIdentifierClause.cs
- Int32CollectionConverter.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- ToolStripOverflowButton.cs
- COM2PictureConverter.cs
- HttpEncoder.cs
- smtppermission.cs
- GraphicsPath.cs
- RegexCapture.cs
- SendKeys.cs
- Interlocked.cs
- AsymmetricAlgorithm.cs
- WorkflowServiceBuildProvider.cs
- Variant.cs
- AttributeData.cs
- SAPICategories.cs
- UrlPath.cs
- EncodingInfo.cs
- ScriptIgnoreAttribute.cs
- DocumentPageView.cs
- SoapFaultCodes.cs
- SafeSystemMetrics.cs
- FormsAuthenticationEventArgs.cs
- HMACSHA384.cs
- ButtonBaseAdapter.cs
- BindingExpressionUncommonField.cs
- RequestQueue.cs
- TypeElementCollection.cs
- HtmlButton.cs
- MdiWindowListItemConverter.cs
- SqlInfoMessageEvent.cs
- SqlInternalConnection.cs
- TransactionBridgeSection.cs
- documentsequencetextcontainer.cs
- LocatorManager.cs
- PropertyChangedEventManager.cs
- SecUtil.cs
- UIAgentAsyncParams.cs
- PersonalizablePropertyEntry.cs
- ResourceAssociationSetEnd.cs
- ErrorTableItemStyle.cs
- DataGridRelationshipRow.cs
- MonitorWrapper.cs
- CatalogPart.cs
- EmptyQuery.cs
- querybuilder.cs
- ClonableStack.cs
- ResourcesChangeInfo.cs
- XmlSchemaSimpleContentExtension.cs
- ContractsBCL.cs
- PageTheme.cs
- DecimalConstantAttribute.cs
- CaseStatement.cs
- EncodingInfo.cs
- GatewayDefinition.cs
- ResourcePart.cs
- SchemaMapping.cs
- Classification.cs
- SimpleRecyclingCache.cs
- HMACSHA256.cs