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
- BaseCodeDomTreeGenerator.cs
- ExcludeFromCodeCoverageAttribute.cs
- ProfileProvider.cs
- SqlBuilder.cs
- Vector3D.cs
- MenuEventArgs.cs
- LinqDataSourceDeleteEventArgs.cs
- BulletedList.cs
- FormsAuthenticationTicket.cs
- RbTree.cs
- ExecutionEngineException.cs
- MeasureData.cs
- ValidationService.cs
- MembershipPasswordException.cs
- RecordsAffectedEventArgs.cs
- ArrayElementGridEntry.cs
- UnicastIPAddressInformationCollection.cs
- BooleanSwitch.cs
- FieldNameLookup.cs
- SortQuery.cs
- Pointer.cs
- XmlDictionaryWriter.cs
- FontResourceCache.cs
- WindowsScrollBarBits.cs
- Setter.cs
- MultipleViewProviderWrapper.cs
- DesignerDeviceConfig.cs
- SqlDataSourceView.cs
- IBuiltInEvidence.cs
- SendKeys.cs
- FormsIdentity.cs
- ConsumerConnectionPoint.cs
- CultureSpecificCharacterBufferRange.cs
- PolyBezierSegment.cs
- ExpressionBuilderCollection.cs
- datacache.cs
- ToolStripSettings.cs
- GeometryHitTestResult.cs
- LineServicesCallbacks.cs
- ErrorTableItemStyle.cs
- SettingsProviderCollection.cs
- DataServiceEntityAttribute.cs
- TextRenderer.cs
- ValidatorCompatibilityHelper.cs
- SoapIgnoreAttribute.cs
- SpotLight.cs
- ListMarkerLine.cs
- SecurityResources.cs
- ByteAnimationBase.cs
- ProviderMetadataCachedInformation.cs
- ComboBoxDesigner.cs
- PipelineModuleStepContainer.cs
- TextCharacters.cs
- AnnotationResourceChangedEventArgs.cs
- TextEffectCollection.cs
- UriWriter.cs
- MouseGesture.cs
- CodeTypeDeclaration.cs
- SqlCacheDependencyDatabaseCollection.cs
- PeerToPeerException.cs
- Int32RectConverter.cs
- CompressionTransform.cs
- StateFinalizationActivity.cs
- MDIControlStrip.cs
- Span.cs
- ArgumentFixer.cs
- DataControlButton.cs
- commandenforcer.cs
- StreamGeometryContext.cs
- MissingManifestResourceException.cs
- CompiledQueryCacheKey.cs
- BuildProviderUtils.cs
- SafeNativeMethodsMilCoreApi.cs
- DrawingContextDrawingContextWalker.cs
- WebServiceErrorEvent.cs
- Select.cs
- Expander.cs
- Iis7Helper.cs
- SByteConverter.cs
- SafeNativeMethods.cs
- ToggleProviderWrapper.cs
- EventLog.cs
- PerformanceCounterPermissionEntryCollection.cs
- BidOverLoads.cs
- RestHandlerFactory.cs
- PropertySourceInfo.cs
- ImageSource.cs
- Module.cs
- SpecialNameAttribute.cs
- Code.cs
- SettingsPropertyValue.cs
- SoapCodeExporter.cs
- RootProfilePropertySettingsCollection.cs
- TransactionManager.cs
- FileUtil.cs
- FSWPathEditor.cs
- SqlDataSourceFilteringEventArgs.cs
- RemotingSurrogateSelector.cs
- GPRECT.cs
- FileDialogPermission.cs