Code:
/ DotNET / DotNET / 8.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
- SimpleHandlerFactory.cs
- PtsHost.cs
- MulticastDelegate.cs
- Events.cs
- BitmapEffectGroup.cs
- QueryContinueDragEventArgs.cs
- TargetParameterCountException.cs
- SectionVisual.cs
- Cursors.cs
- ACL.cs
- FieldAccessException.cs
- RequestCacheValidator.cs
- KeyConstraint.cs
- AuthenticationService.cs
- QueryPageSettingsEventArgs.cs
- SimplePropertyEntry.cs
- WorkflowDebuggerSteppingAttribute.cs
- OrderByQueryOptionExpression.cs
- XmlSchemaGroupRef.cs
- WMIInterop.cs
- DataObjectAttribute.cs
- MouseActionConverter.cs
- DateTimeFormat.cs
- Floater.cs
- BamlTreeMap.cs
- ConvertersCollection.cs
- SqlUserDefinedTypeAttribute.cs
- SecurityTokenInclusionMode.cs
- Border.cs
- DefaultProfileManager.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- EasingKeyFrames.cs
- DesignerVerb.cs
- TextLineBreak.cs
- SiteMembershipCondition.cs
- EllipseGeometry.cs
- UnmanagedMemoryStreamWrapper.cs
- TextShapeableCharacters.cs
- DSASignatureDeformatter.cs
- WebPartDescription.cs
- SelectionService.cs
- DrawingAttributes.cs
- SqlUdtInfo.cs
- InkSerializer.cs
- TreeNodeSelectionProcessor.cs
- ServiceDescription.cs
- NumberFormatInfo.cs
- ListViewItemEventArgs.cs
- KeySplineConverter.cs
- SHA256Managed.cs
- WindowsTokenRoleProvider.cs
- HitTestWithPointDrawingContextWalker.cs
- GridView.cs
- AliasedSlot.cs
- GiveFeedbackEvent.cs
- BaseParser.cs
- ColumnReorderedEventArgs.cs
- LifetimeManager.cs
- SqlStream.cs
- WebServiceClientProxyGenerator.cs
- RawAppCommandInputReport.cs
- InplaceBitmapMetadataWriter.cs
- PageCatalogPart.cs
- NameSpaceEvent.cs
- ReferenceTypeElement.cs
- CompensableActivity.cs
- ConnectionInterfaceCollection.cs
- SemaphoreFullException.cs
- BaseDataList.cs
- SubqueryRules.cs
- ControlEvent.cs
- StreamHelper.cs
- SiteMapNodeItemEventArgs.cs
- DocumentGridPage.cs
- LineServicesRun.cs
- HttpProtocolReflector.cs
- ClassicBorderDecorator.cs
- ListenerElementsCollection.cs
- TypeReference.cs
- Line.cs
- DataColumnPropertyDescriptor.cs
- AppDomainAttributes.cs
- PropertyGroupDescription.cs
- SerialErrors.cs
- MultiByteCodec.cs
- HMAC.cs
- TemplateBindingExtension.cs
- MetaColumn.cs
- FrameworkReadOnlyPropertyMetadata.cs
- Int16AnimationUsingKeyFrames.cs
- ValidationError.cs
- FixedSOMTableRow.cs
- EditorZone.cs
- ProgressBar.cs
- DetailsViewInsertEventArgs.cs
- Parameter.cs
- SchemaName.cs
- XmlTextReader.cs
- WindowsFormsHost.cs
- VirtualPathUtility.cs