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
- WsdlInspector.cs
- RegexRunner.cs
- SymbolMethod.cs
- DiscardableAttribute.cs
- CoreChannel.cs
- CodeIndexerExpression.cs
- FilterableAttribute.cs
- OutputScopeManager.cs
- ComboBox.cs
- ContractHandle.cs
- ObjectDataProvider.cs
- PersianCalendar.cs
- XmlNamespaceMapping.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- Int64Storage.cs
- DataServiceKeyAttribute.cs
- BitmapSource.cs
- FloaterParaClient.cs
- TdsValueSetter.cs
- FixedTextSelectionProcessor.cs
- keycontainerpermission.cs
- ExcCanonicalXml.cs
- FixedTextPointer.cs
- AdapterDictionary.cs
- RowToFieldTransformer.cs
- SizeConverter.cs
- TextElementEditingBehaviorAttribute.cs
- MarshalByValueComponent.cs
- XmlObjectSerializerWriteContext.cs
- EventLogger.cs
- MsmqBindingFilter.cs
- HtmlButton.cs
- WebEventTraceProvider.cs
- ObjectItemCollection.cs
- Comparer.cs
- Region.cs
- InvalidCastException.cs
- FormViewUpdateEventArgs.cs
- PagedControl.cs
- FormsAuthenticationUserCollection.cs
- XNameTypeConverter.cs
- WsdlInspector.cs
- WorkflowRuntimeServiceElement.cs
- TableParaClient.cs
- SingleKeyFrameCollection.cs
- DiscoveryDocument.cs
- SqlCacheDependencyDatabaseCollection.cs
- EntryIndex.cs
- ToolTipService.cs
- ControlBuilderAttribute.cs
- UTF8Encoding.cs
- PropertyConverter.cs
- DynamicResourceExtension.cs
- LayeredChannelFactory.cs
- HostedBindingBehavior.cs
- PaperSize.cs
- DependencyObject.cs
- BaseCodeDomTreeGenerator.cs
- SplineQuaternionKeyFrame.cs
- OSFeature.cs
- UnknownBitmapEncoder.cs
- Menu.cs
- UnknownWrapper.cs
- DiscardableAttribute.cs
- Currency.cs
- XmlSchemaValidator.cs
- StreamUpgradeProvider.cs
- TypeHelpers.cs
- OledbConnectionStringbuilder.cs
- PropertyRef.cs
- FunctionImportMapping.cs
- QueryModel.cs
- AppSettingsSection.cs
- FixedPosition.cs
- XPathSingletonIterator.cs
- WindowsRegion.cs
- MatrixConverter.cs
- XLinq.cs
- storepermissionattribute.cs
- X509AsymmetricSecurityKey.cs
- JpegBitmapEncoder.cs
- RuntimeConfig.cs
- FlowDocumentPaginator.cs
- EventLogEntryCollection.cs
- DependencyPropertyKind.cs
- HierarchicalDataTemplate.cs
- UnionExpr.cs
- ReadContentAsBinaryHelper.cs
- DependencyObjectCodeDomSerializer.cs
- LabelDesigner.cs
- BitmapCache.cs
- StreamMarshaler.cs
- TextBox.cs
- Vars.cs
- ConfigurationSection.cs
- RequestCachePolicy.cs
- ListViewUpdateEventArgs.cs
- uribuilder.cs
- GenericsNotImplementedException.cs
- HelpEvent.cs