Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------ // 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
- GestureRecognitionResult.cs
- AccessDataSourceWizardForm.cs
- IisTraceWebEventProvider.cs
- StaticExtension.cs
- FrameworkElementAutomationPeer.cs
- DbMetaDataCollectionNames.cs
- ContextBase.cs
- HierarchicalDataTemplate.cs
- ActivityScheduledQuery.cs
- StatusBarDrawItemEvent.cs
- XmlWriterDelegator.cs
- PropertyMetadata.cs
- EmptyEnumerator.cs
- AppDomainInstanceProvider.cs
- ChannelSinkStacks.cs
- ObjectItemCollection.cs
- QilTernary.cs
- TraceHandler.cs
- HtmlTableCell.cs
- TraceContext.cs
- Axis.cs
- HttpApplicationFactory.cs
- FileLogRecordHeader.cs
- TreeNode.cs
- WebPartEditorApplyVerb.cs
- NativeMethods.cs
- CanonicalFontFamilyReference.cs
- unsafenativemethodstextservices.cs
- ApplySecurityAndSendAsyncResult.cs
- Attributes.cs
- Page.cs
- Relationship.cs
- ConfigXmlElement.cs
- XmlNotation.cs
- TdsParserSafeHandles.cs
- FilePresentation.cs
- XmlSchemaNotation.cs
- BitmapCodecInfo.cs
- SchemaDeclBase.cs
- LayoutSettings.cs
- TreeNodeCollection.cs
- RecognizedPhrase.cs
- InvalidWorkflowException.cs
- SqlParameterizer.cs
- TransformedBitmap.cs
- AssemblyHash.cs
- InstanceCreationEditor.cs
- DataTableReaderListener.cs
- LinkArea.cs
- FillBehavior.cs
- ExitEventArgs.cs
- StructuralType.cs
- ColumnReorderedEventArgs.cs
- TextOutput.cs
- sortedlist.cs
- PointLightBase.cs
- NativeMethods.cs
- PartialCachingAttribute.cs
- AppDomainManager.cs
- ReturnEventArgs.cs
- CodePrimitiveExpression.cs
- StandardOleMarshalObject.cs
- M3DUtil.cs
- ValueTypeFixupInfo.cs
- SafeRegistryHandle.cs
- PasswordBoxAutomationPeer.cs
- SafeCloseHandleCritical.cs
- CqlErrorHelper.cs
- _emptywebproxy.cs
- AuthenticationServiceManager.cs
- BooleanKeyFrameCollection.cs
- DesignerRegionCollection.cs
- _Connection.cs
- WebPartsPersonalizationAuthorization.cs
- ErrorInfoXmlDocument.cs
- SqlGatherConsumedAliases.cs
- DesignDataSource.cs
- Button.cs
- DataControlField.cs
- JulianCalendar.cs
- JournalEntryStack.cs
- StrongNameMembershipCondition.cs
- RoleManagerEventArgs.cs
- TreeView.cs
- CodeValidator.cs
- DataControlFieldHeaderCell.cs
- PageBorderless.cs
- followingsibling.cs
- PtsHost.cs
- TreeViewItem.cs
- HandleRef.cs
- DeploymentSection.cs
- UpDownBase.cs
- PngBitmapEncoder.cs
- ZoneLinkButton.cs
- OptionalColumn.cs
- rsa.cs
- UrlMapping.cs
- AutoGeneratedFieldProperties.cs
- ConvertBinder.cs