Code:
/ FX-1434 / FX-1434 / 1.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
- SequenceFullException.cs
- ContentHostHelper.cs
- SamlSecurityTokenAuthenticator.cs
- GridViewRowEventArgs.cs
- UserControlCodeDomTreeGenerator.cs
- ClearCollection.cs
- StoreItemCollection.cs
- MaterialGroup.cs
- Encoder.cs
- Lasso.cs
- LinearGradientBrush.cs
- MtomMessageEncoder.cs
- TypeReference.cs
- CompilerHelpers.cs
- ClientSettings.cs
- GenericAuthenticationEventArgs.cs
- FocusChangedEventArgs.cs
- GenericUriParser.cs
- OrderByBuilder.cs
- Style.cs
- SqlNode.cs
- GrammarBuilder.cs
- SecurityTokenAuthenticator.cs
- _StreamFramer.cs
- EncoderNLS.cs
- HtmlAnchor.cs
- Set.cs
- GroupBoxRenderer.cs
- MenuScrollingVisibilityConverter.cs
- DataGridHelper.cs
- XmlStringTable.cs
- ListViewDeletedEventArgs.cs
- BindingContext.cs
- RawStylusInputCustomData.cs
- ScriptMethodAttribute.cs
- ActivationService.cs
- EntitySqlQueryCacheKey.cs
- Utilities.cs
- DataGridRow.cs
- InputProcessorProfiles.cs
- DataGridDesigner.cs
- DataRowExtensions.cs
- UrlAuthorizationModule.cs
- KerberosTicketHashIdentifierClause.cs
- DiscriminatorMap.cs
- UIElementParaClient.cs
- ObjectAssociationEndMapping.cs
- PolicyValidationException.cs
- ItemsPanelTemplate.cs
- SmtpReplyReader.cs
- ColumnClickEvent.cs
- WpfWebRequestHelper.cs
- HttpModulesSection.cs
- PropertyPathWorker.cs
- RelatedCurrencyManager.cs
- StorageScalarPropertyMapping.cs
- AsynchronousChannelMergeEnumerator.cs
- shaperfactory.cs
- PathGeometry.cs
- DbConnectionStringBuilder.cs
- VScrollBar.cs
- GeneralTransform3DCollection.cs
- ExecutedRoutedEventArgs.cs
- Fonts.cs
- AppliesToBehaviorDecisionTable.cs
- HttpListenerPrefixCollection.cs
- CdpEqualityComparer.cs
- GenericRootAutomationPeer.cs
- ActiveDocumentEvent.cs
- RawUIStateInputReport.cs
- mda.cs
- ContentPresenter.cs
- _NetworkingPerfCounters.cs
- Restrictions.cs
- DecimalConverter.cs
- FormViewDesigner.cs
- BaseParagraph.cs
- RoutedEventArgs.cs
- OdbcConnection.cs
- IncomingWebRequestContext.cs
- TextDecoration.cs
- CancelEventArgs.cs
- TypeExtensionSerializer.cs
- RelatedCurrencyManager.cs
- ILGenerator.cs
- QuaternionAnimation.cs
- SafeRightsManagementSessionHandle.cs
- CapabilitiesPattern.cs
- ModelServiceImpl.cs
- OptimizerPatterns.cs
- CodeTypeParameter.cs
- DbUpdateCommandTree.cs
- ClientBuildManager.cs
- SqlNamer.cs
- SecurityUtils.cs
- WebPartHelpVerb.cs
- BehaviorEditorPart.cs
- StyleBamlTreeBuilder.cs
- ExpressionSelection.cs
- IntranetCredentialPolicy.cs