Factor mono_get_exception_missing_field and mono_get_exception_missin… (#9282)
[mono-project.git] / mcs / class / Mono.Security / Mono.Security.Cryptography / Null.cs
blob40a215cfa8adfad9911776a93e5e4bda57ec26b0
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
5 //
6 // System.Security.Cryptography.Null.cs
7 //
8 // Author:
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:
20 //
21 // The above copyright notice and this permission notice shall be
22 // included in all copies or substantial portions of the Software.
23 //
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
37 using System;
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);
54 public Null ()
56 KeySizeValue = 128;
57 BlockSizeValue = 128;
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 {
70 public NullManaged ()
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)
86 Key = rgbKey;
87 IV = rgbIV;
89 return new NullTransform (this, false, rgbKey, rgbIV);
92 public override ICryptoTransform CreateEncryptor (byte[] rgbKey, byte[] rgbIV)
94 Key = rgbKey;
95 IV = rgbIV;
97 return new NullTransform (this, true, rgbKey, rgbIV);
101 internal class NullTransform : SymmetricTransform {
103 private int _block;
104 private bool _debug;
106 public NullTransform (Null algo, bool encryption, byte[] key, byte[] iv)
107 : base (algo, encryption, iv)
109 _block = 0;
110 _debug = (Environment.GetEnvironmentVariable ("MONO_DEBUG") != null);
111 if (_debug) {
112 Console.WriteLine ("Mode: {0}", encryption ? "encryption" : "decryption");
113 Console.WriteLine ("Key: {0}", BitConverter.ToString (key));
114 Console.WriteLine ("IV: {0}", BitConverter.ToString (iv));
118 public void Clear ()
120 _block = 0;
121 Dispose (true);
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);
129 if (_debug) {
130 Console.WriteLine ("ECB on block #{0}: {1}", _block, BitConverter.ToString (input));
132 _block++;
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