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
- NetworkCredential.cs
- StorageEntitySetMapping.cs
- AssemblyCollection.cs
- TableLayoutColumnStyleCollection.cs
- GZipObjectSerializer.cs
- ErrorInfoXmlDocument.cs
- ClientReliableChannelBinder.cs
- Identifier.cs
- DependencyPropertyKind.cs
- FontNameEditor.cs
- BindingUtils.cs
- EnumValidator.cs
- FolderLevelBuildProviderAppliesToAttribute.cs
- TextModifier.cs
- MarkupCompilePass2.cs
- HistoryEventArgs.cs
- BinHexDecoder.cs
- ControlCachePolicy.cs
- ExceptionUtil.cs
- ValueUnavailableException.cs
- PhoneCallDesigner.cs
- DocumentOrderComparer.cs
- TypeEnumerableViewSchema.cs
- Argument.cs
- XmlSchemaInferenceException.cs
- _ListenerAsyncResult.cs
- PEFileReader.cs
- CommonXSendMessage.cs
- ManagedFilter.cs
- ColorTransformHelper.cs
- LassoSelectionBehavior.cs
- Internal.cs
- WebProxyScriptElement.cs
- PinProtectionHelper.cs
- ConnectionManagementElementCollection.cs
- ExtensionSimplifierMarkupObject.cs
- DesignTimeDataBinding.cs
- XmlSchemaGroup.cs
- RTLAwareMessageBox.cs
- ClientSession.cs
- MaskedTextBoxDesigner.cs
- DesignerVerbToolStripMenuItem.cs
- ProfileSettings.cs
- XMLSyntaxException.cs
- _IPv4Address.cs
- DuplexChannelBinder.cs
- LinqDataSourceContextData.cs
- NullableDecimalAverageAggregationOperator.cs
- TemplateControlBuildProvider.cs
- LogSwitch.cs
- EnumerableRowCollectionExtensions.cs
- UpdateTracker.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- TextBoxAutomationPeer.cs
- RuntimeEnvironment.cs
- ProfileInfo.cs
- EventSource.cs
- FileNotFoundException.cs
- RoleService.cs
- UTF7Encoding.cs
- ResourceProviderFactory.cs
- EntityClientCacheEntry.cs
- EventSinkHelperWriter.cs
- StdValidatorsAndConverters.cs
- WebServiceFaultDesigner.cs
- ConfigurationManagerHelper.cs
- DoubleConverter.cs
- CopyNodeSetAction.cs
- MediaElement.cs
- GridViewItemAutomationPeer.cs
- ToolStripPanelRow.cs
- Part.cs
- ProxyRpc.cs
- FillBehavior.cs
- XmlSchemaSet.cs
- MissingFieldException.cs
- EDesignUtil.cs
- SqlInternalConnection.cs
- WebPartsPersonalizationAuthorization.cs
- DataListAutoFormat.cs
- SiteMapSection.cs
- MembershipSection.cs
- LinqDataSourceHelper.cs
- ReadOnlyNameValueCollection.cs
- Int32Rect.cs
- SectionVisual.cs
- XmlObjectSerializer.cs
- LabelDesigner.cs
- ProcessProtocolHandler.cs
- GroupQuery.cs
- CompositeCollectionView.cs
- BitmapMetadataBlob.cs
- InvalidContentTypeException.cs
- EntitySqlQueryBuilder.cs
- UIPermission.cs
- WebPartDisplayMode.cs
- XPathDocumentBuilder.cs
- ZoneButton.cs
- FormattedTextSymbols.cs
- WebPartConnection.cs