RijndaelManaged.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / System / Security / Cryptography / RijndaelManaged.cs / 1 / RijndaelManaged.cs

                            // ==++== 
//
//   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 (Utils.FipsAlgorithmPolicy == 1) 
                throw new InvalidOperationException(Environment.GetResourceString("Cryptography_NonCompliantFIPSAlgorithm")); 
        }
 
        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 = new byte[KeySizeValue/8];
            Utils.StaticRandomNumberGenerator.GetBytes(KeyValue);
        }
 
        public override void GenerateIV () {
            IVValue = new byte[BlockSizeValue/8]; 
            Utils.StaticRandomNumberGenerator.GetBytes(IVValue); 
        }
 
        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 = new byte[KeySizeValue/8];
                Utils.StaticRandomNumberGenerator.GetBytes(rgbKey); 
            }

            // If not ECB mode, make sure we have an IV
            if (mode != CipherMode.ECB) { 
                if (rgbIV == null) {
                    rgbIV = new byte[BlockSizeValue/8]; 
                    Utils.StaticRandomNumberGenerator.GetBytes(rgbIV); 
                }
            } 

            // Create the encryptor/decryptor object
            return new RijndaelManagedTransform (rgbKey,
                                                 mode, 
                                                 rgbIV,
                                                 BlockSizeValue, 
                                                 feedbackSize, 
                                                 PaddingValue,
                                                 encryptMode); 
        }
    }
}


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK