Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- DeflateEmulationStream.cs
- CommandDevice.cs
- AppDomainProtocolHandler.cs
- SQLSingle.cs
- SplitContainerDesigner.cs
- WindowsFormsHost.cs
- ProcessManager.cs
- ChannelBase.cs
- GridView.cs
- SmiMetaData.cs
- MenuAutoFormat.cs
- TemplateBaseAction.cs
- HwndAppCommandInputProvider.cs
- TableRowsCollectionEditor.cs
- NumberFunctions.cs
- ListSortDescriptionCollection.cs
- _ContextAwareResult.cs
- ArraySet.cs
- NetMsmqSecurityElement.cs
- BezierSegment.cs
- TextWriter.cs
- NativeMethods.cs
- ItemCheckEvent.cs
- ControlPropertyNameConverter.cs
- Rect.cs
- ListBoxItemWrapperAutomationPeer.cs
- CalendarTable.cs
- DetailsViewRow.cs
- CqlGenerator.cs
- RectangleHotSpot.cs
- UriTemplateDispatchFormatter.cs
- PackagingUtilities.cs
- TreeViewAutomationPeer.cs
- StreamMarshaler.cs
- AnnotationResourceChangedEventArgs.cs
- EventLogTraceListener.cs
- ControlParameter.cs
- Debugger.cs
- SignatureToken.cs
- XmlWrappingReader.cs
- NumberSubstitution.cs
- ForeignConstraint.cs
- DateTimeUtil.cs
- LabelExpression.cs
- MethodAccessException.cs
- DesignerAutoFormatStyle.cs
- FormParameter.cs
- MemoryMappedFile.cs
- DesignerActionHeaderItem.cs
- ContentTextAutomationPeer.cs
- XmlIlTypeHelper.cs
- XmlSerializerNamespaces.cs
- ServiceReference.cs
- DrawingServices.cs
- RuntimeConfigLKG.cs
- DBPropSet.cs
- DocumentViewerAutomationPeer.cs
- UTF32Encoding.cs
- RemotingService.cs
- XmlHierarchicalDataSourceView.cs
- safesecurityhelperavalon.cs
- TextElementEnumerator.cs
- Graph.cs
- ProgressChangedEventArgs.cs
- XamlTypeMapperSchemaContext.cs
- Literal.cs
- DatatypeImplementation.cs
- OleDbReferenceCollection.cs
- WindowsProgressbar.cs
- TabControl.cs
- ModuleConfigurationInfo.cs
- FaultCallbackWrapper.cs
- _ProxyRegBlob.cs
- ListItemsCollectionEditor.cs
- Effect.cs
- ExpressionBuilderContext.cs
- SimpleHandlerBuildProvider.cs
- IndexedEnumerable.cs
- BrushMappingModeValidation.cs
- WindowManager.cs
- BulletedListEventArgs.cs
- TextEditorThreadLocalStore.cs
- DataList.cs
- HttpWebRequestElement.cs
- WhitespaceRule.cs
- StringFormat.cs
- SpotLight.cs
- TextBlock.cs
- ClientRoleProvider.cs
- OdbcCommandBuilder.cs
- WindowVisualStateTracker.cs
- SmtpLoginAuthenticationModule.cs
- MemberCollection.cs
- CrossSiteScriptingValidation.cs
- ValidationRule.cs
- TTSEngineProxy.cs
- RequestCacheEntry.cs
- Section.cs
- ObjectContext.cs
- SafeThemeHandle.cs