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
- NullExtension.cs
- ReadContentAsBinaryHelper.cs
- DataSourceHelper.cs
- RegionInfo.cs
- InstanceDataCollectionCollection.cs
- PropertyInfoSet.cs
- HtmlEmptyTagControlBuilder.cs
- XamlStackWriter.cs
- ByteKeyFrameCollection.cs
- PolicyChain.cs
- ValidationErrorCollection.cs
- ImageKeyConverter.cs
- EmbeddedMailObjectsCollection.cs
- TableLayoutSettings.cs
- FontInfo.cs
- ClientData.cs
- StateRuntime.cs
- Manipulation.cs
- Win32.cs
- SubMenuStyleCollectionEditor.cs
- PropertyKey.cs
- RulePatternOps.cs
- TargetControlTypeAttribute.cs
- DrawListViewColumnHeaderEventArgs.cs
- PermissionRequestEvidence.cs
- ChangeConflicts.cs
- ShadowGlyph.cs
- XsltConvert.cs
- UnknownWrapper.cs
- XmlSchemas.cs
- SessionState.cs
- SapiRecognizer.cs
- AnimationLayer.cs
- DataBoundControlDesigner.cs
- SessionStateSection.cs
- DoubleAnimationBase.cs
- WsdlParser.cs
- AddInProcess.cs
- Canvas.cs
- DataGridViewIntLinkedList.cs
- Int16KeyFrameCollection.cs
- FrameworkRichTextComposition.cs
- ReferenceCountedObject.cs
- NotifyIcon.cs
- DaylightTime.cs
- XmlSerializer.cs
- DataReceivedEventArgs.cs
- MessageBox.cs
- RowCache.cs
- DocumentGridContextMenu.cs
- SamlAdvice.cs
- IsolatedStoragePermission.cs
- HitTestWithGeometryDrawingContextWalker.cs
- ThemeDirectoryCompiler.cs
- DocumentXmlWriter.cs
- SequenceNumber.cs
- WebHeaderCollection.cs
- MetadataItemSerializer.cs
- ConnectionPoolManager.cs
- StateChangeEvent.cs
- QuadraticBezierSegment.cs
- WebControlAdapter.cs
- GlobalEventManager.cs
- loginstatus.cs
- SoapHttpTransportImporter.cs
- XmlSchemaElement.cs
- InspectionWorker.cs
- SmiMetaDataProperty.cs
- webproxy.cs
- LocalizationParserHooks.cs
- ExtendedPropertyDescriptor.cs
- Encoder.cs
- TextRenderer.cs
- DataGridViewRowCancelEventArgs.cs
- HtmlWindow.cs
- ColumnReorderedEventArgs.cs
- MediaContext.cs
- ZeroOpNode.cs
- IconConverter.cs
- DetailsViewDesigner.cs
- CollectionView.cs
- ButtonField.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- OleDbWrapper.cs
- ObjectPropertyMapping.cs
- EventProxy.cs
- ParsedAttributeCollection.cs
- NegotiateStream.cs
- XmlSchemaAnyAttribute.cs
- EncryptedKey.cs
- ResourceDictionary.cs
- BrushMappingModeValidation.cs
- ExpressionNode.cs
- SqlDelegatedTransaction.cs
- ToolStripDropDownItem.cs
- AppLevelCompilationSectionCache.cs
- MethodRental.cs
- UpdateCompiler.cs
- DescendantQuery.cs
- DataGridHeaderBorder.cs