(DISTFILES): Comment out a few missing files.
[mono-project.git] / mcs / class / Mono.Security.Win32 / Mono.Security.Cryptography / MD5CryptoServiceProvider.cs
blob66b7dce4671f47915274b0abb627f16c518bb06e
1 //
2 // Mono.Security.Cryptography.MD5CryptoServiceProvider
3 //
4 // Authors:
5 // Sebastien Pouliot (spouliot@motus.com)
6 //
7 // Copyright (C) 2003 Motus Technologies Inc. (http://www.motus.com)
8 //
10 using System;
11 using System.Security.Cryptography;
13 namespace Mono.Security.Cryptography {
15 public class MD5CryptoServiceProvider : MD5 {
17 private CapiHash hash;
19 public MD5CryptoServiceProvider ()
21 hash = null;
24 ~MD5CryptoServiceProvider ()
26 Dispose (true);
29 // 2 cases:
30 // a. we were calculing a hash and want to abort
31 // b. we haven't started yet
32 public override void Initialize ()
34 State = 0;
35 if (hash == null) {
36 hash = new CapiHash (CryptoAPI.CALG_MD5);
40 protected override void Dispose (bool disposing)
42 if (hash != null) {
43 hash.Dispose ();
44 hash = null;
45 // there's no unmanaged resources (so disposing isn't used)
49 protected override void HashCore (byte[] rgb, int ibStart, int cbSize)
51 if (State == 0)
52 Initialize ();
53 if (hash == null)
54 throw new ObjectDisposedException ("MD5CryptoServiceProvider");
55 State = 1;
56 hash.HashCore (rgb, ibStart, cbSize);
59 protected override byte[] HashFinal ()
61 if (hash == null)
62 throw new ObjectDisposedException ("MD5CryptoServiceProvider");
63 State = 0;
64 byte[] result = hash.HashFinal ();
65 Dispose (false);
66 return result;