Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- FontCollection.cs
- FixedSOMGroup.cs
- Rect.cs
- SqlError.cs
- FrugalList.cs
- QfeChecker.cs
- AppLevelCompilationSectionCache.cs
- followingsibling.cs
- CryptoKeySecurity.cs
- Polygon.cs
- SqlErrorCollection.cs
- MetadataPropertyCollection.cs
- WindowsFormsDesignerOptionService.cs
- LoadedOrUnloadedOperation.cs
- XmlIgnoreAttribute.cs
- ListControlActionList.cs
- ReachPageContentSerializer.cs
- DocumentOrderQuery.cs
- CodeIdentifiers.cs
- MexBindingElement.cs
- CustomTypeDescriptor.cs
- ScrollProviderWrapper.cs
- BinaryReader.cs
- MessageAction.cs
- DataGridRow.cs
- InitiatorSessionSymmetricMessageSecurityProtocol.cs
- NodeLabelEditEvent.cs
- ConfigXmlText.cs
- InitializerFacet.cs
- ResourceDescriptionAttribute.cs
- AuthorizationPolicyTypeElementCollection.cs
- SocketInformation.cs
- RowToParametersTransformer.cs
- DataSourceConverter.cs
- ButtonPopupAdapter.cs
- streamingZipPartStream.cs
- HttpFileCollectionWrapper.cs
- ControlAdapter.cs
- TimeSpanConverter.cs
- ResXBuildProvider.cs
- MemoryFailPoint.cs
- CharStorage.cs
- HttpProtocolImporter.cs
- ContentElementAutomationPeer.cs
- PagePropertiesChangingEventArgs.cs
- DataColumn.cs
- TextTreeNode.cs
- DataServiceContext.cs
- LocalValueEnumerator.cs
- XmlAttribute.cs
- MeshGeometry3D.cs
- FindCriteria11.cs
- HtmlElementErrorEventArgs.cs
- HwndSource.cs
- ToolTip.cs
- Subtree.cs
- AxisAngleRotation3D.cs
- TranslateTransform3D.cs
- EventWaitHandle.cs
- TabletDeviceInfo.cs
- ListItemConverter.cs
- AlternateViewCollection.cs
- ModifierKeysValueSerializer.cs
- ActivityExecutionContextCollection.cs
- TextFormatterContext.cs
- BypassElement.cs
- StreamAsIStream.cs
- ServiceBusyException.cs
- backend.cs
- File.cs
- EntityContainerEntitySet.cs
- SAPIEngineTypes.cs
- InheritanceAttribute.cs
- Triplet.cs
- ImageMapEventArgs.cs
- FormViewModeEventArgs.cs
- OdbcConnection.cs
- SignatureDescription.cs
- InputGestureCollection.cs
- XmlDownloadManager.cs
- IncrementalHitTester.cs
- ServicePointManagerElement.cs
- WebBrowserUriTypeConverter.cs
- ParserContext.cs
- ChangeInterceptorAttribute.cs
- TableLayoutStyle.cs
- InertiaExpansionBehavior.cs
- PreservationFileReader.cs
- SelectionProviderWrapper.cs
- UserControlDocumentDesigner.cs
- XmlNavigatorFilter.cs
- DataSourceGeneratorException.cs
- CustomCredentialPolicy.cs
- DocumentPropertiesDialog.cs
- IODescriptionAttribute.cs
- DbConnectionStringCommon.cs
- RoutedEvent.cs
- PathData.cs
- CustomAttributeBuilder.cs
- ReferentialConstraint.cs