Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / 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); } }
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CacheAxisQuery.cs
- ColorBlend.cs
- SortedList.cs
- OperationAbortedException.cs
- SqlLiftWhereClauses.cs
- ResourceProviderFactory.cs
- HtmlInputText.cs
- DPCustomTypeDescriptor.cs
- GenericXmlSecurityToken.cs
- UniqueID.cs
- InvariantComparer.cs
- Validator.cs
- OdbcConnection.cs
- PtsHelper.cs
- BindingContext.cs
- LoginDesigner.cs
- XpsSerializationException.cs
- XmlMembersMapping.cs
- DataBindingCollection.cs
- PersistStreamTypeWrapper.cs
- CfgSemanticTag.cs
- SqlNotificationEventArgs.cs
- RectIndependentAnimationStorage.cs
- ResourceAttributes.cs
- PaintEvent.cs
- TreeNodeClickEventArgs.cs
- SystemIPGlobalStatistics.cs
- CustomErrorsSectionWrapper.cs
- WorkBatch.cs
- NamespaceList.cs
- ArglessEventHandlerProxy.cs
- EventsTab.cs
- FillBehavior.cs
- SolidColorBrush.cs
- FragmentQueryKB.cs
- XmlChildEnumerator.cs
- XDeferredAxisSource.cs
- FlagsAttribute.cs
- SplayTreeNode.cs
- SafeProcessHandle.cs
- ColumnMapCopier.cs
- CapabilitiesSection.cs
- EndpointAddressElementBase.cs
- ToolboxItem.cs
- AnnotationHighlightLayer.cs
- ComAdminWrapper.cs
- TraceSection.cs
- TdsParameterSetter.cs
- XD.cs
- TypeConverterHelper.cs
- RenderData.cs
- SerializationFieldInfo.cs
- Activity.cs
- ValidationErrorEventArgs.cs
- ProcessingInstructionAction.cs
- VectorCollection.cs
- StaticExtension.cs
- OneOfElement.cs
- _HeaderInfoTable.cs
- RouteCollection.cs
- DnsPermission.cs
- BlockCollection.cs
- thaishape.cs
- StructuralCache.cs
- x509utils.cs
- ErrorFormatterPage.cs
- LinkArea.cs
- WorkflowLayouts.cs
- EditorBrowsableAttribute.cs
- WindowsAuthenticationEventArgs.cs
- CommandTreeTypeHelper.cs
- SiteMapSection.cs
- Utils.cs
- DataControlImageButton.cs
- CapabilitiesUse.cs
- HttpApplication.cs
- SymmetricAlgorithm.cs
- ConfigXmlWhitespace.cs
- SHA512Managed.cs
- ApplicationDirectoryMembershipCondition.cs
- IEnumerable.cs
- CodeMemberMethod.cs
- ProjectionPathBuilder.cs
- DataGridViewCheckBoxColumn.cs
- FontSizeConverter.cs
- VScrollProperties.cs
- StrokeCollectionDefaultValueFactory.cs
- QilPatternFactory.cs
- StoryFragments.cs
- XsltQilFactory.cs
- AsyncCodeActivityContext.cs
- LogRestartAreaEnumerator.cs
- ReferencedType.cs
- UrlMappingsSection.cs
- CodeDOMUtility.cs
- SqlMethodAttribute.cs
- Rect.cs
- DataSourceCacheDurationConverter.cs
- RowSpanVector.cs
- ConditionValidator.cs