public void GivenRandomData_WhenEncryptingData_ThenSessionKeyIsReturned()
        {
            var currentUser = WindowsIdentity.GetCurrent()
                              .Name;

            var target = new RSAEncryption("target", currentUser);

            new RSAEncryption("signatureContainer", currentUser);
            var targetPublicKey = target.ExportKey(false);

            HybridEncryption hybridEncryption = HybridEncryption.CreateEncryption(targetPublicKey, "signatureContainer");

            RandomNumberGenerator random = new RNGCryptoServiceProvider();

            var data       = new byte[512];
            var sessionKey = new byte[32];
            var iv         = new byte[16];

            random.GetBytes(sessionKey);
            random.GetBytes(iv);
            random.GetBytes(data);

            var encryptedResult = hybridEncryption.EncryptData(sessionKey, data, iv);

            Assert.That(encryptedResult.key.SessionKey, Is.Not.Empty);
        }
Exemplo n.º 2
0
        public void RSAEncryptionTestInitialize()
        {
            var keys = RSAEncryption.GenerateKeys();

            publicKey  = keys[0];
            privateKey = keys[1];
        }
Exemplo n.º 3
0
        public IActionResult RequestStoreKeys(InfoClients infoClients)
        {
            //Write Event
            var jsonObj = JsonConvert.SerializeObject(infoClients);

            FileWriter.WriteOnEvents(EventLevel.Info,
                                     "Request en RequestStoreKeys ObjKeyService recibido " + string.Join(", ", jsonObj));
            //Store partner's public key
            FileWriter.WriteOnFile(parameters.Value.FilesOutput,
                                   parameters.Value.PubKeyFile + infoClients.userNameOrigin + infoClients.userNameDestination, infoClients.keyEncrypt);
            FileWriter.WriteOnEvents(EventLevel.Info,
                                     "Llave publica de " + infoClients.userNameOrigin + infoClients.userNameDestination + " almacenada.");
            //Delete and generate the own RSA Keys
            infoClients.keyEncrypt = "";
            RSAEncryption rsaEncryption = new RSAEncryption();
            string        filePublicKey = parameters.Value.FilesOutput + parameters.Value.PubKeyFile + infoClients.userNameOrigin + infoClients.userNameDestination;

            infoClients.keyEncrypt = rsaEncryption.GeneratePubPrivKeys(infoClients.userNameOrigin + infoClients.userNameDestination, filePublicKey);
            //Inverting usernames origin-destination
            string auxUserName = infoClients.userNameOrigin;

            infoClients.userNameOrigin      = infoClients.userNameDestination;
            infoClients.userNameDestination = auxUserName;
            if (infoClients.keyEncrypt != "")
            {
                FileWriter.WriteOnEvents(EventLevel.Info, "Devolviendo llaves generadas.");
                return(Ok(infoClients));
            }
            else
            {
                FileWriter.WriteOnEvents(EventLevel.Error, "Error generando llaves.");
                return(BadRequest(infoClients));
            }
        }
Exemplo n.º 4
0
        public IActionResult ReceiveMessage(SendMessageModel messageModel)
        {
            string        filePublicKey = parameters.Value.FilesOutput + parameters.Value.PubKeyFile + messageModel.userNameDestination + messageModel.userNameOrigin;
            RSAEncryption rsaEncryption = new RSAEncryption();
            AESEncryption aesEncryption = new AESEncryption();
            RSASigning    rsaSigning    = new RSASigning();

            //Decrypt symmetric key
            ResponseRSADecryption rsaDecryptResponse = new ResponseRSADecryption();

            rsaDecryptResponse = rsaEncryption.DecryptAESKey(messageModel.encryptedKey, messageModel.userNameDestination + messageModel.userNameOrigin);
            if (!rsaDecryptResponse.result)
            {
                FileWriter.WriteOnEvents(EventLevel.Error, "Error descifrando llave AES con RSA.");
                return(BadRequest(new { result = false }));
            }
            //Decrypt Message
            ResponseAESDecryption responseAESDecryption = new ResponseAESDecryption();

            responseAESDecryption = aesEncryption.DecryptMessage(messageModel, rsaDecryptResponse.decryptedKey);
            if (!responseAESDecryption.result)
            {
                FileWriter.WriteOnEvents(EventLevel.Error, "Error descifrando mensaje con AES.");
                return(BadRequest(new { result = false }));
            }
            //Validate Sign
            if (!rsaSigning.validateSignAndHash(responseAESDecryption.decryptedMessage, messageModel.encryptSignature, filePublicKey))
            {
                FileWriter.WriteOnEvents(EventLevel.Atention, "La información recibida es corrupta.");
                return(BadRequest(new { result = false }));
            }
            //Muestra mensaje
            return(Ok(new{ mensaje = responseAESDecryption.decryptedMessage }));
        }
Exemplo n.º 5
0
        /// <summary>
        /// 上传用户签名/印章图片
        /// </summary>
        /// <param name="account">用户唯一标识</param>
        /// <param name="imageData">图片文件内容</param>
        /// <param name="imageName">签名/印章图片名称</param>
        /// <returns></returns>
        public BaseResult <CommonResult> UserUpload(string account, string imageData, string imageName = "")
        {
            Dictionary <string, object> requestParams = new Dictionary <string, object>();

            requestParams.Add("account", account);
            requestParams.Add("imageData", imageData);
            if (string.IsNullOrWhiteSpace(imageName))
            {
                requestParams.Add("imageName", imageName);
            }


            SortedDictionary <string, object> keyValues = new SortedDictionary <string, object>();

            keyValues.Add("developerId", Constants.DeveloperID);
            keyValues.Add("rtick", SignUtils.ToUnixEpochDate(DateTime.Now).ToString() + SignUtils.ToRandom(1000, 9999));
            keyValues.Add("signType", Constants.SignType);

            var signResult       = SignUtils.GenerateSign(Constants.Path + Constants.SignatureImage_User_Upload, SignUtils.GenerateMD5(requestParams), keyValues);
            var signEncryResult  = RSAEncryption.SignData(signResult, Constants.PrivateKey);
            var signEncodeResult = SignUtils.SignUrlEncode(signEncryResult);

            keyValues.Add("sign", signEncodeResult);
            var originalUrl = Constants.Host + Constants.Path + Constants.SignatureImage_User_Upload;
            var requestUrl  = SignUtils.GenerateUrl(originalUrl, keyValues);

            BaseResult <CommonResult> result = httpService.HttpPost <BaseResult <CommonResult> >(requestUrl, requestParams);

            return(result);
        }
Exemplo n.º 6
0
        public void GivenEncryptionKeyBlob_WhenImportingKey_ThenImportsSessionKeyCorrectly()
        {
            var currentUser = WindowsIdentity.GetCurrent()
                              .Name;

            var target = new RSAEncryption("target", currentUser);

            new RSAEncryption("signatureContainer", currentUser);
            var targetPublicKey = target.ExportKey(false);

            HybridEncryption hybridEncryption = HybridEncryption.CreateEncryption(targetPublicKey, "signatureContainer");

            RandomNumberGenerator random = new RNGCryptoServiceProvider();

            var data       = File.ReadAllBytes("appsettings.json");
            var sessionKey = new byte[32];
            var iv         = new byte[16];

            random.GetBytes(sessionKey);
            random.GetBytes(iv);

            (EncryptionSettings key, byte[] encryptedData)encryptedResult = hybridEncryption.EncryptData(sessionKey, data, iv);

            var key = encryptedResult.key;

            var keyBlob = key.ExportToBlob();

            var keyFromBlob = EncryptionSettings.FromBlob(keyBlob);

            Assert.That(keyFromBlob.SessionKey, Is.EqualTo(key.SessionKey));
        }
Exemplo n.º 7
0
        public IActionResult CreateMessage(CreateMessageModel model)
        {
            if (ModelState.IsValid)
            {
                var email = new Message
                {
                    EmailSender   = User.Identity.Name,
                    EmailReceiver = model.EmailReceiver,
                    Text          = model.Text,
                    AttachedFile  = model.File
                };

                var rsaEncryption    = new RSAEncryption(email.EmailReceiver);
                var digitalSignature = new DigitalSignature(email.EmailSender);

                var encryptedMessage = _messageEncryptionService.EncryptData(email, rsaEncryption, digitalSignature);

                if (email.AttachedFile != null)
                {
                    _fileEncryptionService.EncryptFile(email.AttachedFile, encryptedMessage, rsaEncryption, digitalSignature);
                }

                return(RedirectToAction(nameof(MessageSentSuccessfully)));
            }

            return(View());
        }
        public RSAEncryption GetPrivateKey()
        {
            if (!GenerateInBackground)
            {
                return(GenerateRsaKey());
            }

            if (PrivateKeys.Count == 0)
            {
                if (GenThread == null)
                {
                    GenThread = new Thread(new ThreadStart(GenerateThread));
                    GenThread.Start();
                }
                return(GenerateRsaKey());
            }
            else
            {
                lock (PrivateKeys)
                {
                    //get a random key
                    int           index = rnd.Next(0, PrivateKeys.Count - 1);
                    RSAEncryption RSA   = PrivateKeys[index];
                    PrivateKeys.RemoveAt(index);

                    if (PrivateKeys.Count < Min_Private_Keys && GenThread == null)
                    {
                        GenThread = new Thread(new ThreadStart(GenerateThread));
                        GenThread.Start();
                    }
                    return(RSA);
                }
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// 异步申请状态查询
        /// </summary>
        /// <param name="account">用户唯一标识</param>
        /// <param name="taskId">任务单号</param>
        /// <returns></returns>
        public BaseResult <AsyncApplyCertStatusResult> AsyncApplyCertStatus(string account, string taskId)
        {
            Dictionary <string, object> requestParams = new Dictionary <string, object>();

            requestParams.Add("account", account);
            requestParams.Add("taskId", taskId);

            SortedDictionary <string, object> keyValues = new SortedDictionary <string, object>();

            keyValues.Add("developerId", Constants.DeveloperID);
            keyValues.Add("rtick", SignUtils.ToUnixEpochDate(DateTime.Now).ToString() + SignUtils.ToRandom(1000, 9999));
            keyValues.Add("signType", Constants.SignType);


            var signResult       = SignUtils.GenerateSign(Constants.Path + Constants.User_Async_ApplyCert_Status, SignUtils.GenerateMD5(requestParams), keyValues);
            var signEncryResult  = RSAEncryption.SignData(signResult, Constants.PrivateKey);
            var signEncodeResult = SignUtils.SignUrlEncode(signEncryResult);

            keyValues.Add("sign", signEncodeResult);
            var originalUrl = Constants.Host + Constants.Path + Constants.User_Async_ApplyCert_Status;
            var requestUrl  = SignUtils.GenerateUrl(originalUrl, keyValues);

            BaseResult <AsyncApplyCertStatusResult> result = httpService.HttpPost <BaseResult <AsyncApplyCertStatusResult> >(requestUrl, requestParams);

            return(result);
        }
Exemplo n.º 10
0
        public void GivenUsername_WhenCreatingContainer_ThenSetsAccessControlToReadOnlyForUser()
        {
            var containerName = $"{Guid.NewGuid()}";

            var rsaEncryption = new RSAEncryption(containerName, User);

            var rsaCryptoServiceProvider = new RSACryptoServiceProvider(new CspParameters()
            {
                KeyContainerName = containerName
            });

            rsaEncryption.ExportKey(false);

            var path = Path.Combine(WellKnownPaths.RSA_MACHINEKEYS, rsaCryptoServiceProvider.CspKeyContainerInfo.UniqueKeyContainerName);

            FileSecurity fSecurity = new FileSecurity(path, AccessControlSections.Access);

            var accessRule = fSecurity.GetAccessRules(true, true, typeof(NTAccount))
                             .Cast <FileSystemAccessRule>()
                             .SingleOrDefault();

            var rights = accessRule.FileSystemRights
                         .ToString()
                         .Split(',')
                         .Select(x => (FileSystemRights)Enum.Parse(typeof(FileSystemRights), x, true));

            Assert.NotNull(rights);
            Assert.That(rights.Count(), Is.EqualTo(1));
            Assert.That(rights.Any(systemRights => systemRights == FileSystemRights.FullControl));
        }
Exemplo n.º 11
0
        /// <summary>
        /// 获取合同签署参数
        /// </summary>
        /// <param name="contractId">合同编号</param>
        /// <param name="account">签署者</param>
        /// <returns></returns>
        public BaseResult <GetSignerConfigResult> GetSignerConfig(string contractId, string account)
        {
            Dictionary <string, object> requestParams = new Dictionary <string, object>();

            requestParams.Add("contractId", contractId);
            requestParams.Add("account", account);

            SortedDictionary <string, object> keyValues = new SortedDictionary <string, object>();

            keyValues.Add("developerId", Constants.DeveloperID);
            keyValues.Add("rtick", SignUtils.ToUnixEpochDate(DateTime.Now).ToString() + SignUtils.ToRandom(1000, 9999));
            keyValues.Add("signType", Constants.SignType);

            var signResult       = SignUtils.GenerateSign(Constants.Path + Constants.Contract_GetSignerConfig, SignUtils.GenerateMD5(requestParams), keyValues);
            var signEncryResult  = RSAEncryption.SignData(signResult, Constants.PrivateKey);
            var signEncodeResult = SignUtils.SignUrlEncode(signEncryResult);

            keyValues.Add("sign", signEncodeResult);
            var originalUrl = Constants.Host + Constants.Path + Constants.Contract_GetSignerConfig;
            var requestUrl  = SignUtils.GenerateUrl(originalUrl, keyValues);

            BaseResult <GetSignerConfigResult> result = httpService.HttpPost <BaseResult <GetSignerConfigResult> >(requestUrl, requestParams);

            return(result);
        }
Exemplo n.º 12
0
        /// <summary>
        /// PDF文件验签
        /// </summary>
        /// <param name="pdfData">PDF文件</param>
        /// <returns></returns>
        public BaseResult <PDFVerifySignaturesResult> VerifySignatures(string pdfData)
        {
            Dictionary <string, object> requestParams = new Dictionary <string, object>();

            requestParams.Add("pdfData", pdfData);


            SortedDictionary <string, object> keyValues = new SortedDictionary <string, object>();

            keyValues.Add("developerId", Constants.DeveloperID);
            keyValues.Add("rtick", SignUtils.ToUnixEpochDate(DateTime.Now).ToString() + SignUtils.ToRandom(1000, 9999));
            keyValues.Add("signType", Constants.SignType);

            var signResult       = SignUtils.GenerateSign(Constants.Path + Constants.Pdf_VerifySignatures, "", keyValues);
            var signEncryResult  = RSAEncryption.SignData(signResult, Constants.PrivateKey);
            var signEncodeResult = SignUtils.SignUrlEncode(signEncryResult);

            keyValues.Add("sign", signEncodeResult);
            var originalUrl = Constants.Host + Constants.Path + Constants.Pdf_VerifySignatures;
            var requestUrl  = SignUtils.GenerateUrl(originalUrl, keyValues);

            BaseResult <PDFVerifySignaturesResult> result = httpService.HttpPost <BaseResult <PDFVerifySignaturesResult> >(requestUrl, requestParams);

            return(result);
        }
Exemplo n.º 13
0
        /// <summary>
        /// 获取预览页URL
        /// </summary>
        /// <param name="contractId"></param>
        /// <returns></returns>
        public BaseResult <GetPreviewURLResult> GetPreviewURL(string contractId, string expireTime, string dpi = "", string account = "")
        {
            Dictionary <string, object> requestParams = new Dictionary <string, object>();

            requestParams.Add("contractId", contractId);
            requestParams.Add("expireTime", expireTime);
            if (string.IsNullOrWhiteSpace(dpi))
            {
                requestParams.Add("dpi", dpi);
            }
            if (string.IsNullOrWhiteSpace(account))
            {
                requestParams.Add("account", account);
            }

            SortedDictionary <string, object> keyValues = new SortedDictionary <string, object>();

            keyValues.Add("developerId", Constants.DeveloperID);
            keyValues.Add("rtick", SignUtils.ToUnixEpochDate(DateTime.Now).ToString() + SignUtils.ToRandom(1000, 9999));
            keyValues.Add("signType", Constants.SignType);

            var signResult       = SignUtils.GenerateSign(Constants.Path + Constants.Contract_GetPreviewURL, "", keyValues);
            var signEncryResult  = RSAEncryption.SignData(signResult, Constants.PrivateKey);
            var signEncodeResult = SignUtils.SignUrlEncode(signEncryResult);

            keyValues.Add("sign", signEncodeResult);
            var originalUrl = Constants.Host + Constants.Path + Constants.Contract_GetPreviewURL;
            var requestUrl  = SignUtils.GenerateUrl(originalUrl, keyValues);

            BaseResult <GetPreviewURLResult> result = httpService.HttpPost <BaseResult <GetPreviewURLResult> >(requestUrl, requestParams);

            return(result);
        }
Exemplo n.º 14
0
        /// <summary>
        /// 上传合同文件
        /// </summary>
        /// <param name="account">用户唯一标识</param>
        /// <param name="fdata">文件数据,base64编码</param>
        /// <param name="fmd5">文件md5值</param>
        /// <param name="ftype">文件类型</param>
        /// <param name="fname">文件名</param>
        /// <param name="fpages">文件页数</param>
        /// <returns></returns>
        public BaseResult <StorageUploadResult> Upload(string account, string fdata, string fmd5, string ftype, string fname, int fpages)
        {
            Dictionary <string, object> requestParams = new Dictionary <string, object>();

            requestParams.Add("account", account);
            requestParams.Add("fdata", fdata);
            requestParams.Add("fmd5", fmd5);
            requestParams.Add("ftype", ftype);
            requestParams.Add("fname", fname);
            requestParams.Add("fpages", fpages);

            SortedDictionary <string, object> keyValues = new SortedDictionary <string, object>();

            keyValues.Add("developerId", Constants.DeveloperID);
            keyValues.Add("rtick", SignUtils.ToUnixEpochDate(DateTime.Now).ToString() + SignUtils.ToRandom(1000, 9999));
            keyValues.Add("signType", Constants.SignType);

            var signResult       = SignUtils.GenerateSign(Constants.Path + Constants.Storage_Upload, SignUtils.GenerateMD5(requestParams), keyValues);
            var signEncryResult  = RSAEncryption.SignData(signResult, Constants.PrivateKey);
            var signEncodeResult = SignUtils.SignUrlEncode(signEncryResult);

            keyValues.Add("sign", signEncodeResult);
            var originalUrl = Constants.Host + Constants.Path + Constants.Storage_Upload;
            var requestUrl  = SignUtils.GenerateUrl(originalUrl, keyValues);

            BaseResult <StorageUploadResult> result = httpService.HttpPost <BaseResult <StorageUploadResult> >(requestUrl, requestParams);

            return(result);
        }
Exemplo n.º 15
0
        public void GivenEncryptingData_WhenDecryptingData_FromImportedKey_ThenDataIsDecrypted()
        {
            var currentUser = WindowsIdentity.GetCurrent()
                              .Name;

            var target             = new RSAEncryption("target", currentUser);
            var signatureContainer = new RSAEncryption("signatureContainer", currentUser);
            var signaturePublicKey = signatureContainer.ExportKey(false);
            var targetPublicKey    = target.ExportKey(false);

            HybridEncryption hybridEncryption = HybridEncryption.CreateEncryption(targetPublicKey, "signatureContainer");
            HybridDecryption hybridDecryption = HybridDecryption.CreateDecryption("target", signaturePublicKey);

            RandomNumberGenerator random = new RNGCryptoServiceProvider();

            var data       = new byte[512];
            var sessionKey = new byte[32];
            var iv         = new byte[16];

            random.GetBytes(sessionKey);
            random.GetBytes(iv);
            random.GetBytes(data);

            (EncryptionSettings key, byte[] encryptedData)encryptedResult = hybridEncryption.EncryptData(sessionKey, data, iv);

            var keyBlob = encryptedResult.key.ExportToBlob();

            var keyFromBlob = EncryptionSettings.FromBlob(keyBlob);

            var decryptedData = hybridDecryption.DecryptData(keyFromBlob, encryptedResult.encryptedData);

            Assert.That(decryptedData, Is.EqualTo(data));
        }
 private void GenerateThread()
 {
     try
     {
         while (PrivateKeys.Count < Max_Private_Keys || DiffieHellmans.Count < Max_Private_Keys)
         {
             if (PrivateKeys.Count < Max_Private_Keys)
             {
                 RSAEncryption RSA = GenerateRsaKey();
                 lock (PrivateKeys)
                 {
                     PrivateKeys.Add(RSA);
                 }
             }
             if (DiffieHellmans.Count < Max_Private_Keys)
             {
                 DiffieHellman diffie = GenerateDiffieHellman();
                 lock (DiffieHellmans)
                 {
                     DiffieHellmans.Add(diffie);
                 }
             }
         }
     }
     catch
     {
     }
     GenThread = null;
 }
Exemplo n.º 17
0
        /// <summary>
        /// 注册个人用户并申请证书 | 注册企业用户并申请证书
        /// </summary>
        /// <param name="account">用户唯一标识</param>
        /// <param name="name">用户名称</param>
        /// <param name="userType">用户类型</param>
        /// <param name="credential">用户证件信息对象</param>
        /// <param name="applyCert"></param>
        /// <param name="mail">用户邮箱</param>
        /// <param name="mobile">用户手机号</param>
        /// <returns></returns>
        public BaseResult <RegResult> Reg(string account, string name, string userType, object credential, string applyCert, string mail = "", string mobile = "")
        {
            Dictionary <string, object> requestParams = new Dictionary <string, object>();

            requestParams.Add("account", account);
            requestParams.Add("name", name);
            requestParams.Add("userType", userType);
            requestParams.Add("mail", mail);
            requestParams.Add("mobile", mobile);
            requestParams.Add("credential", credential);
            requestParams.Add("applyCert", applyCert);

            SortedDictionary <string, object> keyValues = new SortedDictionary <string, object>();

            keyValues.Add("developerId", Constants.DeveloperID);
            keyValues.Add("rtick", SignUtils.ToUnixEpochDate(DateTime.Now).ToString() + SignUtils.ToRandom(1000, 9999));
            keyValues.Add("signType", Constants.SignType);

            var signResult       = SignUtils.GenerateSign(Constants.Path + Constants.User_Reg, SignUtils.GenerateMD5(requestParams), keyValues);
            var signEncryResult  = RSAEncryption.SignData(signResult, Constants.PrivateKey);
            var signEncodeResult = SignUtils.SignUrlEncode(signEncryResult);

            keyValues.Add("sign", signEncodeResult);
            var originalUrl = Constants.Host + Constants.Path + Constants.User_Reg;
            var requestUrl  = SignUtils.GenerateUrl(originalUrl, keyValues);

            BaseResult <RegResult> result = httpService.HttpPost <BaseResult <RegResult> >(requestUrl, requestParams);

            return(result);
        }
Exemplo n.º 18
0
        private static void RSA_Test()
        {
            //RSAEncryption GenPrivateKeyc = new RSAEncryption(4096, true);
            //GenPrivateKeyc.GeneratePrivateKey();
            //string PrivateKey = GenPrivateKeyc.PrivateKey;

            int    BitSize          = 4096;
            string PreGenPrivateKey = @"<RSAKeyValue>
                                            <Modulus>1ClYJTeXDkbppKjvJqC3xf+E4P4eVa4lwvFmdGTsqDdJoT+RMvLg/WkrWsCEASmxaj3ohlg1kBhSv2ZXuZlH90Roba5EWOxD1EQUDjk0e711ga0YVwZF5UUo9yx+Lo1QR3ErmeNMOkJDa0IZVnmuILgdaTFBdBm2ZYdJVnpeB+BIycNT0vAoqtwdDZXySjAzfl6nL6WsNw/XqJMIDuFcIt8hv6vghFtpiQXeWEsuZq3DQPlCu0oJDYuoAaRU5KxOIakbTzpTS11eBx+w1PDgd+VCAEVbx71sqjSFsAOEvmm4A0lRBRnQuJOdoGLNFoSePDGP9J88KfIfosMtAqFDUX2/8EsAc6B3QnpQ0un5vC2Au0xUDY0fwsKtN9yvFQPw10eRXEV+Smz4pBH+4gOEKi0RxNt3chKa0qqGG9I/CqL1/PPEtvN31Bjxc4H2vAyW3XMRNs7o9pktimaRNpwZ6sbBDi2eNY6Ty5ff7jHv0uy9DRQsreTewhXvZK6M8OcBUxLp1tkzi9zTBKTPTMXAuUF1oWDJktWDBuGnxbZcTfTvJ0X3zS8/mXdsUHsgV5vcGeT+2hZLQnskrwlbxt4QjEHSl0hgWM9i5Yhd+ltlg/9URvZdnkh5pKoShJR4OWNSBsI3kwRzwPHAKag8J4TSFIgZXCkSvtTlsM6v44f8pNU=</Modulus>
                                            <Exponent>AQAB</Exponent>
                                            <P>3cBHXk4SpnPWskCpGfJbW5u5XO3q1srmsW9XCDwo4HWezMaIjznjcwd46W50nUAkfS6zt91Ez7xPzWg0+kTrLwJEnAwLb5rYk7aGk29G8Vz0DW6rBnzT8hIxgdAnRUk/Htxkee1k8aHdL5kDUkfBDX1sRxi20A8bNHG039oq0joxkQKO8nrctIxHLiTtPXUH1R3AZ4+35keONp4iRBvKudPlZFOGHw4JmtW/mm6opAHOMZJyMpz6LFbQuQ6FAb7YkP63e0qELgP5PgnFgz/k2vA5gqjCfLdHNqh4o9iTuEDh8JPY4ADu3JkaJXdp3NPn2vsZHW3IJQON4WnjfFB3mQ==</P>
                                            <Q>9O3oLQiJXD3O9aQnyUpI4MQjJ2JacXCbNmcS8Kv+U1eYpQqQK1PwJCl2jJ8KgP7Hy8H3kuUxMDFv1fuWO1UFC4fzrODx5W6Vo/ZUhud0l8q8OfQKq4YOmpHR/eFAj9Bo3bGNXnjBWCV0RmxA0cAQ/y/bAdBTOQntBQUNLqfstTu6fAMor6fzYpzic1olUlOQf9wCOHNE/JSgjMgaXdpYLxLsCSexN/ut8T8fxBSX3NeSUlLbj2CWtzEGsKwP7rwIfnZ9UUKdBCaGAj2UIi5wO2TBnEb0EhjRcOa15YThZTp+4U6LQNVJC9nK26yhBrWH2ZEft5a0nPgJLIabT90snQ==</Q>
                                            <DP>yVS/92FPEY1uylxmq8YdKClUvIjOhMGnfkWmcTWdr11bFnTSm6dlWJTaNKYyfms0NevnA/KDfVBt7ALGxss39HBMtplA8M1YAZTgzo9ji9RnSKLH6JYBIHFgPYotfXypMG3NU94znibl2UdFerjnEEZlvo8zu+dbPdxW6j78Te7D/fKisojWRZ5vKfgg5YGR4O6oN96Giy9AcVpVphzNjLZUOSiURzHJiqiy05XQy0dQXDWoNUfM4+DWlI4YOKN7oPmCwQ/Avr6g1rCsgSPLtvQQYw6xteX5ZCjFj40dYVaXTIQPjiGKvQLMeGPY28QRaAI+pTd9Vg3KDXTEM6QjUQ==</DP>
                                            <DQ>ENQz6rw2a+8XREuGLE99WGxBmhgo7Lh3AbLtWzoGHIXdSCHErCV1T5bFvX3EA/79jWODdkVnLs+GxqYluWfrE9LAjHVcSY5im8R2JFrM6Q0WB8lb3lM0t6wjSJVskTUZr3neo8oaRss0BQ61GXRf9pi8LJC61yV2cqzZLgZ9viofcxvodMFOeM0cxh5AiDqTqCVexbAt4kj4CxRIs4AoJPvg2fQvOhCB8ByNOzTLBnKNbDijO2PAl0+4DPWVlqq2zrGnhKjWDw3ykT7X6c1VCs+ueeVqKcAoy+AeSWnq7sCpLSPvb4H4JedOB/ABlGturSVKj5u8RzjHsJaDH2asBQ==</DQ>
                                            <InverseQ>YTR07LDfg26rZt6gaVlxYioX/UhbjoIPnH5Gd1ZcaGBfnkzaXatHv6YDA0wuj2VmAelmdTMD21H2TgHvvRRnpsVix/+uphV71QCKPBooJke/Dba2YxRYz5UYWid/VDvtFddzw3NdQF8mzqhr/FpdrZWeLiuDHlZLmQxqNWRlpFX1w1CBMZBuv8Z2cLf//sr/rZ3bY9F6EXqLoMIOnp+Gv069pfp7xpm5Ymcz3ixmCXY0BiwHxfbw2YAQus1Q3s+GSqtVU6IYFe6VbwdcRR45WdFEMF2I6mboehN2pTAUyEkvYIYra/pfjkXrTKPTvyucR1BmObKYqg9jKIXLKH3IRA==</InverseQ>
                                            <D>Ig0isxJ5gZabEEz22T3JUROCKbRPfRPuxpuFBKBgJV1+SU2RCdrWhoWXKkEkzqT47yLRi6JjsmVc/pA3+zdhSAvoMNZb7OO6vTpR97hxtnyBfBcihXEhzbrsaMNw2xreLCE7TL8g8GbLOE9LDsiHzIOQYN5BcZdg4Wm1uRX5uoziUdOyQ/Q8qrOaTCBpW0PiN+GMNscB3XKC+/DhRbYg2g3y9jbpWYTsaswQ1B347AzufiKjdbjbvBtSkzTjVTJcdeWU1wH29W0eVslc0ch5VnTqw21eXjAGXUkBve7Kot8H5CsjwExU5hL3JRNGdFtDpEiWIL5f4yGTt0VZF4d3bLV5q3R3l34ghdt171tShSGz013J0Z5Q/iHBgRkSR//0f8ZITe7iSkhkfZXbx7Ihi13ufBJwIdcDhT7LYKHLk/H3fgCnkAigEmT14/oZwYtW0CqnHtzbBpO+jPLIMAFbhty6GE2LKlQx91YwqMODnYRYs7e8evOeiAadLAjAxQOjNZ1J8EKfwmtmqBqfiUA5O1uJRAavuMhRw/UTMqOeBEGxosmUsV4aw9BIYASmJ9uzc7pkZdPwBlVdnHPn5MILmAcE2vYhv9bRgwUF8LRT4GkP9IW2g48WabzLhIdSu/azjT2GBnkMwz5FcwPYiFvQc3fquqVWhn9PqGN5tHq6LhE=</D>
                                        </RSAKeyValue>";

            RSAEncryption A_Rsa = new RSAEncryption(BitSize, "", PreGenPrivateKey, true);

            //When generating, only the modulus and Exponent should be made public, nothing else
            string PublicKeyFromA = A_Rsa.GeneratePublicKey();

            string TestData = "Helllo, This is A, let's hope this message arrived well";

            byte[] EncryptedData = A_Rsa.Encrypt(ASCIIEncoding.ASCII.GetBytes(TestData), 0, TestData.Length);
            byte[] SignedData    = A_Rsa.SignData(ASCIIEncoding.ASCII.GetBytes(TestData));

            RSAEncryption B_Rsa = new RSAEncryption(BitSize, A_Rsa.PublicParameters.Value.Modulus, A_Rsa.PublicParameters.Value.Exponent, true);

            byte[] DecryptedData = B_Rsa.Decrypt(EncryptedData, 0, EncryptedData.Length);
        }
Exemplo n.º 19
0
        public void GivenValidData_WhenExportingKey_ThenReturnsExportKey()
        {
            RSAEncryption encryption = new RSAEncryption();

            var rsaExport = encryption.ExportKey(false);

            Assert.That(rsaExport, Is.Not.Null);
        }
Exemplo n.º 20
0
        internal static RSAEncryption load_keys1(string idkeys)
        {
            RSAEncryption myRsa       = new RSAEncryption();
            string        public_keys = String.Format(System.IO.Directory.GetCurrentDirectory() + "/keys/publicKey_{0}.xml", idkeys);

            myRsa.LoadPublicFromXml(public_keys);
            return(myRsa);
        }
Exemplo n.º 21
0
        internal static RSAEncryption load_keysFile(string filekey)
        {
            RSAEncryption myRsa       = new RSAEncryption();
            string        public_keys = filekey;

            myRsa.LoadPublicFromXml(public_keys);
            return(myRsa);
        }
        public void GivenValidData_WhenExportingKey_ThenReturnsExportedKeyToXML()
        {
            RSAEncryption encryption = RSAEncryption.CreateContainer("SomeContainer");

            var rsaExport = encryption.ExportKey(false);

            Assert.That(rsaExport, Is.Not.Null);
        }
        private RSAEncryption GenerateRsaKey()
        {
            RSAEncryption RSA = new RSAEncryption(Connection.RSA_KEY_SIZE, true);

            RSA.GeneratePrivateKey();
            RSA.GeneratePublicKey();
            return(RSA);
        }
Exemplo n.º 24
0
 public static RSAEncryption GetRsaEncryption()
 {
     if (rsaEncryption == null)
     {
         rsaEncryption = new RSAEncryption();
     }
     return(rsaEncryption);
 }
Exemplo n.º 25
0
        private void button1_Click(object sender, EventArgs e)
        {
            // Compose a string that consists of three lines.
            if (textBox1.Text.Length > 0 && textBox2.Text.Length > 0 && textBox3.Text.Length > 0 && textBox4.Text.Length > 0)
            {
                ManagementObjectSearcher mosDisks = new ManagementObjectSearcher("Select * from Win32_DiskDrive ");

                foreach (ManagementObject moDisk in mosDisks.Get())
                {
                    if (moDisk["Name"].ToString() == "\\\\.\\PHYSICALDRIVE0")
                    {
                        id = moDisk["SerialNumber"].ToString();

                        break;
                    }
                }

                try
                {
                    if (textBox5.Text != "")
                    {
                        RSAEncryption myRsa = new RSAEncryption();
                        myRsa.LoadPublicFromXml("PublicKey.xml");
                        System.IO.StreamWriter file = new System.IO.StreamWriter(@textBox5.Text + "\\key-req.txt");

                        byte[] msg  = Encoding.UTF8.GetBytes(textBox1.Text);
                        byte[] msg1 = Encoding.UTF8.GetBytes(textBox2.Text);
                        byte[] msg2 = Encoding.UTF8.GetBytes(textBox6.Text);
                        byte[] msg3 = Encoding.UTF8.GetBytes(textBox3.Text);
                        byte[] msg4 = Encoding.UTF8.GetBytes(id);
                        // byte[] encMessage = null;
                        msg  = myRsa.PublicEncryption(msg);
                        msg1 = myRsa.PublicEncryption(msg1);
                        msg2 = myRsa.PublicEncryption(msg2);
                        msg3 = myRsa.PublicEncryption(msg3);
                        msg4 = myRsa.PublicEncryption(msg4);
                        id1  = Convert.ToBase64String(msg); id2 = Convert.ToBase64String(msg1); id3 = Convert.ToBase64String(msg2); id4 = Convert.ToBase64String(msg3);
                        id5  = Convert.ToBase64String(msg4);
                        file.WriteLine(id1); file.WriteLine(id2); file.WriteLine(id3); file.WriteLine(id4); file.WriteLine(id5);

                        file.Close();
                        MessageBox.Show("File created succefully in" + @textBox5.Text + "\\");
                    }
                    else
                    {
                        MessageBox.Show("Please select any folder");
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Please select any other folder");
                }
            }
            else
            {
                MessageBox.Show("Completely Fill data");
            }
        }
Exemplo n.º 26
0
 public void GenarateKeyPair()
 {
     cryptoField.gameObject.SetActive(true);
     publicAndPrivateKeyValuePair = RSAEncryption.GenrateKeyPair(int.Parse(sizeInput.text));
     Debug.Log(publicAndPrivateKeyValuePair.Key);
     Debug.Log(publicAndPrivateKeyValuePair.Value);
     publicKeyText.text  = publicAndPrivateKeyValuePair.Key;
     privateKeyText.text = publicAndPrivateKeyValuePair.Value;
 }
Exemplo n.º 27
0
        private RSAEncryption CreateContainer(Context context)
        {
            if (!context.Arguments.TryGetValue(WellKnownCommandArguments.CONTAINER_NAME, out var containerName))
            {
                throw new ContainerNameMissingException("Missing container name. Try export --help for more information");
            }

            return(RSAEncryption.FromExistingContainer(containerName));
        }
Exemplo n.º 28
0
        public static ExportState CreateWithContainer(RSAEncryption rsaEncryption)
        {
            var state = new ExportState
            {
                _rsaEncryption = rsaEncryption
            };

            return(state);
        }
Exemplo n.º 29
0
        private static string ReadEncryptedMessageUsingPublicKey(byte[] encryptedMessage)
        {
            RSAEncryption myRsa = new RSAEncryption();

            myRsa.LoadPublicFromEmbedded(PublicKey);

            byte[] decryptMsg = myRsa.PublicDecryption(encryptedMessage);
            return(Encoding.UTF8.GetString(decryptMsg));
        }
Exemplo n.º 30
0
        private static void create_keys()
        {
            string idkeys = create_id();

            id = idkeys;
            List <string> list_keys = Generate_Keys.genertate_key(idkeys);

            rsa = Generate_Keys.load_keys(idkeys);
        }