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
- ConstantSlot.cs
- SortedDictionary.cs
- PreparingEnlistment.cs
- SamlAuthorizationDecisionStatement.cs
- ArglessEventHandlerProxy.cs
- PasswordDeriveBytes.cs
- WindowsAuthenticationModule.cs
- XmlDataSourceNodeDescriptor.cs
- Validator.cs
- ToggleProviderWrapper.cs
- DBConnectionString.cs
- EllipseGeometry.cs
- ArraySubsetEnumerator.cs
- WebColorConverter.cs
- FormatControl.cs
- MimeParameters.cs
- ProcessModelSection.cs
- ListControlDesigner.cs
- ListViewInsertedEventArgs.cs
- SecUtil.cs
- FixedHighlight.cs
- CriticalExceptions.cs
- ProviderSettingsCollection.cs
- DataConnectionHelper.cs
- PasswordRecovery.cs
- Stroke.cs
- BitArray.cs
- GridViewUpdatedEventArgs.cs
- MenuAdapter.cs
- SystemDiagnosticsSection.cs
- CompressionTracing.cs
- StyleCollection.cs
- WebPartDisplayModeEventArgs.cs
- TextStore.cs
- GeneratedCodeAttribute.cs
- DriveInfo.cs
- Exception.cs
- HttpModule.cs
- StylusPointProperties.cs
- AnnotationResourceChangedEventArgs.cs
- MenuItemBinding.cs
- ManagementObject.cs
- _AutoWebProxyScriptHelper.cs
- JoinTreeSlot.cs
- Point.cs
- Themes.cs
- BuildManagerHost.cs
- TextUtf8RawTextWriter.cs
- _DisconnectOverlappedAsyncResult.cs
- CompilationLock.cs
- FunctionNode.cs
- XmlCountingReader.cs
- SqlCommandBuilder.cs
- HtmlTitle.cs
- PackUriHelper.cs
- Link.cs
- ItemsChangedEventArgs.cs
- ButtonBase.cs
- DBSqlParserColumnCollection.cs
- SmiConnection.cs
- UnsafeNativeMethods.cs
- PropertyValueUIItem.cs
- TextLineResult.cs
- NetMsmqBindingElement.cs
- SmiEventSink_Default.cs
- PKCS1MaskGenerationMethod.cs
- ObjectIDGenerator.cs
- CryptoHelper.cs
- ExtendedProtectionPolicy.cs
- XmlArrayItemAttributes.cs
- SafeSecurityHelper.cs
- QilInvokeLateBound.cs
- EditorAttribute.cs
- oledbmetadatacollectionnames.cs
- ExtentJoinTreeNode.cs
- DateTimePickerDesigner.cs
- TraceHwndHost.cs
- EditorBrowsableAttribute.cs
- SecureUICommand.cs
- X509WindowsSecurityToken.cs
- InputScopeManager.cs
- OledbConnectionStringbuilder.cs
- DataAdapter.cs
- ClientTarget.cs
- TextElementCollection.cs
- DataMisalignedException.cs
- PrinterResolution.cs
- SizeValueSerializer.cs
- PathNode.cs
- DataSourceGroupCollection.cs
- PageAsyncTaskManager.cs
- DesignerCategoryAttribute.cs
- ping.cs
- DropTarget.cs
- BidOverLoads.cs
- SkipStoryboardToFill.cs
- Blend.cs
- SQLBytesStorage.cs
- EpmSourcePathSegment.cs
- RsaSecurityTokenAuthenticator.cs