RC2.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / System / Security / Cryptography / RC2.cs / 1 / RC2.cs

                            // ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 

// 
// RC2.cs 
//
 
namespace System.Security.Cryptography {
[System.Runtime.InteropServices.ComVisible(true)]
    public abstract class RC2 : SymmetricAlgorithm
    { 
        protected int               EffectiveKeySizeValue;
        private static  KeySizes[] s_legalBlockSizes = { 
          new KeySizes(64, 64, 0) 
        };
        private static  KeySizes[] s_legalKeySizes = { 
            new KeySizes(40, 1024, 8)  // 1024 bits is theoretical max according to the RFC
        };

        // 
        // protected constructors
        // 
 
        protected RC2() {
            KeySizeValue = 128; 
            BlockSizeValue = 64;
            FeedbackSizeValue = BlockSizeValue;
            LegalBlockSizesValue = s_legalBlockSizes;
            LegalKeySizesValue = s_legalKeySizes; 
        }
 
        // 
        // public properties
        // 

        public virtual int EffectiveKeySize {
            get {
                if (EffectiveKeySizeValue == 0) return KeySizeValue; 
                return EffectiveKeySizeValue;
            } 
            set { 
                if (value > KeySizeValue) {
                    throw new CryptographicException(Environment.GetResourceString("Cryptography_RC2_EKSKS")); 
                } else if (value == 0) {
                    EffectiveKeySizeValue = value;
                } else if (value < 40) {
                    throw new CryptographicException(Environment.GetResourceString("Cryptography_RC2_EKS40")); 
                } else {
                    if (ValidKeySize(value)) 
                        EffectiveKeySizeValue = value; 
                    else
                        throw new CryptographicException(Environment.GetResourceString("Cryptography_InvalidKeySize")); 
                }
            }
        }
 
        public override int KeySize {
            get { return KeySizeValue; } 
            set { 
                if (value < EffectiveKeySizeValue) throw new CryptographicException(Environment.GetResourceString("Cryptography_RC2_EKSKS"));
                base.KeySize = value; 
            }
        }

        // 
        // public methods
        // 
 
        new static public RC2 Create() {
            return Create("System.Security.Cryptography.RC2"); 
        }

        new static public RC2 Create(String AlgName) {
            return (RC2) CryptoConfig.CreateFromName(AlgName); 
        }
    } 
}
                        

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