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
- WebBrowserHelper.cs
- AsnEncodedData.cs
- RequestTimeoutManager.cs
- SafePEFileHandle.cs
- PasswordTextContainer.cs
- HandledMouseEvent.cs
- XamlDebuggerXmlReader.cs
- NamespaceEmitter.cs
- IndexOutOfRangeException.cs
- QilGeneratorEnv.cs
- CalendarDesigner.cs
- MachineKeyConverter.cs
- MemoryStream.cs
- SplineKeyFrames.cs
- precedingquery.cs
- FormatSettings.cs
- BaseTypeViewSchema.cs
- CustomTypeDescriptor.cs
- ContainerSelectorBehavior.cs
- StringInfo.cs
- SymmetricKeyWrap.cs
- KeyInstance.cs
- XmlSchemaAny.cs
- ServiceInstanceProvider.cs
- objectquery_tresulttype.cs
- DataGridViewSortCompareEventArgs.cs
- PeerContact.cs
- ObjectListDataBindEventArgs.cs
- Rule.cs
- WebPartRestoreVerb.cs
- Logging.cs
- SQLByte.cs
- UserControl.cs
- ConfigurationFileMap.cs
- WorkflowViewElement.cs
- LongMinMaxAggregationOperator.cs
- MailDefinition.cs
- HybridWebProxyFinder.cs
- ContentAlignmentEditor.cs
- UndoManager.cs
- ProcessHostMapPath.cs
- ConfigurationElement.cs
- ProgressBar.cs
- ParallelTimeline.cs
- PauseStoryboard.cs
- _ContextAwareResult.cs
- Utils.cs
- ImageClickEventArgs.cs
- QuaternionKeyFrameCollection.cs
- Section.cs
- PageParser.cs
- VectorAnimation.cs
- IdentitySection.cs
- Cursor.cs
- DiscoveryMessageSequenceGenerator.cs
- HGlobalSafeHandle.cs
- ButtonFieldBase.cs
- XmlSchemaObjectCollection.cs
- BaseParser.cs
- MyContact.cs
- RegexMatchCollection.cs
- ObjectFullSpanRewriter.cs
- ClientApiGenerator.cs
- AmbiguousMatchException.cs
- SchemaNotation.cs
- CurrentChangedEventManager.cs
- ComponentEvent.cs
- EmbossBitmapEffect.cs
- DecimalConverter.cs
- SelectionChangedEventArgs.cs
- TypeConverterHelper.cs
- AmbientProperties.cs
- ApplicationFileParser.cs
- ProviderConnectionPoint.cs
- ExpressionBindings.cs
- Pair.cs
- DeferredBinaryDeserializerExtension.cs
- CookieParameter.cs
- UnsafePeerToPeerMethods.cs
- TextAutomationPeer.cs
- TextPointerBase.cs
- TextClipboardData.cs
- DefaultTraceListener.cs
- XPathChildIterator.cs
- handlecollector.cs
- RowCache.cs
- IDispatchConstantAttribute.cs
- PropertyExpression.cs
- printdlgexmarshaler.cs
- EventLogEntry.cs
- SchemaMerger.cs
- CmsUtils.cs
- XmlBoundElement.cs
- GeometryDrawing.cs
- VisualStates.cs
- ServicePoint.cs
- CompareValidator.cs
- DesignerWithHeader.cs
- CookieParameter.cs
- ProfessionalColorTable.cs