Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Security / Cryptography / RijndaelManaged.cs / 1305376 / RijndaelManaged.cs
using System.Diagnostics.Contracts; // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //[....] // // // RijndaelManaged.cs // namespace System.Security.Cryptography { [System.Runtime.InteropServices.ComVisible(true)] public sealed class RijndaelManaged : Rijndael { public RijndaelManaged () { #if FEATURE_CRYPTO if (CryptoConfig.AllowOnlyFipsAlgorithms) throw new InvalidOperationException(Environment.GetResourceString("Cryptography_NonCompliantFIPSAlgorithm")); Contract.EndContractBlock(); #endif // FEATURE_CRYPTO } // #CoreCLRRijndaelModes // // On CoreCLR we limit the supported cipher modes and padding modes for the AES algorithm to a // single hard coded value. This allows us to remove a lot of code by removing support for the // uncommon cases and forcing everyone to use the same common padding and ciper modes: // // - CipherMode: CipherMode.CBC // - PaddingMode: PaddingMode.PKCS7 public override ICryptoTransform CreateEncryptor (byte[] rgbKey, byte[] rgbIV) { return NewEncryptor(rgbKey, ModeValue, rgbIV, FeedbackSizeValue, RijndaelManagedTransformMode.Encrypt); } public override ICryptoTransform CreateDecryptor (byte[] rgbKey, byte[] rgbIV) { return NewEncryptor(rgbKey, ModeValue, rgbIV, FeedbackSizeValue, RijndaelManagedTransformMode.Decrypt); } public override void GenerateKey () { KeyValue = Utils.GenerateRandom(KeySizeValue / 8); } public override void GenerateIV () { IVValue = Utils.GenerateRandom(BlockSizeValue / 8); } private ICryptoTransform NewEncryptor (byte[] rgbKey, CipherMode mode, byte[] rgbIV, int feedbackSize, RijndaelManagedTransformMode encryptMode) { // Build the key if one does not already exist if (rgbKey == null) { rgbKey = Utils.GenerateRandom(KeySizeValue / 8); } // If not ECB mode, make sure we have an IV. In CoreCLR we do not support ECB, so we must have // an IV in all cases. #if !FEATURE_CRYPTO if (mode != CipherMode.ECB) { #endif // !FEATURE_CRYPTO if (rgbIV == null) { rgbIV = Utils.GenerateRandom(BlockSizeValue / 8); } #if !FEATURE_CRYPTO } #endif // !FEATURE_CRYPTO // Create the encryptor/decryptor object return new RijndaelManagedTransform (rgbKey, mode, rgbIV, BlockSizeValue, feedbackSize, PaddingValue, encryptMode); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System.Diagnostics.Contracts; // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //[....] // // // RijndaelManaged.cs // namespace System.Security.Cryptography { [System.Runtime.InteropServices.ComVisible(true)] public sealed class RijndaelManaged : Rijndael { public RijndaelManaged () { #if FEATURE_CRYPTO if (CryptoConfig.AllowOnlyFipsAlgorithms) throw new InvalidOperationException(Environment.GetResourceString("Cryptography_NonCompliantFIPSAlgorithm")); Contract.EndContractBlock(); #endif // FEATURE_CRYPTO } // #CoreCLRRijndaelModes // // On CoreCLR we limit the supported cipher modes and padding modes for the AES algorithm to a // single hard coded value. This allows us to remove a lot of code by removing support for the // uncommon cases and forcing everyone to use the same common padding and ciper modes: // // - CipherMode: CipherMode.CBC // - PaddingMode: PaddingMode.PKCS7 public override ICryptoTransform CreateEncryptor (byte[] rgbKey, byte[] rgbIV) { return NewEncryptor(rgbKey, ModeValue, rgbIV, FeedbackSizeValue, RijndaelManagedTransformMode.Encrypt); } public override ICryptoTransform CreateDecryptor (byte[] rgbKey, byte[] rgbIV) { return NewEncryptor(rgbKey, ModeValue, rgbIV, FeedbackSizeValue, RijndaelManagedTransformMode.Decrypt); } public override void GenerateKey () { KeyValue = Utils.GenerateRandom(KeySizeValue / 8); } public override void GenerateIV () { IVValue = Utils.GenerateRandom(BlockSizeValue / 8); } private ICryptoTransform NewEncryptor (byte[] rgbKey, CipherMode mode, byte[] rgbIV, int feedbackSize, RijndaelManagedTransformMode encryptMode) { // Build the key if one does not already exist if (rgbKey == null) { rgbKey = Utils.GenerateRandom(KeySizeValue / 8); } // If not ECB mode, make sure we have an IV. In CoreCLR we do not support ECB, so we must have // an IV in all cases. #if !FEATURE_CRYPTO if (mode != CipherMode.ECB) { #endif // !FEATURE_CRYPTO if (rgbIV == null) { rgbIV = Utils.GenerateRandom(BlockSizeValue / 8); } #if !FEATURE_CRYPTO } #endif // !FEATURE_CRYPTO // Create the encryptor/decryptor object return new RijndaelManagedTransform (rgbKey, mode, rgbIV, BlockSizeValue, feedbackSize, PaddingValue, encryptMode); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- entitydatasourceentitysetnameconverter.cs
- LogArchiveSnapshot.cs
- BitmapEffectInputData.cs
- Int32.cs
- FilterableAttribute.cs
- InputBinding.cs
- Rect.cs
- DynamicExpression.cs
- SqlConnectionFactory.cs
- XPathSingletonIterator.cs
- JpegBitmapEncoder.cs
- ExceptionHandlersDesigner.cs
- TraversalRequest.cs
- UrlParameterReader.cs
- TypedLocationWrapper.cs
- CompilationSection.cs
- FontNamesConverter.cs
- HandledMouseEvent.cs
- EndpointConfigContainer.cs
- SQLStringStorage.cs
- WorkflowQueuingService.cs
- PersistenceParticipant.cs
- TreeViewItem.cs
- BrowserDefinition.cs
- DataErrorValidationRule.cs
- CheckBox.cs
- XmlSecureResolver.cs
- RawStylusInput.cs
- SpellerInterop.cs
- ConfigurationSectionCollection.cs
- MetaModel.cs
- ModifiableIteratorCollection.cs
- QfeChecker.cs
- ToolStripKeyboardHandlingService.cs
- _Semaphore.cs
- SqlXmlStorage.cs
- ListCommandEventArgs.cs
- ProxyOperationRuntime.cs
- AssociationSetEnd.cs
- CreateUserWizard.cs
- RouteParametersHelper.cs
- BeginEvent.cs
- PageCache.cs
- TraceLevelHelper.cs
- TextBox.cs
- ContentPlaceHolder.cs
- KeyTimeConverter.cs
- BitmapEffectDrawing.cs
- RegexMatchCollection.cs
- RelOps.cs
- TabControlAutomationPeer.cs
- CompModHelpers.cs
- FileReader.cs
- PropertyCollection.cs
- BrowserCapabilitiesFactory.cs
- FontDifferentiator.cs
- PlanCompiler.cs
- BuiltInExpr.cs
- PointCollection.cs
- DotExpr.cs
- JsonFormatWriterGenerator.cs
- AbsoluteQuery.cs
- ExclusiveTcpListener.cs
- exports.cs
- SafeBitVector32.cs
- ToolStripButton.cs
- ProxyBuilder.cs
- RotationValidation.cs
- ContentTextAutomationPeer.cs
- SpeechAudioFormatInfo.cs
- EventLogPermissionEntry.cs
- XmlAttributeCollection.cs
- DictionaryTraceRecord.cs
- oledbmetadatacolumnnames.cs
- BaseResourcesBuildProvider.cs
- LocalizationComments.cs
- DropSource.cs
- HtmlInputCheckBox.cs
- DBNull.cs
- GridSplitterAutomationPeer.cs
- CompilerGlobalScopeAttribute.cs
- ClientFormsIdentity.cs
- SymbolType.cs
- Schema.cs
- GeometryHitTestParameters.cs
- TreeNodeStyle.cs
- DataPointer.cs
- RequestQueue.cs
- ToolStripManager.cs
- DropAnimation.xaml.cs
- PreviewPageInfo.cs
- ServiceEndpointElement.cs
- BindingBase.cs
- CatalogZoneBase.cs
- HttpListenerRequest.cs
- wmiprovider.cs
- HybridDictionary.cs
- EntityDataSourceConfigureObjectContext.cs
- FilterableAttribute.cs
- WebCategoryAttribute.cs