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
- DefaultShape.cs
- EditorAttribute.cs
- StylusPlugin.cs
- LabelEditEvent.cs
- ColorPalette.cs
- WebPartsSection.cs
- FieldTemplateUserControl.cs
- CompareValidator.cs
- Cloud.cs
- WebRequestModuleElementCollection.cs
- SignatureResourcePool.cs
- Int32RectValueSerializer.cs
- CodeDomSerializerException.cs
- HttpServerVarsCollection.cs
- WorkingDirectoryEditor.cs
- WindowsFormsLinkLabel.cs
- RegexCaptureCollection.cs
- ServicePointManager.cs
- MissingMethodException.cs
- ArgumentDirectionHelper.cs
- Asn1IntegerConverter.cs
- Marshal.cs
- FrameworkContentElement.cs
- MetadataStore.cs
- ResXBuildProvider.cs
- PropertyGridEditorPart.cs
- Trace.cs
- GuidelineSet.cs
- HtmlLink.cs
- RegexCode.cs
- HitTestParameters3D.cs
- DrawingAttributesDefaultValueFactory.cs
- ResourceCategoryAttribute.cs
- DelimitedListTraceListener.cs
- WindowsListViewItemStartMenu.cs
- control.ime.cs
- UrlAuthorizationModule.cs
- HandleValueEditor.cs
- ObjectIDGenerator.cs
- EncodingStreamWrapper.cs
- SqlCaseSimplifier.cs
- ThreadExceptionEvent.cs
- IPHostEntry.cs
- diagnosticsswitches.cs
- EntityDataSourceReferenceGroup.cs
- FormViewDeletedEventArgs.cs
- KeyProperty.cs
- GridViewDeletedEventArgs.cs
- InArgument.cs
- TagPrefixAttribute.cs
- FormParameter.cs
- CollectionChangeEventArgs.cs
- _LocalDataStoreMgr.cs
- ConfigurationManagerHelperFactory.cs
- Int32RectValueSerializer.cs
- WindowsFont.cs
- XPathBinder.cs
- DesignerVerbCollection.cs
- MachineKeyConverter.cs
- ZoneButton.cs
- StringDictionary.cs
- SchemaObjectWriter.cs
- DynamicQueryStringParameter.cs
- OdbcInfoMessageEvent.cs
- ConnectorDragDropGlyph.cs
- ReachDocumentReferenceSerializerAsync.cs
- CodeMemberProperty.cs
- MachineKeyConverter.cs
- cryptoapiTransform.cs
- GenericUI.cs
- RestClientProxyHandler.cs
- ImmComposition.cs
- TreeView.cs
- UIElementPropertyUndoUnit.cs
- MissingManifestResourceException.cs
- WebControlAdapter.cs
- DataFormat.cs
- PointLight.cs
- CollectionChangeEventArgs.cs
- MapPathBasedVirtualPathProvider.cs
- DataSourceComponent.cs
- CollectionType.cs
- ClientTargetCollection.cs
- TemplateBindingExtensionConverter.cs
- FormCollection.cs
- SystemIcmpV6Statistics.cs
- _ServiceNameStore.cs
- PermissionRequestEvidence.cs
- IsolatedStorageSecurityState.cs
- HelpProvider.cs
- HasCopySemanticsAttribute.cs
- InvalidCastException.cs
- Camera.cs
- HttpException.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- Rect3DValueSerializer.cs
- VSWCFServiceContractGenerator.cs
- Lookup.cs
- DefaultIfEmptyQueryOperator.cs
- TypeCacheManager.cs