Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / Tokens / SymmetricKey.cs / 1305376 / SymmetricKey.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.IdentityModel.Tokens
{
using System.IdentityModel.Selectors;
using System.Security.Cryptography;
public class InMemorySymmetricSecurityKey : SymmetricSecurityKey
{
int keySize;
byte[] symmetricKey;
public InMemorySymmetricSecurityKey(byte[] symmetricKey)
: this(symmetricKey, true)
{
}
public InMemorySymmetricSecurityKey(byte[] symmetricKey, bool cloneBuffer)
{
if (symmetricKey == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("symmetricKey"));
}
if (symmetricKey.Length == 0)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.SymmetricKeyLengthTooShort, symmetricKey.Length)));
}
this.keySize = symmetricKey.Length * 8;
if (cloneBuffer)
{
this.symmetricKey = new byte[symmetricKey.Length];
Buffer.BlockCopy(symmetricKey, 0, this.symmetricKey, 0, symmetricKey.Length);
}
else
{
this.symmetricKey = symmetricKey;
}
}
public override int KeySize
{
get { return this.keySize; }
}
public override byte[] DecryptKey(string algorithm, byte[] keyData)
{
return CryptoHelper.UnwrapKey(this.symmetricKey, keyData, algorithm);
}
public override byte[] EncryptKey(string algorithm, byte[] keyData)
{
return CryptoHelper.WrapKey(this.symmetricKey, keyData, algorithm);
}
public override byte[] GenerateDerivedKey(string algorithm, byte[] label, byte[] nonce, int derivedKeyLength, int offset)
{
return CryptoHelper.GenerateDerivedKey(this.symmetricKey, algorithm, label, nonce, derivedKeyLength, offset);
}
public override ICryptoTransform GetDecryptionTransform(string algorithm, byte[] iv)
{
return CryptoHelper.CreateDecryptor(this.symmetricKey, iv, algorithm);
}
public override ICryptoTransform GetEncryptionTransform(string algorithm, byte[] iv)
{
return CryptoHelper.CreateEncryptor(this.symmetricKey, iv, algorithm);
}
public override int GetIVSize(string algorithm)
{
return CryptoHelper.GetIVSize(algorithm);
}
public override KeyedHashAlgorithm GetKeyedHashAlgorithm(string algorithm)
{
return CryptoHelper.CreateKeyedHashAlgorithm(this.symmetricKey, algorithm);
}
public override SymmetricAlgorithm GetSymmetricAlgorithm(string algorithm)
{
return CryptoHelper.GetSymmetricAlgorithm(this.symmetricKey, algorithm);
}
public override byte[] GetSymmetricKey()
{
byte[] local = new byte[this.symmetricKey.Length];
Buffer.BlockCopy(this.symmetricKey, 0, local, 0, this.symmetricKey.Length);
return local;
}
public override bool IsAsymmetricAlgorithm(string algorithm)
{
return (CryptoHelper.IsAsymmetricAlgorithm(algorithm));
}
public override bool IsSupportedAlgorithm(string algorithm)
{
return (CryptoHelper.IsSymmetricSupportedAlgorithm(algorithm, this.KeySize));
}
public override bool IsSymmetricAlgorithm(string algorithm)
{
return CryptoHelper.IsSymmetricAlgorithm(algorithm);
}
}
}
// 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
- TextTreeInsertUndoUnit.cs
- cookiecollection.cs
- EventSetter.cs
- CodeGen.cs
- CapacityStreamGeometryContext.cs
- PropertyDescriptor.cs
- Set.cs
- DynamicRendererThreadManager.cs
- ClientData.cs
- AvTrace.cs
- DataView.cs
- TextClipboardData.cs
- BitmapEffect.cs
- AttachInfo.cs
- RotateTransform.cs
- EncodingStreamWrapper.cs
- ShutDownListener.cs
- DependencyObjectType.cs
- serverconfig.cs
- ResponseStream.cs
- _NestedMultipleAsyncResult.cs
- MemberDescriptor.cs
- FormViewRow.cs
- DesignerOptionService.cs
- MetadataCache.cs
- SqlPersonalizationProvider.cs
- CallbackTimeoutsElement.cs
- GridViewRow.cs
- DebugControllerThread.cs
- PageHandlerFactory.cs
- WebPartExportVerb.cs
- TransportationConfigurationTypeInstallComponent.cs
- CompiledQuery.cs
- Instrumentation.cs
- AssemblyInfo.cs
- FileUtil.cs
- HtmlHead.cs
- Pkcs7Recipient.cs
- StructuralType.cs
- DataObject.cs
- TableRowCollection.cs
- NullableIntMinMaxAggregationOperator.cs
- IncrementalReadDecoders.cs
- GraphicsPath.cs
- MultiBinding.cs
- HyperLinkColumn.cs
- BreakSafeBase.cs
- SmtpFailedRecipientException.cs
- ProcessRequestArgs.cs
- CodeMethodReturnStatement.cs
- MenuItemCollection.cs
- EmbeddedMailObjectsCollection.cs
- TextCompositionManager.cs
- AssemblyContextControlItem.cs
- DelayedRegex.cs
- PeerApplicationLaunchInfo.cs
- SQLInt16.cs
- SchemaObjectWriter.cs
- FixedSOMLineRanges.cs
- FontWeights.cs
- BadImageFormatException.cs
- base64Transforms.cs
- BufferedResponseStream.cs
- Span.cs
- ZipPackagePart.cs
- TrackingWorkflowEventArgs.cs
- PipeSecurity.cs
- MergeFailedEvent.cs
- GenericPrincipal.cs
- ShimAsPublicXamlType.cs
- ExtenderProvidedPropertyAttribute.cs
- ConsoleTraceListener.cs
- PersistenceTypeAttribute.cs
- ErrorBehavior.cs
- CanonicalFontFamilyReference.cs
- WebHostScriptMappingsInstallComponent.cs
- SynchronizationContext.cs
- NamespaceList.cs
- XmlUtil.cs
- BinaryFormatter.cs
- UInt32Converter.cs
- XmlDictionaryString.cs
- IconConverter.cs
- DataServiceProcessingPipelineEventArgs.cs
- ProcessModuleDesigner.cs
- MultiPageTextView.cs
- TemplateBindingExtension.cs
- JsonWriter.cs
- HttpStaticObjectsCollectionWrapper.cs
- XmlNodeChangedEventManager.cs
- CryptoApi.cs
- ItemContainerGenerator.cs
- path.cs
- path.cs
- ButtonFieldBase.cs
- ButtonStandardAdapter.cs
- PingReply.cs
- FaultHandlingFilter.cs
- EntityUtil.cs
- SchemaImporterExtension.cs