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
- DataGridViewRowConverter.cs
- ReaderContextStackData.cs
- UriSectionData.cs
- HttpValueCollection.cs
- HMACSHA384.cs
- Section.cs
- ValidatingCollection.cs
- XamlFigureLengthSerializer.cs
- RepeatBehavior.cs
- SignatureToken.cs
- RequestResizeEvent.cs
- RbTree.cs
- SByte.cs
- EventTrigger.cs
- SafeBitVector32.cs
- CommandHelper.cs
- WebConfigurationHostFileChange.cs
- Merger.cs
- MarshalDirectiveException.cs
- FontWeights.cs
- ResourceType.cs
- QuaternionConverter.cs
- Tuple.cs
- MessageEncoder.cs
- ObjectDataSourceSelectingEventArgs.cs
- ClientTarget.cs
- BypassElement.cs
- ClientBuildManager.cs
- SrgsDocumentParser.cs
- RequestResizeEvent.cs
- HttpHandlerAction.cs
- BamlResourceSerializer.cs
- DispatcherFrame.cs
- DecoratedNameAttribute.cs
- ContextBase.cs
- AuthenticationSection.cs
- CustomCredentialPolicy.cs
- ArrayElementGridEntry.cs
- SessionState.cs
- HttpSessionStateWrapper.cs
- RoleBoolean.cs
- MessageSmuggler.cs
- XmlCustomFormatter.cs
- ComponentDispatcher.cs
- TogglePatternIdentifiers.cs
- DnsEndPoint.cs
- TokenDescriptor.cs
- BuildResultCache.cs
- WeakHashtable.cs
- ColorAnimation.cs
- SQLStringStorage.cs
- XhtmlBasicLabelAdapter.cs
- XmlILOptimizerVisitor.cs
- EncoderParameter.cs
- exports.cs
- Filter.cs
- Vector3DAnimationBase.cs
- ColumnMap.cs
- BaseValidator.cs
- selecteditemcollection.cs
- ToolBar.cs
- SafeRightsManagementEnvironmentHandle.cs
- WebDisplayNameAttribute.cs
- SchemaMapping.cs
- XmlDesignerDataSourceView.cs
- MessageAction.cs
- XmlLinkedNode.cs
- XmlNodeComparer.cs
- Visual.cs
- AvTrace.cs
- TableProviderWrapper.cs
- StringConcat.cs
- SqlDataSourceWizardForm.cs
- ObjectSet.cs
- ActivityIdHeader.cs
- CodeDirectiveCollection.cs
- DoubleAnimationUsingPath.cs
- HttpHandlersSection.cs
- SqlConnectionHelper.cs
- NamespaceEmitter.cs
- ContainerAction.cs
- EntitySqlQueryState.cs
- ClassicBorderDecorator.cs
- HtmlShimManager.cs
- Point3DAnimationBase.cs
- XPathAncestorQuery.cs
- HuffModule.cs
- Win32NamedPipes.cs
- StackSpiller.Temps.cs
- ManagementDateTime.cs
- ViewLoader.cs
- AddInServer.cs
- ValidateNames.cs
- CompilationUtil.cs
- SupportedAddressingMode.cs
- AppSettingsExpressionBuilder.cs
- DataGridColumnFloatingHeader.cs
- PolyLineSegment.cs
- ActivityDesignerResources.cs
- FlowDocumentPaginator.cs