Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mcs/class/Mono.Security/Mono.Security.Protocol.Tls/TlsSslHandshakeHash.cs')
-rwxr-xr-xmcs/class/Mono.Security/Mono.Security.Protocol.Tls/TlsSslHandshakeHash.cs314
1 files changed, 157 insertions, 157 deletions
diff --git a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/TlsSslHandshakeHash.cs b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/TlsSslHandshakeHash.cs
index e296e477472..77048c660f6 100755
--- a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/TlsSslHandshakeHash.cs
+++ b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/TlsSslHandshakeHash.cs
@@ -1,157 +1,157 @@
-/* Transport Security Layer (TLS)
- * Copyright (c) 2003 Carlos Guzmán Álvarez
- *
- * 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.
- */
-
-using System;
-using System.Security.Cryptography;
-
-namespace Mono.Security.Protocol.Tls
-{
- internal class TlsSslHandshakeHash : System.Security.Cryptography.HashAlgorithm
- {
- #region FIELDS
-
- private HashAlgorithm md5;
- private HashAlgorithm sha;
- private bool hashing;
- private byte[] secret;
- private byte[] innerPadMD5;
- private byte[] outerPadMD5;
- private byte[] innerPadSHA;
- private byte[] outerPadSHA;
-
- #endregion
-
- #region CONSTRUCTORS
-
- public TlsSslHandshakeHash(byte[] secret)
- {
- // Create md5 and sha1 hashes
- this.md5 = HashAlgorithm.Create("MD5");
- this.sha = HashAlgorithm.Create("SHA1");
-
- // Set HashSizeValue
- this.HashSizeValue = md5.HashSize + sha.HashSize;
-
- // Update secret
- this.secret = secret;
-
- this.Initialize();
- }
-
- #endregion
-
- #region METHODS
-
- public override void Initialize()
- {
- md5.Initialize();
- sha.Initialize();
- initializePad();
- hashing = false;
- }
-
- protected override byte[] HashFinal()
- {
- if (!hashing)
- {
- hashing = true;
- }
-
- // Finalize the md5 hash
- md5.TransformBlock(this.secret, 0, this.secret.Length, this.secret, 0);
- md5.TransformFinalBlock(this.innerPadMD5, 0, this.innerPadMD5.Length);
-
- byte[] firstResultMD5 = md5.Hash;
-
- md5.Initialize();
- md5.TransformBlock(this.secret, 0, this.secret.Length, this.secret, 0);
- md5.TransformBlock(this.outerPadMD5, 0, this.outerPadMD5.Length, this.outerPadMD5, 0);
- md5.TransformFinalBlock(firstResultMD5, 0, firstResultMD5.Length);
-
- // Finalize the sha1 hash
- sha.TransformBlock(this.secret, 0, this.secret.Length, this.secret, 0);
- sha.TransformFinalBlock(this.innerPadSHA, 0, this.innerPadSHA.Length);
-
- byte[] firstResultSHA = sha.Hash;
-
- sha.Initialize();
- sha.TransformBlock(this.secret, 0, this.secret.Length, this.secret, 0);
- sha.TransformBlock(this.outerPadSHA, 0, this.outerPadSHA.Length, this.outerPadSHA, 0);
- sha.TransformFinalBlock(firstResultSHA, 0, firstResultSHA.Length);
-
- this.Initialize();
-
- byte[] result = new byte[36];
-
- System.Array.Copy(md5.Hash, 0, result, 0, 16);
- System.Array.Copy(sha.Hash, 0, result, 16, 20);
-
- return result;
- }
-
- protected override void HashCore(
- byte[] array,
- int ibStart,
- int cbSize)
- {
- if (!hashing)
- {
- hashing = true;
- }
- md5.TransformBlock(array, ibStart, cbSize, array, ibStart);
- sha.TransformBlock(array, ibStart, cbSize, array, ibStart);
- }
-
- #endregion
-
- #region PRIVATE_METHODS
-
- private void initializePad()
- {
- // Fill md5 arrays
- this.innerPadMD5 = new byte[48];
- this.outerPadMD5 = new byte[48];
-
- /* Pad the key for inner and outer digest */
- for (int i = 0; i < 48; ++i)
- {
- this.innerPadMD5[i] = 0x36;
- this.outerPadMD5[i] = 0x5C;
- }
-
- // Fill sha arrays
- this.innerPadSHA = new byte[40];
- this.outerPadSHA = new byte[40];
-
- /* Pad the key for inner and outer digest */
- for (int i = 0; i < 40; ++i)
- {
- this.innerPadSHA[i] = 0x36;
- this.outerPadSHA[i] = 0x5C;
- }
- }
-
- #endregion
- }
-}
+/* Transport Security Layer (TLS)
+ * Copyright (c) 2003 Carlos Guzmán Álvarez
+ *
+ * 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.
+ */
+
+using System;
+using System.Security.Cryptography;
+
+namespace Mono.Security.Protocol.Tls
+{
+ internal class TlsSslHandshakeHash : System.Security.Cryptography.HashAlgorithm
+ {
+ #region FIELDS
+
+ private HashAlgorithm md5;
+ private HashAlgorithm sha;
+ private bool hashing;
+ private byte[] secret;
+ private byte[] innerPadMD5;
+ private byte[] outerPadMD5;
+ private byte[] innerPadSHA;
+ private byte[] outerPadSHA;
+
+ #endregion
+
+ #region CONSTRUCTORS
+
+ public TlsSslHandshakeHash(byte[] secret)
+ {
+ // Create md5 and sha1 hashes
+ this.md5 = HashAlgorithm.Create("MD5");
+ this.sha = HashAlgorithm.Create("SHA1");
+
+ // Set HashSizeValue
+ this.HashSizeValue = md5.HashSize + sha.HashSize;
+
+ // Update secret
+ this.secret = secret;
+
+ this.Initialize();
+ }
+
+ #endregion
+
+ #region METHODS
+
+ public override void Initialize()
+ {
+ md5.Initialize();
+ sha.Initialize();
+ initializePad();
+ hashing = false;
+ }
+
+ protected override byte[] HashFinal()
+ {
+ if (!hashing)
+ {
+ hashing = true;
+ }
+
+ // Finalize the md5 hash
+ md5.TransformBlock(this.secret, 0, this.secret.Length, this.secret, 0);
+ md5.TransformFinalBlock(this.innerPadMD5, 0, this.innerPadMD5.Length);
+
+ byte[] firstResultMD5 = md5.Hash;
+
+ md5.Initialize();
+ md5.TransformBlock(this.secret, 0, this.secret.Length, this.secret, 0);
+ md5.TransformBlock(this.outerPadMD5, 0, this.outerPadMD5.Length, this.outerPadMD5, 0);
+ md5.TransformFinalBlock(firstResultMD5, 0, firstResultMD5.Length);
+
+ // Finalize the sha1 hash
+ sha.TransformBlock(this.secret, 0, this.secret.Length, this.secret, 0);
+ sha.TransformFinalBlock(this.innerPadSHA, 0, this.innerPadSHA.Length);
+
+ byte[] firstResultSHA = sha.Hash;
+
+ sha.Initialize();
+ sha.TransformBlock(this.secret, 0, this.secret.Length, this.secret, 0);
+ sha.TransformBlock(this.outerPadSHA, 0, this.outerPadSHA.Length, this.outerPadSHA, 0);
+ sha.TransformFinalBlock(firstResultSHA, 0, firstResultSHA.Length);
+
+ this.Initialize();
+
+ byte[] result = new byte[36];
+
+ System.Array.Copy(md5.Hash, 0, result, 0, 16);
+ System.Array.Copy(sha.Hash, 0, result, 16, 20);
+
+ return result;
+ }
+
+ protected override void HashCore(
+ byte[] array,
+ int ibStart,
+ int cbSize)
+ {
+ if (!hashing)
+ {
+ hashing = true;
+ }
+ md5.TransformBlock(array, ibStart, cbSize, array, ibStart);
+ sha.TransformBlock(array, ibStart, cbSize, array, ibStart);
+ }
+
+ #endregion
+
+ #region PRIVATE_METHODS
+
+ private void initializePad()
+ {
+ // Fill md5 arrays
+ this.innerPadMD5 = new byte[48];
+ this.outerPadMD5 = new byte[48];
+
+ /* Pad the key for inner and outer digest */
+ for (int i = 0; i < 48; ++i)
+ {
+ this.innerPadMD5[i] = 0x36;
+ this.outerPadMD5[i] = 0x5C;
+ }
+
+ // Fill sha arrays
+ this.innerPadSHA = new byte[40];
+ this.outerPadSHA = new byte[40];
+
+ /* Pad the key for inner and outer digest */
+ for (int i = 0; i < 40; ++i)
+ {
+ this.innerPadSHA[i] = 0x36;
+ this.outerPadSHA[i] = 0x5C;
+ }
+ }
+
+ #endregion
+ }
+}