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
- AuthorizationRule.cs
- DrawingContextWalker.cs
- QueueProcessor.cs
- X509CertificateClaimSet.cs
- StringToken.cs
- RtfControlWordInfo.cs
- MobilePage.cs
- ModifiableIteratorCollection.cs
- Size3D.cs
- ObjectMemberMapping.cs
- CorrelationManager.cs
- Argument.cs
- GroupItemAutomationPeer.cs
- NullableIntSumAggregationOperator.cs
- SecurityContext.cs
- shaperfactoryquerycacheentry.cs
- Translator.cs
- TypeDescriptionProviderAttribute.cs
- LineProperties.cs
- XmlSchemaSimpleContent.cs
- DBConnection.cs
- PictureBox.cs
- OleDbRowUpdatedEvent.cs
- Dispatcher.cs
- Hash.cs
- Group.cs
- EntityClassGenerator.cs
- WrapPanel.cs
- FrameworkElement.cs
- WindowsToolbarAsMenu.cs
- ValidationHelper.cs
- FlowDocument.cs
- EntityDataReader.cs
- TextTreeObjectNode.cs
- CodeRemoveEventStatement.cs
- ITreeGenerator.cs
- ComAwareEventInfo.cs
- ScrollEvent.cs
- ScrollableControl.cs
- XmlSortKey.cs
- AssemblySettingAttributes.cs
- MapPathBasedVirtualPathProvider.cs
- StatusBarItemAutomationPeer.cs
- HighlightComponent.cs
- CompilerTypeWithParams.cs
- configsystem.cs
- designeractionlistschangedeventargs.cs
- WpfGeneratedKnownProperties.cs
- Unit.cs
- IdnMapping.cs
- PlainXmlDeserializer.cs
- DeferredElementTreeState.cs
- InkSerializer.cs
- FreezableDefaultValueFactory.cs
- APCustomTypeDescriptor.cs
- FollowerQueueCreator.cs
- Int16.cs
- DataGridViewRowStateChangedEventArgs.cs
- SerializationFieldInfo.cs
- HttpClientChannel.cs
- GuidConverter.cs
- DataGridColumnCollection.cs
- LongValidatorAttribute.cs
- XmlIgnoreAttribute.cs
- SystemEvents.cs
- StringAttributeCollection.cs
- StringDictionary.cs
- _TimerThread.cs
- UmAlQuraCalendar.cs
- FlowLayoutPanel.cs
- GCHandleCookieTable.cs
- AdapterDictionary.cs
- safex509handles.cs
- NotImplementedException.cs
- TableHeaderCell.cs
- PersistenceTypeAttribute.cs
- DesignSurfaceCollection.cs
- EventlogProvider.cs
- NamespaceDisplayAutomationPeer.cs
- Visual3D.cs
- SolidColorBrush.cs
- SingleAnimationUsingKeyFrames.cs
- TextServicesHost.cs
- DecimalAverageAggregationOperator.cs
- SQLDecimalStorage.cs
- RuleSettingsCollection.cs
- ObjectFullSpanRewriter.cs
- XhtmlBasicValidatorAdapter.cs
- Configuration.cs
- QuaternionIndependentAnimationStorage.cs
- WebPartTransformerAttribute.cs
- SqlMethodAttribute.cs
- Pkcs9Attribute.cs
- AsymmetricAlgorithm.cs
- ConsoleEntryPoint.cs
- RepeaterDataBoundAdapter.cs
- ArraySegment.cs
- LocationReferenceEnvironment.cs
- Console.cs
- RuleProcessor.cs