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
- InputLanguageProfileNotifySink.cs
- ItemsPanelTemplate.cs
- FlowDocumentFormatter.cs
- LinqDataSourceContextData.cs
- LinkLabelLinkClickedEvent.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- NamedPipeTransportSecurityElement.cs
- XamlBrushSerializer.cs
- IntegerFacetDescriptionElement.cs
- IssuedTokenServiceCredential.cs
- EdmValidator.cs
- GrammarBuilder.cs
- AccessControlEntry.cs
- FrameworkRichTextComposition.cs
- TypeSystem.cs
- EntityViewGenerationAttribute.cs
- ContravarianceAdapter.cs
- WebWorkflowRole.cs
- KoreanCalendar.cs
- Semaphore.cs
- ListControl.cs
- SqlDesignerDataSourceView.cs
- BypassElementCollection.cs
- CssClassPropertyAttribute.cs
- EntryIndex.cs
- PositiveTimeSpanValidatorAttribute.cs
- FileDialogCustomPlaces.cs
- XmlElementElementCollection.cs
- RemotingSurrogateSelector.cs
- HighlightOverlayGlyph.cs
- AutoGeneratedField.cs
- ObjectSecurity.cs
- BoundField.cs
- DecoderFallback.cs
- SessionPageStatePersister.cs
- LogWriteRestartAreaAsyncResult.cs
- ExpressionsCollectionEditor.cs
- SimpleWebHandlerParser.cs
- AttachedAnnotationChangedEventArgs.cs
- CollectionBuilder.cs
- MemoryRecordBuffer.cs
- Types.cs
- SymmetricKeyWrap.cs
- TextTreeUndo.cs
- DateTimeValueSerializerContext.cs
- WorkflowViewManager.cs
- GrammarBuilder.cs
- TransformDescriptor.cs
- DelegateSerializationHolder.cs
- ByteStream.cs
- WebServiceParameterData.cs
- DataTablePropertyDescriptor.cs
- TreeViewEvent.cs
- SHA256.cs
- CorrelationManager.cs
- ExtensibleClassFactory.cs
- SignedXml.cs
- ColorAnimation.cs
- PixelShader.cs
- EventHandlerList.cs
- DependencyObjectPropertyDescriptor.cs
- UserPersonalizationStateInfo.cs
- XsltSettings.cs
- Viewport3DAutomationPeer.cs
- NativeActivityAbortContext.cs
- ParallelDesigner.xaml.cs
- BaseCollection.cs
- ExtendedPropertyInfo.cs
- cookieexception.cs
- PerspectiveCamera.cs
- Translator.cs
- TraceListener.cs
- WindowsListViewGroupHelper.cs
- GPRECTF.cs
- SortedList.cs
- TagNameToTypeMapper.cs
- SQLByte.cs
- HtmlTableRow.cs
- TimeoutHelper.cs
- Menu.cs
- SizeLimitedCache.cs
- HwndSourceParameters.cs
- ViewGenerator.cs
- SuppressMergeCheckAttribute.cs
- PlanCompilerUtil.cs
- ConnectionPoolManager.cs
- XhtmlTextWriter.cs
- OutArgument.cs
- webclient.cs
- CodeParameterDeclarationExpression.cs
- Item.cs
- TemplateControlCodeDomTreeGenerator.cs
- IndexedString.cs
- _NestedSingleAsyncResult.cs
- ReflectionHelper.cs
- DataRelation.cs
- formatstringdialog.cs
- OperationBehaviorAttribute.cs
- webproxy.cs
- MDIWindowDialog.cs