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
- GcHandle.cs
- FontConverter.cs
- TemplateField.cs
- sqlcontext.cs
- WebPartEditorApplyVerb.cs
- filewebrequest.cs
- DocumentOrderComparer.cs
- _NestedSingleAsyncResult.cs
- TextEffect.cs
- RegularExpressionValidator.cs
- WhitespaceRuleLookup.cs
- WeakReference.cs
- ApplicationFileParser.cs
- InstallerTypeAttribute.cs
- XmlNodeList.cs
- TaskFormBase.cs
- CalendarAutomationPeer.cs
- RelationshipConverter.cs
- BamlBinaryWriter.cs
- QueryOpcode.cs
- ListViewInsertionMark.cs
- MetadataHelper.cs
- MethodAccessException.cs
- ManagementException.cs
- TemplatedEditableDesignerRegion.cs
- ResourcePart.cs
- ResolveMatchesCD1.cs
- CopyAttributesAction.cs
- ManagementScope.cs
- FlowDocumentPaginator.cs
- ComponentResourceKeyConverter.cs
- Calendar.cs
- ItemsPresenter.cs
- Converter.cs
- WebPartConnectionsDisconnectVerb.cs
- RegionIterator.cs
- RegexWorker.cs
- EntityEntry.cs
- FlowNode.cs
- HttpModuleAction.cs
- TemplateBamlTreeBuilder.cs
- ProfileSettingsCollection.cs
- DateTimeValueSerializerContext.cs
- RelationshipNavigation.cs
- Label.cs
- CodeMemberProperty.cs
- WindowsListView.cs
- PropertyRecord.cs
- ReadOnlyHierarchicalDataSourceView.cs
- MsmqChannelFactory.cs
- Documentation.cs
- MenuAdapter.cs
- GACIdentityPermission.cs
- OSFeature.cs
- HtmlInputButton.cs
- MD5.cs
- UpdateException.cs
- HttpBrowserCapabilitiesBase.cs
- SiteMapNodeItem.cs
- TextTreeTextNode.cs
- CompilerState.cs
- SQLDecimalStorage.cs
- MultiPropertyDescriptorGridEntry.cs
- ExecutionScope.cs
- Condition.cs
- XsltInput.cs
- StorageMappingFragment.cs
- Span.cs
- EntityObject.cs
- TextDecoration.cs
- DragEventArgs.cs
- AstNode.cs
- CorrelationRequestContext.cs
- RoutedEventArgs.cs
- Normalizer.cs
- XmlLinkedNode.cs
- ObjectKeyFrameCollection.cs
- X500Name.cs
- WebContext.cs
- SHA1Cng.cs
- BindingsCollection.cs
- Model3D.cs
- SecurityPolicySection.cs
- TypeElementCollection.cs
- CatalogPart.cs
- Animatable.cs
- EntityCommandExecutionException.cs
- entityreference_tresulttype.cs
- Int32CollectionValueSerializer.cs
- ObjectSet.cs
- DataGridItemCollection.cs
- SolidColorBrush.cs
- TextCompositionManager.cs
- TimeSpan.cs
- ValidationRule.cs
- GroupDescription.cs
- AddressAccessDeniedException.cs
- SingleQueryOperator.cs
- CacheDependency.cs
- HtmlInputText.cs