Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Security / Cryptography / AesManaged.cs / 1305376 / AesManaged.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== using System; #if !SILVERLIGHT using System.Diagnostics.Contracts; #endif // !SILVERLIGHT namespace System.Security.Cryptography { ////// Managed implementation of the AES algorithm. AES is esentially Rijndael with a fixed block size /// and iteration count, so we just wrap the RijndaelManaged class and allow only 128 bit blocks to /// be used. /// public sealed class AesManaged : Aes { private RijndaelManaged m_rijndael; public AesManaged() { #if !SILVERLIGHT Contract.Ensures(m_rijndael != null); if (CryptoConfig.AllowOnlyFipsAlgorithms) { throw new InvalidOperationException(SR.GetString(SR.Cryptography_NonCompliantFIPSAlgorithm)); } #endif // !SILVERLIGHT m_rijndael = new RijndaelManaged(); m_rijndael.BlockSize = BlockSize; m_rijndael.KeySize = KeySize; } #if !SILVERLIGHT public override int FeedbackSize { get { return m_rijndael.FeedbackSize; } set { m_rijndael.FeedbackSize = value; } } #endif // !SILVERLIGHT public override byte[] IV { get { return m_rijndael.IV; } set { m_rijndael.IV = value; } } public override byte[] Key { get { return m_rijndael.Key; } set { m_rijndael.Key = value; } } public override int KeySize { get { return m_rijndael.KeySize; } set { m_rijndael.KeySize = value; } } #if !SILVERLIGHT public override CipherMode Mode { get { return m_rijndael.Mode; } set { Contract.Ensures(m_rijndael.Mode != CipherMode.CFB && m_rijndael.Mode != CipherMode.OFB); // RijndaelManaged will implicitly change the block size of an algorithm to match the number // of feedback bits being used. Since AES requires a block size of 128 bits, we cannot allow // the user to use the feedback modes, as this will end up breaking that invarient. if (value == CipherMode.CFB || value == CipherMode.OFB) { throw new CryptographicException(SR.GetString(SR.Cryptography_InvalidCipherMode)); } m_rijndael.Mode = value; } } public override PaddingMode Padding { get { return m_rijndael.Padding; } set { m_rijndael.Padding = value; } } #endif // !SILVERLIGHT public override ICryptoTransform CreateDecryptor() { return m_rijndael.CreateDecryptor(); } public override ICryptoTransform CreateDecryptor(byte[] key, byte[] iv) { if (key == null) { throw new ArgumentNullException("key"); } #if !SILVERLIGHT if (!ValidKeySize(key.Length * 8)) { throw new ArgumentException(SR.GetString(SR.Cryptography_InvalidKeySize), "key"); } if (iv != null && iv.Length * 8 != BlockSizeValue) { throw new ArgumentException(SR.GetString(SR.Cryptography_InvalidIVSize), "iv"); } #endif return m_rijndael.CreateDecryptor(key, iv); } public override ICryptoTransform CreateEncryptor() { return m_rijndael.CreateEncryptor(); } public override ICryptoTransform CreateEncryptor(byte[] key, byte[] iv) { if (key == null) { throw new ArgumentNullException("key"); } #if !SILVERLIGHT if (!ValidKeySize(key.Length * 8)) { throw new ArgumentException(SR.GetString(SR.Cryptography_InvalidKeySize), "key"); } if (iv != null && iv.Length * 8 != BlockSizeValue) { throw new ArgumentException(SR.GetString(SR.Cryptography_InvalidIVSize), "iv"); } #endif // SILVERLIGHT return m_rijndael.CreateEncryptor(key, iv); } protected override void Dispose(bool disposing) { try { if (disposing) { (m_rijndael as IDisposable).Dispose(); } } finally { base.Dispose(disposing); } } public override void GenerateIV() { m_rijndael.GenerateIV(); } public override void GenerateKey() { m_rijndael.GenerateKey(); } } } // 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
- QilPatternVisitor.cs
- XmlFormatMapping.cs
- ShaperBuffers.cs
- DiagnosticsConfiguration.cs
- COM2ExtendedUITypeEditor.cs
- JavaScriptSerializer.cs
- CopyNodeSetAction.cs
- FileLoadException.cs
- OdbcConnectionStringbuilder.cs
- AssemblyLoader.cs
- MetaDataInfo.cs
- ExpandCollapseProviderWrapper.cs
- XPathBinder.cs
- SlotInfo.cs
- ConversionContext.cs
- AttributeExtensions.cs
- GenericRootAutomationPeer.cs
- TextEditorSelection.cs
- AudioBase.cs
- HMACSHA256.cs
- RegisteredArrayDeclaration.cs
- MouseCaptureWithinProperty.cs
- DisposableCollectionWrapper.cs
- TableRow.cs
- VerificationException.cs
- TypeGeneratedEventArgs.cs
- MetadataCollection.cs
- XPathMessageContext.cs
- ProfileManager.cs
- ClaimSet.cs
- InkCanvasSelectionAdorner.cs
- InnerItemCollectionView.cs
- ContextConfiguration.cs
- FragmentQueryKB.cs
- DrawItemEvent.cs
- DataGridViewIntLinkedList.cs
- BmpBitmapDecoder.cs
- EntityStoreSchemaGenerator.cs
- WebResourceAttribute.cs
- MetabaseSettingsIis7.cs
- RuntimeHandles.cs
- HtmlInputSubmit.cs
- CodeGroup.cs
- Vertex.cs
- CacheModeValueSerializer.cs
- NumericUpDownAcceleration.cs
- PropertyChangeTracker.cs
- IgnoreDataMemberAttribute.cs
- IndexedString.cs
- PointCollectionConverter.cs
- URLAttribute.cs
- EdmItemCollection.OcAssemblyCache.cs
- CommandTreeTypeHelper.cs
- SurrogateDataContract.cs
- ScrollEventArgs.cs
- Operator.cs
- SizeConverter.cs
- OptimalTextSource.cs
- DataTableExtensions.cs
- HttpRawResponse.cs
- ServerIdentity.cs
- SqlCommand.cs
- XmlChoiceIdentifierAttribute.cs
- SimpleLine.cs
- OAVariantLib.cs
- AsyncCompletedEventArgs.cs
- SqlProviderServices.cs
- PackageRelationshipCollection.cs
- BitmapDownload.cs
- HyperlinkAutomationPeer.cs
- SqlDesignerDataSourceView.cs
- CodeTypeReferenceExpression.cs
- ObjectNavigationPropertyMapping.cs
- DecimalStorage.cs
- TemplateField.cs
- GenericEnumConverter.cs
- ToolStripDesigner.cs
- RayMeshGeometry3DHitTestResult.cs
- Evidence.cs
- NoneExcludedImageIndexConverter.cs
- Calendar.cs
- OdbcEnvironmentHandle.cs
- EntityViewGenerator.cs
- MessageQueuePermissionEntry.cs
- CheckedListBox.cs
- Select.cs
- JournalNavigationScope.cs
- BindingExpressionUncommonField.cs
- EndOfStreamException.cs
- FileSystemEventArgs.cs
- PartitionResolver.cs
- MasterPage.cs
- DataGridAutoFormat.cs
- PrintPreviewControl.cs
- ToolStripSplitButton.cs
- QuinticEase.cs
- Configuration.cs
- CodeExpressionStatement.cs
- ColumnTypeConverter.cs
- sqlnorm.cs