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
- ValidationSummary.cs
- UserInitiatedNavigationPermission.cs
- ByteStream.cs
- COMException.cs
- PassportAuthentication.cs
- EventToken.cs
- XmlNullResolver.cs
- AssociationEndMember.cs
- DirectoryInfo.cs
- MimeMapping.cs
- ToolboxItem.cs
- TextDecorationLocationValidation.cs
- DataGridViewCellStyleChangedEventArgs.cs
- FocusChangedEventArgs.cs
- EmbeddedObject.cs
- ColumnWidthChangingEvent.cs
- BackgroundWorker.cs
- SuppressMergeCheckAttribute.cs
- Automation.cs
- XmlWhitespace.cs
- RealizedColumnsBlock.cs
- ComEventsSink.cs
- safelink.cs
- AttributeEmitter.cs
- StrokeCollection.cs
- ConfigXmlComment.cs
- DataGridViewCellMouseEventArgs.cs
- DbConnectionFactory.cs
- EntityConnection.cs
- WebPartEditorOkVerb.cs
- FileAuthorizationModule.cs
- NullableIntSumAggregationOperator.cs
- DbMetaDataCollectionNames.cs
- DataGridViewCell.cs
- CreationContext.cs
- PaperSize.cs
- SafeNativeMethodsMilCoreApi.cs
- Visitor.cs
- CodeTypeDeclarationCollection.cs
- PropertySourceInfo.cs
- SessionParameter.cs
- ConnectionOrientedTransportElement.cs
- TextView.cs
- basecomparevalidator.cs
- TemplateControl.cs
- TemplateControl.cs
- ExceptionDetail.cs
- DataViewManager.cs
- TraceHandlerErrorFormatter.cs
- Adorner.cs
- COM2IDispatchConverter.cs
- TableItemStyle.cs
- SecurityContext.cs
- FileFormatException.cs
- COM2FontConverter.cs
- ListViewGroupConverter.cs
- MaskDescriptor.cs
- ClientTargetSection.cs
- Point4DConverter.cs
- PixelShader.cs
- HashCodeCombiner.cs
- CLRBindingWorker.cs
- EncoderParameters.cs
- SHA1.cs
- ListBindingHelper.cs
- Keyboard.cs
- ScrollContentPresenter.cs
- FillErrorEventArgs.cs
- DesignerEditorPartChrome.cs
- GrabHandleGlyph.cs
- ResourcePermissionBaseEntry.cs
- ManagementClass.cs
- DelayedRegex.cs
- ZoneMembershipCondition.cs
- EntityChangedParams.cs
- RectAnimationUsingKeyFrames.cs
- XmlCharCheckingWriter.cs
- DocumentOrderQuery.cs
- WmlCommandAdapter.cs
- TextWriterEngine.cs
- WorkflowMarkupElementEventArgs.cs
- DLinqAssociationProvider.cs
- InvalidDataException.cs
- MessageQuerySet.cs
- ClientConfigPaths.cs
- RbTree.cs
- DataListAutoFormat.cs
- GridSplitter.cs
- CreateParams.cs
- LoginName.cs
- ObservableCollection.cs
- LogEntryHeaderSerializer.cs
- MatrixCamera.cs
- RegexCompilationInfo.cs
- ISessionStateStore.cs
- SoundPlayer.cs
- CodeAttributeArgument.cs
- RenameRuleObjectDialog.cs
- CookieParameter.cs
- AppearanceEditorPart.cs