1 // *** WARNING *** DO NOT INCLUDE IN ANY DEFAULT/RELEASE BUILDS *** WARNING
2 // *** WARNING *** DO NOT INCLUDE IN ANY DEFAULT/RELEASE BUILDS *** WARNING
3 // *** WARNING *** DO NOT INCLUDE IN ANY DEFAULT/RELEASE BUILDS *** WARNING
6 // System.Security.Cryptography.Null.cs
9 // Sebastien Pouliot (sebastien@ximian.com)
11 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
13 // Permission is hereby granted, free of charge, to any person obtaining
14 // a copy of this software and associated documentation files (the
15 // "Software"), to deal in the Software without restriction, including
16 // without limitation the rights to use, copy, modify, merge, publish,
17 // distribute, sublicense, and/or sell copies of the Software, and to
18 // permit persons to whom the Software is furnished to do so, subject to
19 // the following conditions:
21 // The above copyright notice and this permission notice shall be
22 // included in all copies or substantial portions of the Software.
24 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
28 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
29 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
30 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33 // *** WARNING *** DO NOT INCLUDE IN ANY DEFAULT/RELEASE BUILDS *** WARNING
34 // *** WARNING *** DO NOT INCLUDE IN ANY DEFAULT/RELEASE BUILDS *** WARNING
35 // *** WARNING *** DO NOT INCLUDE IN ANY DEFAULT/RELEASE BUILDS *** WARNING
38 using System
.Security
.Cryptography
;
40 namespace Mono
.Security
.Cryptography
{
42 public abstract class Null
: SymmetricAlgorithm
{
44 public static new Null
Create ()
46 return Create ("Mono.Security.Cryptography.Null");
49 public static new Null
Create (string algName
)
51 return (Null
) CryptoConfig
.CreateFromName (algName
);
58 FeedbackSizeValue
= 128;
60 LegalKeySizesValue
= new KeySizes
[1];
61 LegalKeySizesValue
[0] = new KeySizes (0, 1024, 8);
63 LegalBlockSizesValue
= new KeySizes
[1];
64 LegalBlockSizesValue
[0] = new KeySizes (0, 1024, 8);
68 public sealed class NullManaged
: Null
{
74 public override void GenerateIV ()
76 IVValue
= new byte [BlockSizeValue
>> 3];
79 public override void GenerateKey ()
81 KeyValue
= new byte [KeySizeValue
>> 3];
84 public override ICryptoTransform
CreateDecryptor (byte[] rgbKey
, byte[] rgbIV
)
89 return new NullTransform (this, false, rgbKey
, rgbIV
);
92 public override ICryptoTransform
CreateEncryptor (byte[] rgbKey
, byte[] rgbIV
)
97 return new NullTransform (this, true, rgbKey
, rgbIV
);
101 internal class NullTransform
: SymmetricTransform
{
106 public NullTransform (Null algo
, bool encryption
, byte[] key
, byte[] iv
)
107 : base (algo
, encryption
, iv
)
110 _debug
= (Environment
.GetEnvironmentVariable ("MONO_DEBUG") != null);
112 Console
.WriteLine ("Mode: {0}", encryption
? "encryption" : "decryption");
113 Console
.WriteLine ("Key: {0}", BitConverter
.ToString (key
));
114 Console
.WriteLine ("IV: {0}", BitConverter
.ToString (iv
));
124 // note: this method is guaranteed to be called with a valid blocksize
125 // for both input and output
126 protected override void ECB (byte[] input
, byte[] output
)
128 Buffer
.BlockCopy (input
, 0, output
, 0, output
.Length
);
130 Console
.WriteLine ("ECB on block #{0}: {1}", _block
, BitConverter
.ToString (input
));
137 // *** WARNING *** DO NOT INCLUDE IN ANY DEFAULT/RELEASE BUILDS *** WARNING
138 // *** WARNING *** DO NOT INCLUDE IN ANY DEFAULT/RELEASE BUILDS *** WARNING
139 // *** WARNING *** DO NOT INCLUDE IN ANY DEFAULT/RELEASE BUILDS *** WARNING