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
- PageStatePersister.cs
- XsdCachingReader.cs
- DBDataPermissionAttribute.cs
- ColumnMap.cs
- Qualifier.cs
- KoreanCalendar.cs
- TabPanel.cs
- BamlResourceDeserializer.cs
- DataGridRowDetailsEventArgs.cs
- LinkButton.cs
- GridEntry.cs
- FtpWebRequest.cs
- CodeBinaryOperatorExpression.cs
- DataBindingExpressionBuilder.cs
- RuntimeArgumentHandle.cs
- RtfNavigator.cs
- BindingOperations.cs
- ActivityPropertyReference.cs
- RsaSecurityTokenAuthenticator.cs
- PostBackOptions.cs
- newitemfactory.cs
- ToolStripRenderEventArgs.cs
- XmlTextReaderImpl.cs
- ServicesExceptionNotHandledEventArgs.cs
- GatewayDefinition.cs
- Span.cs
- BufferedStream.cs
- KeyProperty.cs
- TimelineGroup.cs
- DataGridHeaderBorder.cs
- ResourceBinder.cs
- OrderPreservingPipeliningSpoolingTask.cs
- GeometryHitTestResult.cs
- RequestContext.cs
- GridViewPageEventArgs.cs
- LinqDataSourceDeleteEventArgs.cs
- RubberbandSelector.cs
- TextEffect.cs
- CustomErrorCollection.cs
- EntityKeyElement.cs
- DynamicPhysicalDiscoSearcher.cs
- NotConverter.cs
- XmlSchemaAnnotated.cs
- HwndSourceParameters.cs
- SqlNamer.cs
- WindowsNonControl.cs
- PermissionSetTriple.cs
- ObjectListComponentEditor.cs
- SqlConnectionFactory.cs
- ListItemCollection.cs
- DataGridTableCollection.cs
- WindowsFormsSectionHandler.cs
- HttpCacheParams.cs
- ValidationEventArgs.cs
- FixedDocumentSequencePaginator.cs
- RightsManagementEncryptedStream.cs
- AnnotationResourceCollection.cs
- TcpActivation.cs
- TemplateBindingExtensionConverter.cs
- ThicknessAnimation.cs
- EntitySetRetriever.cs
- Ref.cs
- AssociationTypeEmitter.cs
- PenThread.cs
- TraceLevelStore.cs
- SqlProfileProvider.cs
- XmlSchemaSimpleTypeUnion.cs
- IconConverter.cs
- DBParameter.cs
- HttpAsyncResult.cs
- ThemeDirectoryCompiler.cs
- ColorAnimation.cs
- tibetanshape.cs
- ToolboxComponentsCreatedEventArgs.cs
- SHA1CryptoServiceProvider.cs
- WebHttpElement.cs
- EventListener.cs
- PolyBezierSegmentFigureLogic.cs
- CodeNamespaceImport.cs
- Hash.cs
- AddInProcess.cs
- CompilerInfo.cs
- ToolStripDropDownDesigner.cs
- StaticDataManager.cs
- TypeTypeConverter.cs
- DataGridViewRow.cs
- SessionStateItemCollection.cs
- Window.cs
- QilPatternVisitor.cs
- VirtualizingStackPanel.cs
- ReadOnlyDataSourceView.cs
- ListViewTableCell.cs
- MobileCapabilities.cs
- HostProtectionPermission.cs
- ToolboxComponentsCreatingEventArgs.cs
- CodeSubDirectoriesCollection.cs
- MimeMapping.cs
- PropertyDescriptorGridEntry.cs
- XmlSerializerAssemblyAttribute.cs
- SafeHandle.cs