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
- ProgressBarBrushConverter.cs
- Knowncolors.cs
- RequestCachePolicy.cs
- ConditionValidator.cs
- SimplePropertyEntry.cs
- MinimizableAttributeTypeConverter.cs
- XmlDocument.cs
- ContextStaticAttribute.cs
- CapabilitiesUse.cs
- DefaultBinder.cs
- PostBackOptions.cs
- ASCIIEncoding.cs
- PropertyNames.cs
- WebPartMinimizeVerb.cs
- ExpressionBinding.cs
- BulletedList.cs
- LinkedDataMemberFieldEditor.cs
- DetailsViewActionList.cs
- WindowProviderWrapper.cs
- WebPartEditorCancelVerb.cs
- TrustSection.cs
- CorePropertiesFilter.cs
- MachineSettingsSection.cs
- SamlSecurityToken.cs
- DescendentsWalker.cs
- EntityDataSourceState.cs
- XmlSchemaDatatype.cs
- DropShadowEffect.cs
- DetailsViewInsertedEventArgs.cs
- SessionStateContainer.cs
- MSAAWinEventWrap.cs
- X509CertificateTokenFactoryCredential.cs
- ResourceType.cs
- ObjectDataSourceDesigner.cs
- OverlappedContext.cs
- DataObjectEventArgs.cs
- ViewStateAttachedPropertyFeature.cs
- AssemblySettingAttributes.cs
- RubberbandSelector.cs
- TerminateDesigner.cs
- DataGridHelper.cs
- ClearTypeHintValidation.cs
- MiniMapControl.xaml.cs
- SkinBuilder.cs
- ObjectViewListener.cs
- TableColumn.cs
- FormsAuthentication.cs
- TypedRowHandler.cs
- ButtonFieldBase.cs
- CellPartitioner.cs
- SharingService.cs
- ListViewItemSelectionChangedEvent.cs
- ImmutableObjectAttribute.cs
- Brush.cs
- BrowserDefinitionCollection.cs
- SessionEndingCancelEventArgs.cs
- TypedElement.cs
- TextBlock.cs
- PriorityQueue.cs
- UnsafeMethods.cs
- Deserializer.cs
- KeyTime.cs
- Exceptions.cs
- DataViewListener.cs
- MinMaxParagraphWidth.cs
- CacheMemory.cs
- WebColorConverter.cs
- ProtocolsConfiguration.cs
- ClientBuildManagerCallback.cs
- CaretElement.cs
- DesignerAutoFormatCollection.cs
- SecurityTokenInclusionMode.cs
- PreviousTrackingServiceAttribute.cs
- NumericUpDown.cs
- BitmapEffect.cs
- ToolStripActionList.cs
- HttpCacheParams.cs
- AnimatedTypeHelpers.cs
- WebDisplayNameAttribute.cs
- AssemblyAttributes.cs
- MemberInfoSerializationHolder.cs
- SuppressIldasmAttribute.cs
- FloatUtil.cs
- CssStyleCollection.cs
- SqlDependency.cs
- HelpKeywordAttribute.cs
- DllNotFoundException.cs
- AssertSection.cs
- OleDbStruct.cs
- BoundPropertyEntry.cs
- Component.cs
- ProcessModule.cs
- InvocationExpression.cs
- FormatConvertedBitmap.cs
- ContentAlignmentEditor.cs
- XmlSchemaInferenceException.cs
- ManagementEventWatcher.cs
- ProgressChangedEventArgs.cs
- ACL.cs
- AlgoModule.cs