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
- PipelineDeploymentState.cs
- OledbConnectionStringbuilder.cs
- InvalidAsynchronousStateException.cs
- NonBatchDirectoryCompiler.cs
- InfoCardSymmetricAlgorithm.cs
- ColumnTypeConverter.cs
- Int64KeyFrameCollection.cs
- AdCreatedEventArgs.cs
- DtrList.cs
- LinqExpressionNormalizer.cs
- RelationshipEnd.cs
- Odbc32.cs
- SqlTransaction.cs
- SQLDoubleStorage.cs
- KeyGesture.cs
- SqlConnectionHelper.cs
- MessageSecurityOverMsmq.cs
- DrawToolTipEventArgs.cs
- TextFormatterImp.cs
- BooleanExpr.cs
- HistoryEventArgs.cs
- SystemException.cs
- DataServiceKeyAttribute.cs
- PlanCompiler.cs
- DoubleAnimationUsingKeyFrames.cs
- SchemaDeclBase.cs
- ApplyTemplatesAction.cs
- HtmlGenericControl.cs
- HostingEnvironmentSection.cs
- FilteredSchemaElementLookUpTable.cs
- MergePropertyDescriptor.cs
- RangeValidator.cs
- CompositeKey.cs
- QuaternionValueSerializer.cs
- HtmlControl.cs
- PropertyGridCommands.cs
- WebPartMenuStyle.cs
- DispatcherObject.cs
- TextPenaltyModule.cs
- WinEventQueueItem.cs
- Soap12ProtocolImporter.cs
- SerializationSectionGroup.cs
- GPStream.cs
- CompositeKey.cs
- DbDataSourceEnumerator.cs
- BrowserTree.cs
- XsltException.cs
- Site.cs
- CheckBoxRenderer.cs
- SessionStateContainer.cs
- EntityCommandCompilationException.cs
- ControlCachePolicy.cs
- ConnectionConsumerAttribute.cs
- SafeCryptContextHandle.cs
- XPathScanner.cs
- SamlAssertion.cs
- SafeFileMappingHandle.cs
- RegexMatch.cs
- SpecularMaterial.cs
- parserscommon.cs
- OrderedDictionary.cs
- Visual3D.cs
- StorageComplexPropertyMapping.cs
- XmlILModule.cs
- DataGridAutoFormat.cs
- VerificationAttribute.cs
- IgnoreFileBuildProvider.cs
- AudioFormatConverter.cs
- GlobalProxySelection.cs
- SafeLibraryHandle.cs
- TableLayoutPanelCodeDomSerializer.cs
- ContextMarshalException.cs
- ExpressionBuilder.cs
- ImageCodecInfo.cs
- Predicate.cs
- SQLGuid.cs
- DispatchWrapper.cs
- AddingNewEventArgs.cs
- ReturnValue.cs
- SqlBulkCopyColumnMappingCollection.cs
- CompositeFontParser.cs
- GenericTextProperties.cs
- EnumerableValidator.cs
- SqlConnection.cs
- WindowsFormsEditorServiceHelper.cs
- XmlRawWriterWrapper.cs
- HttpHeaderCollection.cs
- TrackingProfileSerializer.cs
- RegexCharClass.cs
- WebPartsPersonalizationAuthorization.cs
- NameValueSectionHandler.cs
- WSHttpSecurity.cs
- WindowInteropHelper.cs
- IndexedString.cs
- RichTextBoxContextMenu.cs
- PropertyToken.cs
- Properties.cs
- NetSectionGroup.cs
- Attributes.cs
- HandlerBase.cs