2010-05-25 Jb Evain <jbevain@novell.com>
[mcs.git] / class / System.Core / System.Security.Cryptography / AesCryptoServiceProvider.cs
blobadc1463bc8efb2695c68004692521aa48afdbff0
1 //
2 // System.Security.Cryptography.AesCryptoServiceProvider class
3 //
4 // Authors:
5 // Sebastien Pouliot (sebastien@ximian.com)
6 //
7 // Copyright (C) 2008 Novell, Inc (http://www.novell.com)
8 //
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
16 //
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
19 //
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 using System.Security.Permissions;
31 using Mono.Security.Cryptography;
33 namespace System.Security.Cryptography {
35 [HostProtection (SecurityAction.LinkDemand, MayLeakOnAbort=true)]
36 public sealed class AesCryptoServiceProvider : Aes {
38 public AesCryptoServiceProvider ()
42 public override void GenerateIV ()
44 IVValue = KeyBuilder.IV (BlockSizeValue >> 3);
47 public override void GenerateKey ()
49 KeyValue = KeyBuilder.Key (KeySizeValue >> 3);
52 public override ICryptoTransform CreateDecryptor (byte[] rgbKey, byte[] rgbIV)
54 return new AesTransform (this, false, rgbKey, rgbIV);
57 public override ICryptoTransform CreateEncryptor (byte[] rgbKey, byte[] rgbIV)
59 return new AesTransform (this, true, rgbKey, rgbIV);
62 // I suppose some attributes differs ?!? because this does not look required
64 public override byte[] IV {
65 get { return base.IV; }
66 set { base.IV = value; }
69 public override byte[] Key {
70 get { return base.Key; }
71 set { base.Key = value; }
74 public override int KeySize {
75 get { return base.KeySize; }
76 set { base.KeySize = value; }
78 #if false
79 public override int FeedbackSize {
80 get { return base.FeedbackSize; }
81 set { base.FeedbackSize = value; }
84 public override CipherMode Mode {
85 get { return base.CipherMode; }
86 set { base.CipherMode = value; }
89 public override PaddingMode Padding {
90 get { return base.PaddingMode; }
91 set { base.PaddingMode = value; }
93 #endif
94 public override ICryptoTransform CreateDecryptor ()
96 return CreateDecryptor (Key, IV);
99 public override ICryptoTransform CreateEncryptor()
101 return CreateEncryptor (Key, IV);
104 protected override void Dispose (bool disposing)
106 base.Dispose (disposing);