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
- ListDependantCardsRequest.cs
- ScalarType.cs
- FlowNode.cs
- _NtlmClient.cs
- HttpHeaderCollection.cs
- RegexMatchCollection.cs
- ColorDialog.cs
- SynchronizedInputProviderWrapper.cs
- Int32RectConverter.cs
- InfoCardProofToken.cs
- Pair.cs
- EncryptedPackage.cs
- DataSysAttribute.cs
- TextFormatterHost.cs
- XPathSelectionIterator.cs
- DoubleLinkListEnumerator.cs
- AdapterUtil.cs
- MenuStrip.cs
- CanonicalFontFamilyReference.cs
- TextDecorationLocationValidation.cs
- DataSourceCache.cs
- IisTraceWebEventProvider.cs
- DataPagerFieldCollection.cs
- XPathExpr.cs
- SafeProcessHandle.cs
- AlternateViewCollection.cs
- EventLogPermissionEntryCollection.cs
- ListView.cs
- SingleAnimationUsingKeyFrames.cs
- Attributes.cs
- BoolExpressionVisitors.cs
- DataGridViewRowHeaderCell.cs
- BatchServiceHost.cs
- WindowsTooltip.cs
- HMACSHA512.cs
- SqlUserDefinedTypeAttribute.cs
- HeaderCollection.cs
- Int16.cs
- RenderContext.cs
- DataObjectAttribute.cs
- SQLMoneyStorage.cs
- ToolboxItemFilterAttribute.cs
- SelectionProcessor.cs
- MarginsConverter.cs
- SqlRowUpdatingEvent.cs
- XmlRawWriterWrapper.cs
- RegexRunner.cs
- CompilerErrorCollection.cs
- odbcmetadatacollectionnames.cs
- ViewStateModeByIdAttribute.cs
- CodeSubDirectoriesCollection.cs
- ConnectionsZone.cs
- FileLogRecord.cs
- QilInvokeLateBound.cs
- DataControlButton.cs
- PageContent.cs
- SafeNativeMethods.cs
- SafeFreeMibTable.cs
- ProfileModule.cs
- OdbcConnectionOpen.cs
- StringCollectionEditor.cs
- ObjectDataSourceFilteringEventArgs.cs
- SimpleBitVector32.cs
- QilInvokeLateBound.cs
- infer.cs
- ValidatingReaderNodeData.cs
- PropertyChangingEventArgs.cs
- WebPartEditorApplyVerb.cs
- SelectingProviderEventArgs.cs
- TypeReference.cs
- HashCodeCombiner.cs
- Int64KeyFrameCollection.cs
- EditingScope.cs
- SymmetricAlgorithm.cs
- DataSourceCollectionBase.cs
- CellTreeNode.cs
- Authorization.cs
- XamlVector3DCollectionSerializer.cs
- OneToOneMappingSerializer.cs
- Events.cs
- PropertyGridView.cs
- DataGridViewComboBoxColumn.cs
- VirtualPath.cs
- DataRowComparer.cs
- EventLogPermissionEntry.cs
- GorillaCodec.cs
- TemplateNameScope.cs
- ObjectAnimationUsingKeyFrames.cs
- HttpCachePolicyElement.cs
- ColorTransformHelper.cs
- GB18030Encoding.cs
- InvalidWMPVersionException.cs
- FixedHighlight.cs
- DocumentManager.cs
- XmlILTrace.cs
- RepeatBehaviorConverter.cs
- ResourceManagerWrapper.cs
- PolicyValidationException.cs
- ServiceDesigner.xaml.cs
- NumberFunctions.cs