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
- ActivityDesignerResources.cs
- FrameworkElement.cs
- _ConnectionGroup.cs
- InheritanceAttribute.cs
- DataControlLinkButton.cs
- HttpRequestCacheValidator.cs
- ApplicationCommands.cs
- ManifestSignedXml.cs
- CompilationUtil.cs
- SimpleType.cs
- Expression.cs
- ImageMapEventArgs.cs
- ApplicationSecurityInfo.cs
- dtdvalidator.cs
- Queue.cs
- DesignSurfaceCollection.cs
- ArgumentFixer.cs
- ActiveXHost.cs
- BrowserCapabilitiesCompiler.cs
- ConditionalAttribute.cs
- MultitargetingHelpers.cs
- ToolStripDesigner.cs
- CreateDataSourceDialog.cs
- KeyGestureConverter.cs
- CodeCompiler.cs
- LiteralControl.cs
- DataGridViewCheckBoxColumn.cs
- exports.cs
- Matrix3DStack.cs
- NetworkInformationPermission.cs
- AssemblyFilter.cs
- CategoryAttribute.cs
- Int32CAMarshaler.cs
- ImageCodecInfo.cs
- ComboBoxRenderer.cs
- NonParentingControl.cs
- ApplicationManager.cs
- ToolStripLocationCancelEventArgs.cs
- MethodSet.cs
- ToolStripItemCollection.cs
- EditCommandColumn.cs
- GenericTextProperties.cs
- MessageEncodingBindingElement.cs
- TableRow.cs
- RtfToXamlReader.cs
- XmlSchemaInferenceException.cs
- GcHandle.cs
- DynamicDataResources.Designer.cs
- Int16AnimationUsingKeyFrames.cs
- UserMapPath.cs
- EdmRelationshipRoleAttribute.cs
- OleDbStruct.cs
- SerializationException.cs
- WindowsFont.cs
- PartialTrustHelpers.cs
- Debug.cs
- QilReference.cs
- PartBasedPackageProperties.cs
- ViewPort3D.cs
- MILUtilities.cs
- HtmlInputImage.cs
- EmptyEnumerator.cs
- CircleEase.cs
- NotifyParentPropertyAttribute.cs
- DbConnectionFactory.cs
- SqlDeflator.cs
- BaseAsyncResult.cs
- FileUpload.cs
- WindowsListViewScroll.cs
- DataGridViewElement.cs
- ECDsa.cs
- Stack.cs
- RegistrationServices.cs
- EventArgs.cs
- metadatamappinghashervisitor.cs
- PriorityQueue.cs
- ColumnBinding.cs
- UxThemeWrapper.cs
- SqlCommand.cs
- ButtonBase.cs
- NavigationService.cs
- DataKey.cs
- WebPartConnectionsCancelVerb.cs
- HuffCodec.cs
- PackageFilter.cs
- SmiSettersStream.cs
- CapabilitiesUse.cs
- WindowsEditBox.cs
- EtwTrackingBehavior.cs
- PageTrueTypeFont.cs
- DataTemplateSelector.cs
- PropertyChangedEventArgs.cs
- DiffuseMaterial.cs
- DataRowCollection.cs
- ErrorRuntimeConfig.cs
- CounterCreationDataCollection.cs
- InkCanvas.cs
- AssemblyBuilder.cs
- LoginNameDesigner.cs
- RSAOAEPKeyExchangeDeformatter.cs