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
- SchemaTypeEmitter.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- SingleAnimationUsingKeyFrames.cs
- BulletChrome.cs
- ReservationNotFoundException.cs
- DesignObjectWrapper.cs
- EntityDataSourceMemberPath.cs
- DefaultTraceListener.cs
- DefaultObjectMappingItemCollection.cs
- StaticDataManager.cs
- HttpHandlerAction.cs
- ExpressionBuilder.cs
- Point3DCollectionValueSerializer.cs
- MSAAEventDispatcher.cs
- SmtpClient.cs
- PatternMatcher.cs
- DefaultBindingPropertyAttribute.cs
- CodeCompileUnit.cs
- UInt16Converter.cs
- TcpClientChannel.cs
- ClientRuntimeConfig.cs
- DynamicPropertyHolder.cs
- ConcurrencyMode.cs
- StrongNamePublicKeyBlob.cs
- UIHelper.cs
- WebControl.cs
- Vector3DValueSerializer.cs
- CopyNamespacesAction.cs
- XmlSiteMapProvider.cs
- StreamGeometry.cs
- EncodingDataItem.cs
- TableRow.cs
- BookmarkScopeInfo.cs
- XmlSchemaAttributeGroupRef.cs
- HttpListenerResponse.cs
- TdsParameterSetter.cs
- AttachedPropertyDescriptor.cs
- InlineUIContainer.cs
- PrintDialog.cs
- X509ServiceCertificateAuthentication.cs
- ModelVisual3D.cs
- TagPrefixAttribute.cs
- Recipient.cs
- InputReferenceExpression.cs
- TypeDependencyAttribute.cs
- AsyncResult.cs
- PropertyDescriptor.cs
- WsatExtendedInformation.cs
- CacheRequest.cs
- control.ime.cs
- IndexerNameAttribute.cs
- ChannelSinkStacks.cs
- DefaultObjectMappingItemCollection.cs
- IssuedTokenParametersElement.cs
- AuthenticationManager.cs
- ItemCheckEvent.cs
- BCLDebug.cs
- DataComponentNameHandler.cs
- ConfigurationElementProperty.cs
- HwndPanningFeedback.cs
- StaticExtensionConverter.cs
- RangeValidator.cs
- ResourceManagerWrapper.cs
- xmlglyphRunInfo.cs
- Registry.cs
- GenericAuthenticationEventArgs.cs
- GlobalizationAssembly.cs
- Int32AnimationBase.cs
- TdsParser.cs
- SessionSwitchEventArgs.cs
- TaskExtensions.cs
- QueueTransferProtocol.cs
- ColumnResizeUndoUnit.cs
- TextContainer.cs
- DataPointer.cs
- PointKeyFrameCollection.cs
- FileUtil.cs
- newinstructionaction.cs
- Pens.cs
- XmlBinaryReader.cs
- ApplicationGesture.cs
- AssociationSet.cs
- AssemblySettingAttributes.cs
- BitmapEffectInputData.cs
- storepermission.cs
- RecognitionResult.cs
- ColorAnimationBase.cs
- InitializingNewItemEventArgs.cs
- TypeLibraryHelper.cs
- sqlstateclientmanager.cs
- GridViewUpdateEventArgs.cs
- WebColorConverter.cs
- ObjectStateManager.cs
- FixedSOMElement.cs
- ManipulationVelocities.cs
- SoapSchemaExporter.cs
- AssemblyName.cs
- EntityParameterCollection.cs
- AnimationTimeline.cs
- AssemblyBuilder.cs