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
- TextEditorLists.cs
- WhitespaceRule.cs
- TraceLevelStore.cs
- UnsafeNativeMethods.cs
- glyphs.cs
- ParseNumbers.cs
- SafeThemeHandle.cs
- DataControlFieldCell.cs
- BasicHttpBindingCollectionElement.cs
- RoleManagerModule.cs
- OrderedEnumerableRowCollection.cs
- ConditionalAttribute.cs
- BlockUIContainer.cs
- ConstructorBuilder.cs
- InternalDispatchObject.cs
- SspiHelper.cs
- RevocationPoint.cs
- WebPartConnectionsCancelVerb.cs
- RelationshipNavigation.cs
- Tokenizer.cs
- ObjectReferenceStack.cs
- WorkflowViewManager.cs
- FileLogRecordStream.cs
- WebPartEditVerb.cs
- BuildManagerHost.cs
- InstanceDataCollection.cs
- ThicknessKeyFrameCollection.cs
- FieldBuilder.cs
- QueueNameHelper.cs
- TypedTableGenerator.cs
- CodeMethodReturnStatement.cs
- EntityTransaction.cs
- UDPClient.cs
- XmlDataSource.cs
- OneOfScalarConst.cs
- View.cs
- TableColumn.cs
- PropertyValueEditor.cs
- GcHandle.cs
- Subset.cs
- ThemeConfigurationDialog.cs
- SerializerWriterEventHandlers.cs
- DataServiceRequestArgs.cs
- FastEncoder.cs
- GraphicsContext.cs
- XhtmlBasicPhoneCallAdapter.cs
- BooleanSwitch.cs
- ConsumerConnectionPointCollection.cs
- StreamGeometry.cs
- SoapRpcMethodAttribute.cs
- XmlReflectionMember.cs
- ReflectionPermission.cs
- JavaScriptString.cs
- ContentTypeSettingClientMessageFormatter.cs
- StorageMappingItemCollection.cs
- RegularExpressionValidator.cs
- MetadataItem.cs
- ChannelDispatcher.cs
- FileLoadException.cs
- StrokeIntersection.cs
- WindowsTab.cs
- MarkupCompilePass1.cs
- ContentDesigner.cs
- IDictionary.cs
- DataContractSet.cs
- SelfIssuedAuthRSACryptoProvider.cs
- EdmSchemaAttribute.cs
- ControlBuilderAttribute.cs
- ListViewItemMouseHoverEvent.cs
- HostedElements.cs
- DataTransferEventArgs.cs
- AppSettingsExpressionBuilder.cs
- DataRelationPropertyDescriptor.cs
- CustomCredentialPolicy.cs
- SqlConnectionStringBuilder.cs
- x509utils.cs
- PropertyToken.cs
- ReferencedCollectionType.cs
- Activity.cs
- XamlTypeWithExplicitNamespace.cs
- DeferredRunTextReference.cs
- BinaryWriter.cs
- WorkflowOperationInvoker.cs
- OdbcError.cs
- GradientBrush.cs
- InternalDispatchObject.cs
- PreviewKeyDownEventArgs.cs
- TrackingStringDictionary.cs
- ElementUtil.cs
- ImageBrush.cs
- DragCompletedEventArgs.cs
- InputGestureCollection.cs
- XmlSchemaInfo.cs
- CollectionViewGroupInternal.cs
- Underline.cs
- BoundColumn.cs
- TdsEnums.cs
- ConstrainedGroup.cs
- TextTreeRootTextBlock.cs
- IUnknownConstantAttribute.cs