Browse Source

commit: clean codes

Local 5 years ago
parent
commit
cabd05e9d1
1 changed files with 15 additions and 10 deletions
  1. 15 10
      UdPunching.Common/TransferCodec.cs

+ 15 - 10
UdPunching.Common/TransferCodec.cs

@@ -12,14 +12,19 @@ namespace UdPunching
         //Transfer format
         // [0...............15] GUID Sender peer id
         // [ gz if compressable
-        //  [15....15+ChunkSize] data encrypt by receiverPublicKey
-        //  [16+ChunkSize...END] signature of [encrypted data] of senderPrivateKey
+        //  [15....15+BlockSize] data encrypt by receiverPublicKey
+        //  [16+BlockSize...END] signature of [encrypted data] of senderPrivateKey
         // ]
 
         private const int RsaKeySize = 4096;
         private const int BlockSize = RsaKeySize / 8;
 
-        private static readonly MD5CryptoServiceProvider Md5 = new MD5CryptoServiceProvider();
+        private static readonly RSAEncryptionPadding EncryptionPadding = RSAEncryptionPadding.OaepSHA512;
+
+        private static readonly SHA512Cng SignatureHasher = new SHA512Cng();
+        private static readonly HashAlgorithmName SignatureHashAlgorithm = HashAlgorithmName.SHA512;
+        private static readonly RSASignaturePadding SignaturePadding = RSASignaturePadding.Pkcs1;
+
 
         public static RSACng LoadKey(string path)
         {
@@ -40,12 +45,12 @@ namespace UdPunching
             byte[] pass1;
             byte[] signature;
             {
-                pass1 = receiverPublicKey.Encrypt(data, RSAEncryptionPadding.OaepSHA512);// encode
-                var hash = Md5.ComputeHash(pass1);
+                pass1 = receiverPublicKey.Encrypt(data, EncryptionPadding);// encode
+                var hash = SignatureHasher.ComputeHash(pass1);
                 using (RSA rsaCng = new RSACng())
                 {
                     rsaCng.ImportParameters(senderPrivateKey.ExportParameters(true));
-                    signature = rsaCng.SignHash(hash, HashAlgorithmName.MD5, RSASignaturePadding.Pkcs1); // signature
+                    signature = rsaCng.SignHash(hash, SignatureHashAlgorithm, SignaturePadding); // signature
                 }
             }
 
@@ -68,19 +73,19 @@ namespace UdPunching
             var pass2 = Decompress(data, 16); // skip sender id
 
             pass2.ReadBytes(BlockSize, out var enc);
-            pass2.ReadBytes(BlockSize, out var sig, BlockSize);
+            pass2.ReadBytes(BlockSize, out var signature, BlockSize);
 
             using (RSA rsaCng = new RSACng())
             {
                 rsaCng.ImportParameters(senderPublicKey.ExportParameters(false));
-                var hash = Md5.ComputeHash(enc);
-                if (false == rsaCng.VerifyHash(hash, sig, HashAlgorithmName.MD5, RSASignaturePadding.Pkcs1))
+                var hash = SignatureHasher.ComputeHash(enc);
+                if (false == rsaCng.VerifyHash(hash, signature, SignatureHashAlgorithm, SignaturePadding))
                 {
                     throw new InvalidDataException("Signature verify fail");
                 }
             }
 
-            var decodeData = receiverPrivateKey.Decrypt(enc, RSAEncryptionPadding.OaepSHA512); //decode
+            var decodeData = receiverPrivateKey.Decrypt(enc, EncryptionPadding); //decode
             return decodeData;
         }