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
- WpfWebRequestHelper.cs
- ToolStripSeparatorRenderEventArgs.cs
- base64Transforms.cs
- ArrayTypeMismatchException.cs
- TreeViewBindingsEditor.cs
- ImportOptions.cs
- FullTextBreakpoint.cs
- BindableTemplateBuilder.cs
- StringToken.cs
- OleDbCommandBuilder.cs
- VersionedStream.cs
- NotSupportedException.cs
- CryptoStream.cs
- KerberosSecurityTokenAuthenticator.cs
- DocumentXmlWriter.cs
- DataGridCommandEventArgs.cs
- GrammarBuilderDictation.cs
- CheckPair.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- JournalEntryStack.cs
- DataSysAttribute.cs
- ButtonStandardAdapter.cs
- TextRangeSerialization.cs
- DropDownList.cs
- AppDomainFactory.cs
- GridViewRowEventArgs.cs
- CollectionViewGroup.cs
- RepeaterDesigner.cs
- DiagnosticsConfiguration.cs
- ProcessProtocolHandler.cs
- SchemaCollectionCompiler.cs
- AuthenticationModuleElementCollection.cs
- HttpCacheParams.cs
- RawStylusActions.cs
- CrossContextChannel.cs
- ActiveDocumentEvent.cs
- DataGrid.cs
- FormsAuthentication.cs
- DeviceSpecificChoice.cs
- glyphs.cs
- FrugalList.cs
- WindowsIdentity.cs
- SHA384.cs
- UnsafeNativeMethods.cs
- ObsoleteAttribute.cs
- AdornerLayer.cs
- EdmPropertyAttribute.cs
- RegexCompiler.cs
- DataPagerCommandEventArgs.cs
- FixedPageAutomationPeer.cs
- SqlInternalConnectionTds.cs
- ConnectionPointGlyph.cs
- FunctionUpdateCommand.cs
- PointHitTestResult.cs
- AddressUtility.cs
- XmlStreamStore.cs
- DataKeyArray.cs
- infer.cs
- BaseValidator.cs
- FloatMinMaxAggregationOperator.cs
- KeyFrames.cs
- _SafeNetHandles.cs
- QilStrConcatenator.cs
- ApplyImportsAction.cs
- ListBase.cs
- SqlWebEventProvider.cs
- SimpleBitVector32.cs
- TriggerActionCollection.cs
- XmlSerializationGeneratedCode.cs
- TextSimpleMarkerProperties.cs
- GreenMethods.cs
- ConfigurationStrings.cs
- MultilineStringConverter.cs
- ApplicationDirectory.cs
- exports.cs
- TemplateBindingExtension.cs
- ComponentChangedEvent.cs
- _SpnDictionary.cs
- IntSecurity.cs
- CaretElement.cs
- ComponentCollection.cs
- OdbcConnectionOpen.cs
- AbstractSvcMapFileLoader.cs
- SqlClientMetaDataCollectionNames.cs
- EdmRelationshipRoleAttribute.cs
- SqlPersonalizationProvider.cs
- FormViewRow.cs
- AuthorizationRuleCollection.cs
- CommonDialog.cs
- IsolatedStorageFile.cs
- PropertyChangedEventArgs.cs
- CodeVariableReferenceExpression.cs
- InputScopeAttribute.cs
- SignatureConfirmationElement.cs
- PointF.cs
- XsltContext.cs
- CollectionEditVerbManager.cs
- ComponentCache.cs
- SqlGatherProducedAliases.cs
- ImageFormat.cs