Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- EncoderFallback.cs
- HMACSHA384.cs
- StrokeSerializer.cs
- SRef.cs
- isolationinterop.cs
- CodeBinaryOperatorExpression.cs
- SqlProfileProvider.cs
- SqlXmlStorage.cs
- SQLDoubleStorage.cs
- SystemNetworkInterface.cs
- MasterPage.cs
- InternalCompensate.cs
- InvokeGenerator.cs
- ReadOnlyNameValueCollection.cs
- XmlWrappingReader.cs
- ping.cs
- CachedTypeface.cs
- OleServicesContext.cs
- BooleanProjectedSlot.cs
- FixedSOMPage.cs
- XmlAttribute.cs
- UiaCoreProviderApi.cs
- Axis.cs
- SymbolType.cs
- CallbackBehaviorAttribute.cs
- AsyncWaitHandle.cs
- SystemGatewayIPAddressInformation.cs
- OleDbPermission.cs
- Int16AnimationUsingKeyFrames.cs
- SettingsAttributeDictionary.cs
- MultipartContentParser.cs
- ProcessInfo.cs
- WriteTimeStream.cs
- InternalConfigRoot.cs
- CallTemplateAction.cs
- Membership.cs
- XpsFilter.cs
- DataListItemCollection.cs
- TextAdaptor.cs
- ViewCellSlot.cs
- WebPartConnectionsCloseVerb.cs
- RuntimeConfigurationRecord.cs
- FunctionQuery.cs
- RectangleConverter.cs
- ChangePassword.cs
- WebControlParameterProxy.cs
- SqlFacetAttribute.cs
- Converter.cs
- StringValueSerializer.cs
- StringInfo.cs
- WindowsGraphics.cs
- DataListCommandEventArgs.cs
- DataGridViewRowHeaderCell.cs
- HtmlForm.cs
- StylusPointPropertyId.cs
- HybridCollection.cs
- HttpWebResponse.cs
- WithParamAction.cs
- XmlSchemaAttributeGroupRef.cs
- ServiceInfo.cs
- NumberAction.cs
- XPathExpr.cs
- MediaContextNotificationWindow.cs
- CalendarDataBindingHandler.cs
- ExpressionNormalizer.cs
- StatusInfoItem.cs
- ADRoleFactoryConfiguration.cs
- IISMapPath.cs
- TailCallAnalyzer.cs
- XmlDomTextWriter.cs
- JsonFormatGeneratorStatics.cs
- BaseInfoTable.cs
- SessionStateModule.cs
- ComponentEditorPage.cs
- HwndSourceParameters.cs
- DataGridViewCellPaintingEventArgs.cs
- Lease.cs
- ToolStripItemRenderEventArgs.cs
- DataPagerCommandEventArgs.cs
- DropSource.cs
- XPathArrayIterator.cs
- ReadWriteSpinLock.cs
- SharedDp.cs
- DataGridBoolColumn.cs
- OneWayBindingElement.cs
- FrameSecurityDescriptor.cs
- arabicshape.cs
- TdsParserStaticMethods.cs
- figurelength.cs
- OdbcParameter.cs
- SecureConversationServiceCredential.cs
- OptionUsage.cs
- WsdlContractConversionContext.cs
- ColorConverter.cs
- WhitespaceSignificantCollectionAttribute.cs
- QilFunction.cs
- IntSumAggregationOperator.cs
- DrawingContextDrawingContextWalker.cs
- QuestionEventArgs.cs
- BaseParaClient.cs