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
- DataGridViewComponentPropertyGridSite.cs
- RTTypeWrapper.cs
- ComponentEditorPage.cs
- TraceInternal.cs
- HandoffBehavior.cs
- InstanceData.cs
- ProxyElement.cs
- CachedCompositeFamily.cs
- SystemParameters.cs
- InvokePattern.cs
- SubstitutionResponseElement.cs
- BuildProviderCollection.cs
- GroupJoinQueryOperator.cs
- NameSpaceEvent.cs
- PrintPreviewDialog.cs
- _UriSyntax.cs
- DesignerActionMethodItem.cs
- RefreshEventArgs.cs
- ClientTargetSection.cs
- SBCSCodePageEncoding.cs
- EventTrigger.cs
- XmlProcessingInstruction.cs
- DelegateOutArgument.cs
- NullRuntimeConfig.cs
- WindowManager.cs
- KeyValueConfigurationElement.cs
- ContextMenuService.cs
- LinqDataView.cs
- HostingEnvironment.cs
- AttributeCollection.cs
- TableLayoutPanelCellPosition.cs
- LayoutTableCell.cs
- ConfigurationPropertyCollection.cs
- SynchronizedDispatch.cs
- TemplateInstanceAttribute.cs
- ISAPIRuntime.cs
- HtmlInputReset.cs
- CheckBox.cs
- TreeNodeEventArgs.cs
- ProfileGroupSettings.cs
- PrintDocument.cs
- InertiaTranslationBehavior.cs
- XmlSchemaSet.cs
- AnyAllSearchOperator.cs
- SerializationStore.cs
- ProviderException.cs
- DataGridViewElement.cs
- formatter.cs
- PlaceHolder.cs
- DataContractSet.cs
- SelectedDatesCollection.cs
- RenamedEventArgs.cs
- FormParameter.cs
- ReadOnlyCollectionBase.cs
- ExceptionUtil.cs
- XPathException.cs
- XmlSerializerObjectSerializer.cs
- BinaryObjectWriter.cs
- RoutedCommand.cs
- InputQueue.cs
- SmiEventSink_Default.cs
- InternalConfigConfigurationFactory.cs
- MenuStrip.cs
- ProgressBarHighlightConverter.cs
- TypedReference.cs
- SourceElementsCollection.cs
- ListBoxItemAutomationPeer.cs
- TypedRowHandler.cs
- Context.cs
- XmlSchemaSimpleType.cs
- QueryRewriter.cs
- SQLSingle.cs
- QilExpression.cs
- DateRangeEvent.cs
- SystemWebSectionGroup.cs
- ExpressionHelper.cs
- SQLSingleStorage.cs
- ErrorProvider.cs
- RadioButtonStandardAdapter.cs
- ObjectMaterializedEventArgs.cs
- RemoteWebConfigurationHost.cs
- _BaseOverlappedAsyncResult.cs
- BindingOperations.cs
- UnsafeMethods.cs
- DetailsViewDeleteEventArgs.cs
- MemberPathMap.cs
- MultiViewDesigner.cs
- ScriptResourceInfo.cs
- EventWaitHandleSecurity.cs
- Int32AnimationBase.cs
- DataGridViewRowEventArgs.cs
- EntityContainerAssociationSetEnd.cs
- HttpWebResponse.cs
- AttributeUsageAttribute.cs
- WebPartEditorCancelVerb.cs
- ImplicitInputBrush.cs
- CustomError.cs
- GeneralTransformCollection.cs
- ScrollPatternIdentifiers.cs
- Utils.cs