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
- LayoutDump.cs
- VScrollBar.cs
- LinqDataSource.cs
- EntityDataSourceValidationException.cs
- Nullable.cs
- EndpointBehaviorElement.cs
- Odbc32.cs
- TileBrush.cs
- metadatamappinghashervisitor.cs
- CommonProperties.cs
- TargetControlTypeAttribute.cs
- ExtensionWindow.cs
- TemplatePropertyEntry.cs
- _HelperAsyncResults.cs
- ContourSegment.cs
- Attributes.cs
- ColorContext.cs
- WebReferenceCollection.cs
- ExitEventArgs.cs
- ConfigurationValues.cs
- MiniParameterInfo.cs
- LogPolicy.cs
- Nodes.cs
- ClonableStack.cs
- PriorityRange.cs
- SqlBulkCopyColumnMapping.cs
- DiscoveryClientElement.cs
- WorkItem.cs
- BuildProvider.cs
- SemaphoreSecurity.cs
- InfoCardBaseException.cs
- TemplateXamlParser.cs
- XamlValidatingReader.cs
- KeySplineConverter.cs
- HandlerBase.cs
- Column.cs
- ReadOnlyObservableCollection.cs
- StringTraceRecord.cs
- httpserverutility.cs
- HandleCollector.cs
- QilXmlReader.cs
- BufferModesCollection.cs
- Random.cs
- XmlSchemaIdentityConstraint.cs
- GridViewCellAutomationPeer.cs
- QilValidationVisitor.cs
- XPathBuilder.cs
- DataComponentGenerator.cs
- ListViewSortEventArgs.cs
- DeviceContext2.cs
- ObjectDataSourceMethodEventArgs.cs
- CompilationRelaxations.cs
- PageRanges.cs
- RadialGradientBrush.cs
- XmlCharCheckingWriter.cs
- ContextDataSourceContextData.cs
- AppearanceEditorPart.cs
- TaskFormBase.cs
- Soap.cs
- DataObjectEventArgs.cs
- HtmlEncodedRawTextWriter.cs
- HttpProfileBase.cs
- VariableElement.cs
- SymbolDocumentGenerator.cs
- FastEncoder.cs
- BaseTemplateParser.cs
- WebPartTracker.cs
- Label.cs
- TextPattern.cs
- TextUtf8RawTextWriter.cs
- DataGridViewColumnConverter.cs
- XPathAncestorIterator.cs
- DBCSCodePageEncoding.cs
- ADMembershipUser.cs
- objectquery_tresulttype.cs
- Mapping.cs
- ChtmlLinkAdapter.cs
- FullTrustAssembliesSection.cs
- ColumnResizeAdorner.cs
- TemplateControlBuildProvider.cs
- WinFormsSecurity.cs
- FormClosedEvent.cs
- MappingSource.cs
- BufferAllocator.cs
- ArrangedElementCollection.cs
- XmlSchemaComplexContentRestriction.cs
- RemoteCryptoSignHashRequest.cs
- CompatibleComparer.cs
- AutomationPatternInfo.cs
- ECDiffieHellman.cs
- RepeaterCommandEventArgs.cs
- Clipboard.cs
- MetadataItemEmitter.cs
- ListBoxItem.cs
- BamlTreeNode.cs
- TagNameToTypeMapper.cs
- Queue.cs
- XmlTextAttribute.cs
- MatrixCamera.cs
- GroupItem.cs