private void ExecuteRSAMessage(RSAMessage message)
 {
     if (message.RSAAction == RSAAction.Encrypt)
     {
         AreActiveRSAEncryptedData = true;
     }
     SetRSAStatus(message.RSAAction);
 }
Пример #2
0
        public static RSAMessage Sign(PrivateKey privateKey, string message)
        {
            var hash  = GetHash(message);
            var sigma = BigInteger.ModPow(new BigInteger(hash), privateKey.D, privateKey.N);
            var ret   = new RSAMessage(message, sigma);

            return(ret);
        }
Пример #3
0
        public static bool VrfyFile(PublicKey publicKey, StreamReader sr)
        {
            var str = sr.ReadToEnd();

            var split = str.Split("@%@");

            RSAMessage message = new RSAMessage(split[1], BigInteger.Parse(split[0]));

            return(Vrfy(publicKey, message));
        }
Пример #4
0
        public static bool Vrfy(PublicKey publicKey, RSAMessage message)
        {
            var hash = Signer.GetHash(message.Message);

            var hashCheck = BigInteger.ModPow(message.Sigma, publicKey.E, publicKey.N).ToByteArray();

            var hashInt      = new BigInteger(hash);
            var hashCheckInt = new BigInteger(hashCheck);

            return(hashInt.Equals(hashCheckInt));
        }
Пример #5
0
        private void ExecuteMessage(RSAMessage message)
        {
            switch (message.RSAAction)
            {
            case RSAAction.Generate:
                var bothKeyParameters = cryptographicService.GenerateKeyParameters();
                privateAndPublicKeyParameters = bothKeyParameters.PrivateKeyParameters;
                publicKeyParameters           = bothKeyParameters.PublicKeyParameters;
                IsActivePrivateKey            = true;
                IsActivePublicKey             = true;
                SetKeyParametersBase();
                message.RSAAction = RSAAction.None;
                break;

            case RSAAction.OpenPrivateKey:
                privateAndPublicKeyParameters = rsaSerializationService.DeserializeKey(message.Path);
                IsActivePrivateKey            = true;
                SetKeyParametersBase();
                message.RSAAction = RSAAction.None;
                break;

            case RSAAction.OpenPublicKey:
                publicKeyParameters = rsaSerializationService.DeserializeKey(message.Path);
                IsActivePublicKey   = true;
                SetKeyParametersBase();
                message.RSAAction = RSAAction.None;
                break;

            case RSAAction.OpenEncryptedData:
                encryptedData          = rsaSerializationService.Deserialize(message.Path);
                EncryptedText          = Encoding.UTF8.GetString(encryptedData);
                AreActiveEncryptedData = true;
                SetKeyParametersBase();
                message.RSAAction = RSAAction.None;
                break;

            case RSAAction.SavePublicKey:
                rsaSerializationService.SerializeKey(publicKeyParameters, message.Path);
                message.RSAAction = RSAAction.None;
                break;

            case RSAAction.SavePrivateAndPublicKey:
                rsaSerializationService.SerializeKey(privateAndPublicKeyParameters, message.Path);
                message.RSAAction = RSAAction.None;
                break;

            case RSAAction.SaveEncryptedData:
                rsaSerializationService.Serialize(encryptedData, message.Path);
                message.RSAAction = RSAAction.None;
                break;
            }
        }
Пример #6
0
 public HashMessageDto(RSAMessage hash)
 {
     Message = hash.Message;
     Sigma   = hash.Sigma.ToString();
 }