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
- TrackingRecordPreFilter.cs
- EditorZone.cs
- HttpConfigurationSystem.cs
- autovalidator.cs
- Substitution.cs
- unsafenativemethodsother.cs
- ListViewUpdateEventArgs.cs
- XmlSchemaSimpleContent.cs
- OracleException.cs
- SelectionRangeConverter.cs
- DesignerForm.cs
- HuffmanTree.cs
- Html32TextWriter.cs
- FixedDocumentSequencePaginator.cs
- NetCodeGroup.cs
- OdbcError.cs
- DataTableTypeConverter.cs
- MethodImplAttribute.cs
- EdmComplexTypeAttribute.cs
- ZipFileInfoCollection.cs
- TCEAdapterGenerator.cs
- FontWeightConverter.cs
- EmbeddedMailObjectsCollection.cs
- ResolvedKeyFrameEntry.cs
- AnonymousIdentificationModule.cs
- ChangeBlockUndoRecord.cs
- SkinBuilder.cs
- InputLanguageSource.cs
- IdnMapping.cs
- ProcessModelInfo.cs
- SqlServer2KCompatibilityAnnotation.cs
- AnnotationResourceChangedEventArgs.cs
- SerialErrors.cs
- _Semaphore.cs
- ExpressionBinding.cs
- TextShapeableCharacters.cs
- XmlIncludeAttribute.cs
- Asn1IntegerConverter.cs
- ScriptMethodAttribute.cs
- TagMapInfo.cs
- AppLevelCompilationSectionCache.cs
- MeasureData.cs
- CommunicationException.cs
- CompilationLock.cs
- RSAPKCS1SignatureDeformatter.cs
- CanonicalizationDriver.cs
- MaskedTextBoxDesigner.cs
- PartialArray.cs
- HttpCapabilitiesEvaluator.cs
- DataGridViewCellEventArgs.cs
- DynamicMethod.cs
- ProtocolsConfigurationEntry.cs
- HostProtectionException.cs
- ImageKeyConverter.cs
- HwndSource.cs
- bindurihelper.cs
- storepermission.cs
- HWStack.cs
- BrowserCapabilitiesFactoryBase.cs
- KeyValueSerializer.cs
- WorkflowWebService.cs
- HierarchicalDataBoundControl.cs
- ScheduleChanges.cs
- TypefaceCollection.cs
- CorrelationInitializer.cs
- Rule.cs
- WorkerRequest.cs
- TrackingServices.cs
- URLAttribute.cs
- SQlBooleanStorage.cs
- StandardOleMarshalObject.cs
- XmlUtil.cs
- BaseDataListActionList.cs
- GeneralTransform2DTo3D.cs
- ProviderSettings.cs
- SQLDouble.cs
- PreProcessor.cs
- NotFiniteNumberException.cs
- ByteViewer.cs
- WebConfigurationManager.cs
- DesignTimeVisibleAttribute.cs
- Base64Encoder.cs
- CompositeCollectionView.cs
- UserUseLicenseDictionaryLoader.cs
- NotImplementedException.cs
- TextServicesCompartmentContext.cs
- NTAccount.cs
- InkPresenter.cs
- CoTaskMemHandle.cs
- CommonObjectSecurity.cs
- CodeTypeDelegate.cs
- VarInfo.cs
- GeneralTransformGroup.cs
- Model3D.cs
- ScriptControlManager.cs
- StateMachineAction.cs
- PeerEndPoint.cs
- FastEncoder.cs
- StatusBarPanel.cs
- EmptyControlCollection.cs