Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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. // // ==--== /*============================================================ ** ** 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- OledbConnectionStringbuilder.cs
- DynamicExpression.cs
- TextEditor.cs
- ObjectManager.cs
- BufferedWebEventProvider.cs
- MultipleViewPattern.cs
- SortDescriptionCollection.cs
- HttpPostedFileBase.cs
- SecurityVersion.cs
- BindingNavigator.cs
- Pair.cs
- SelectedDatesCollection.cs
- PathSegmentCollection.cs
- TcpTransportElement.cs
- TypedDatasetGenerator.cs
- UserControl.cs
- ColorContextHelper.cs
- XmlWrappingReader.cs
- ScaleTransform.cs
- __Error.cs
- ISCIIEncoding.cs
- VectorAnimation.cs
- NavigationWindow.cs
- CollectionViewGroupInternal.cs
- ToolboxDataAttribute.cs
- AudioStateChangedEventArgs.cs
- MetafileHeaderWmf.cs
- SlipBehavior.cs
- EnumerationRangeValidationUtil.cs
- BrowserCapabilitiesCodeGenerator.cs
- XmlILCommand.cs
- CustomCategoryAttribute.cs
- PathFigure.cs
- StringSource.cs
- Pts.cs
- HostUtils.cs
- ToolboxItemCollection.cs
- LinqDataSourceInsertEventArgs.cs
- BatchStream.cs
- GenericTypeParameterBuilder.cs
- ScrollBar.cs
- HtmlTextArea.cs
- DownloadProgressEventArgs.cs
- MSAAWinEventWrap.cs
- handlecollector.cs
- EarlyBoundInfo.cs
- PathFigure.cs
- SystemIcmpV4Statistics.cs
- Soap.cs
- HasCopySemanticsAttribute.cs
- HScrollProperties.cs
- SolidColorBrush.cs
- BuildResultCache.cs
- ConvertersCollection.cs
- KeyConverter.cs
- CancellationHandlerDesigner.cs
- WindowsIdentity.cs
- HtmlInputSubmit.cs
- Itemizer.cs
- Crypto.cs
- IgnoreFileBuildProvider.cs
- CompositeActivityCodeGenerator.cs
- NavigatorOutput.cs
- WindowShowOrOpenTracker.cs
- cache.cs
- QilReference.cs
- RequestContext.cs
- BasePropertyDescriptor.cs
- Stroke.cs
- CardSpaceShim.cs
- MultiAsyncResult.cs
- ExpressionConverter.cs
- PartialArray.cs
- ConstructorNeedsTagAttribute.cs
- TextBoxBase.cs
- FolderBrowserDialog.cs
- RadioButton.cs
- OpCodes.cs
- APCustomTypeDescriptor.cs
- SemanticBasicElement.cs
- NullToBooleanConverter.cs
- MobileControlPersister.cs
- DataSourceXmlClassAttribute.cs
- ClientApiGenerator.cs
- RegistryPermission.cs
- MetafileEditor.cs
- PrtTicket_Editor.cs
- ModelEditingScope.cs
- DataSourceViewSchemaConverter.cs
- QilSortKey.cs
- DataReceivedEventArgs.cs
- SqlDataSourceConnectionPanel.cs
- CorePropertiesFilter.cs
- StandardCommands.cs
- HttpCapabilitiesEvaluator.cs
- LambdaCompiler.Unary.cs
- ParseChildrenAsPropertiesAttribute.cs
- XmlHierarchyData.cs
- CodeCastExpression.cs
- EvidenceTypeDescriptor.cs