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
- EUCJPEncoding.cs
- BevelBitmapEffect.cs
- PropertyEmitter.cs
- WinHttpWebProxyFinder.cs
- InvokeBinder.cs
- Table.cs
- FlowStep.cs
- StrokeIntersection.cs
- Point3DCollection.cs
- NodeLabelEditEvent.cs
- CodeMemberProperty.cs
- XmlSubtreeReader.cs
- DataPagerCommandEventArgs.cs
- CompareInfo.cs
- VisualTreeUtils.cs
- Point3DValueSerializer.cs
- BitConverter.cs
- HMACRIPEMD160.cs
- CqlGenerator.cs
- DriveNotFoundException.cs
- Odbc32.cs
- COM2PictureConverter.cs
- DataGridViewDataConnection.cs
- ProcessThread.cs
- GeometryModel3D.cs
- GenericUI.cs
- Adorner.cs
- TextAction.cs
- ListSourceHelper.cs
- MailWebEventProvider.cs
- BitmapInitialize.cs
- HtmlInputFile.cs
- DataPagerFieldCommandEventArgs.cs
- HiddenFieldDesigner.cs
- BuilderElements.cs
- SingletonInstanceContextProvider.cs
- Utilities.cs
- XmlCompatibilityReader.cs
- XmlNamespaceDeclarationsAttribute.cs
- Point3DConverter.cs
- MenuItemBinding.cs
- ColorKeyFrameCollection.cs
- DocumentGridPage.cs
- _TLSstream.cs
- AnnotationObservableCollection.cs
- SeparatorAutomationPeer.cs
- wgx_exports.cs
- ReadContentAsBinaryHelper.cs
- SecurityUniqueId.cs
- HttpProfileBase.cs
- ExpressionPrinter.cs
- EntityType.cs
- CodeMethodReturnStatement.cs
- NavigationProperty.cs
- SystemPens.cs
- SafeSecurityHandles.cs
- LineGeometry.cs
- EnumerationRangeValidationUtil.cs
- codemethodreferenceexpression.cs
- DataGridTextBox.cs
- CryptoApi.cs
- SafeTimerHandle.cs
- InProcStateClientManager.cs
- FuncCompletionCallbackWrapper.cs
- ContextMenuStrip.cs
- EventDescriptor.cs
- RawStylusActions.cs
- PolyLineSegmentFigureLogic.cs
- FunctionCommandText.cs
- DataPagerFieldCommandEventArgs.cs
- MexServiceChannelBuilder.cs
- smtpconnection.cs
- LambdaCompiler.Generated.cs
- BindingContext.cs
- XmlObjectSerializerReadContextComplex.cs
- InlineObject.cs
- Visitors.cs
- ClientRequest.cs
- StringResourceManager.cs
- FormViewUpdateEventArgs.cs
- XmlUtf8RawTextWriter.cs
- RijndaelManaged.cs
- FrameworkElementAutomationPeer.cs
- TdsParserStateObject.cs
- CrossAppDomainChannel.cs
- CollectionBase.cs
- SubMenuStyleCollectionEditor.cs
- SQLByteStorage.cs
- CatalogUtil.cs
- XPathNavigatorReader.cs
- ChangeBlockUndoRecord.cs
- MostlySingletonList.cs
- SvcMapFileSerializer.cs
- MultipleViewProviderWrapper.cs
- NativeMethods.cs
- EditingMode.cs
- MessageFilter.cs
- MSAANativeProvider.cs
- CheckBoxRenderer.cs
- Rights.cs