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
- LineServices.cs
- InstanceHandleReference.cs
- WebRequest.cs
- HtmlInputCheckBox.cs
- MarkupWriter.cs
- ButtonColumn.cs
- TemplateContentLoader.cs
- XsltInput.cs
- ActionItem.cs
- UnknownExceptionActionHelper.cs
- DocumentPageTextView.cs
- HwndProxyElementProvider.cs
- SpellerError.cs
- PenCursorManager.cs
- FocusWithinProperty.cs
- DotNetATv1WindowsLogEntryDeserializer.cs
- XmlSerializerNamespaces.cs
- TraceUtility.cs
- MetadataSource.cs
- TemplateLookupAction.cs
- ValueUnavailableException.cs
- SafeLibraryHandle.cs
- IERequestCache.cs
- FileSystemWatcher.cs
- DynamicResourceExtension.cs
- ParallelTimeline.cs
- ContractMapping.cs
- DrawListViewItemEventArgs.cs
- GroupQuery.cs
- UDPClient.cs
- EventProviderWriter.cs
- FixedSchema.cs
- oledbmetadatacollectionnames.cs
- ChannelManager.cs
- FrameworkReadOnlyPropertyMetadata.cs
- SortableBindingList.cs
- httpstaticobjectscollection.cs
- ContentType.cs
- UpdateCommand.cs
- SafeLibraryHandle.cs
- DataServiceQueryException.cs
- ClientSettingsStore.cs
- Single.cs
- PassportPrincipal.cs
- Vertex.cs
- CoreChannel.cs
- PropertyNames.cs
- PrivateFontCollection.cs
- ProfileModule.cs
- CharAnimationUsingKeyFrames.cs
- FontFamily.cs
- TextBlockAutomationPeer.cs
- LoginStatusDesigner.cs
- UserPersonalizationStateInfo.cs
- QuaternionKeyFrameCollection.cs
- MethodRental.cs
- TileModeValidation.cs
- counter.cs
- FixedElement.cs
- PersistenceProviderFactory.cs
- WebBrowserNavigatingEventHandler.cs
- OleDbRowUpdatingEvent.cs
- DefaultEvaluationContext.cs
- Opcode.cs
- SQLCharsStorage.cs
- ObjectListFieldCollection.cs
- _StreamFramer.cs
- PageThemeParser.cs
- PropertyGridEditorPart.cs
- SecurityException.cs
- AttributeData.cs
- MenuItemStyle.cs
- And.cs
- FilteredDataSetHelper.cs
- EntitySqlQueryBuilder.cs
- TransactionOptions.cs
- BitmapEncoder.cs
- EntityWithChangeTrackerStrategy.cs
- CqlErrorHelper.cs
- ToolStripHighContrastRenderer.cs
- WebBaseEventKeyComparer.cs
- PrincipalPermission.cs
- HorizontalAlignConverter.cs
- DesignerAutoFormatStyle.cs
- ListViewItemSelectionChangedEvent.cs
- OdbcConnection.cs
- OleDbException.cs
- TdsParserSessionPool.cs
- DeflateStream.cs
- CallbackHandler.cs
- ScaleTransform.cs
- ToolBarOverflowPanel.cs
- DisplayInformation.cs
- SqlRewriteScalarSubqueries.cs
- FormsAuthenticationTicket.cs
- BinaryCommonClasses.cs
- WebPermission.cs
- WebPartConnectionsCloseVerb.cs
- ObjectIDGenerator.cs
- XslCompiledTransform.cs