X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2Fcorlib%2FSystem.Security.Cryptography%2FKeySizes.cs;h=6594d2a7661e5a50e67a4732b48ae45f8232f974;hb=00e39cb7f7417ed61f0406ce201accab3274e875;hp=6bdb2b658f3c1e92613708e2c225f548d7483500;hpb=77f0cd8d7383c230517fdda0ed1249c5f372ca1a;p=mono.git diff --git a/mcs/class/corlib/System.Security.Cryptography/KeySizes.cs b/mcs/class/corlib/System.Security.Cryptography/KeySizes.cs index 6bdb2b658f3..6594d2a7661 100644 --- a/mcs/class/corlib/System.Security.Cryptography/KeySizes.cs +++ b/mcs/class/corlib/System.Security.Cryptography/KeySizes.cs @@ -1,61 +1,82 @@ -// -// System.Security.Cryptography KeySizes Class implementation -// -// Author: -// Matthew S. Ford (Matthew.S.Ford@Rose-Hulman.Edu) -// -// Copyright 2001 by Matthew S. Ford. -// - - -namespace System.Security.Cryptography { - - /// - /// This class represents valid ranges of key sizes for ciphers. It is also used to represent block sizes in the same fashion for block ciphers. - /// - public class KeySizes { - private int _maxSize; - private int _minSize; - private int _skipSize; - - /// - /// Creates a new KeySizes object. - /// - /// The minimum size key allowed for this cipher in bits. - /// The maximum size key allowed for this cipher in bits. - /// The jump/skip between the valid key sizes in bits. - public KeySizes (int minSize, int maxSize, int skipSize) { - _maxSize = maxSize; - _minSize = minSize; - _skipSize = skipSize; - } - - /// - /// Returns the maximum valid key size in bits; - /// - public int MaxSize { - get { - return _maxSize; - } - } - - /// - /// Returns the minimum valid key size in bits; - /// - public int MinSize { - get { - return _minSize; - } - } - - /// - /// Returns the skip between valid key sizes in bits; - /// - public int SkipSize { - get { - return _skipSize; - } - } - } -} - +// +// System.Security.Cryptography KeySizes Class implementation +// +// Authors: +// Matthew S. Ford (Matthew.S.Ford@Rose-Hulman.Edu) +// Ben Maurer (bmaurer@users.sf.net) +// Sebastien Pouliot (sebastien@ximian.com) +// +// Copyright 2001 by Matthew S. Ford. +// (C) 2004 Novell (http://www.novell.com) +// + +// +// Copyright (C) 2004 Novell, Inc (http://www.novell.com) +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// + +namespace System.Security.Cryptography { + +#if NET_1_0 + public class KeySizes { +#else + public sealed class KeySizes { +#endif + private int _maxSize; + private int _minSize; + private int _skipSize; + + public KeySizes (int minSize, int maxSize, int skipSize) + { + _maxSize = maxSize; + _minSize = minSize; + _skipSize = skipSize; + } + + public int MaxSize { + get { return _maxSize; } + } + + public int MinSize { + get { return _minSize; } + } + + public int SkipSize { + get { return _skipSize; } + } + + internal bool IsLegal (int keySize) + { + int ks = keySize - MinSize; + bool result = ((ks >= 0) && (keySize <= MaxSize)); + return ((SkipSize == 0) ? result : (result && (ks % SkipSize == 0))); + } + + internal static bool IsLegalKeySize (KeySizes[] legalKeys, int size) + { + foreach (KeySizes legalKeySize in legalKeys) { + if (legalKeySize.IsLegal (size)) + return true; + } + return false; + } + } +}