Example #1
0
        public StratisBlockData CertifyUser(string emailAddress, string moocEmailAddress, MicroCredential MicroCredential)
        {
            var block = new StratisBlockData(DateTime.Now, new List <Transactions> {
                new Transactions(moocEmailAddress, emailAddress, MicroCredential.CertificateFee)
                {
                    MicroCredentials = new List <MicroCredential> {
                        new MicroCredential {
                            MicroCredentialId = MicroCredential.MicroCredentialId,
                            /*MicroCredentialDescription = MicroCredential.MicroCredentialDescription,*/
                            MicroCredentialName = MicroCredential.MicroCredentialName
                        }
                    }
                }
            });

            //Get RSAKeysFromDB

            var moocProvider = RepositoryEndPointService.GetMoocProviderFromDB();

            RestoreMoocKeys(moocProvider);
            //Note We Sign with Mooc's Public Key. and Expose Private Key to the other parites to verify Mooc's Signature!!
            block.KeyModulus    = moocProvider.MoocModulus;   //Rsa316Engine.getModValue();
            block.MoocPublicKey = moocProvider.MoocPublicKey; //Rsa316Engine.getPublicKey();

            block.MoocSignature = CreateSignature(block);
            return(block);
        }
Example #2
0
 public BlockChainResponse StratisMineBlockThenReturnResponse(StratisBlockData block)
 {
     try
     {
         var stratisMineRelativeUrl = ConfigurationManager.AppSettings["StratisBlockChainMineRelativeUrl"];
         var hashOfMineData         = StratisEndPointService.StratisMineBlockFromChain(stratisMineRelativeUrl, block);
         return(hashOfMineData);
     }
     catch (Exception e)
     {
         throw e;
     }
 }
Example #3
0
        public StratisBlockData MoocSignBlock(StratisBlockData blockToSign)
        {
            var signaturesRaw = blockToSign.Transactions.Select(q => {
                var individualDetails = q.Amount.ToString() + q.From + q.To;
                var microCredential   = q.MicroCredentials.Select(p => { return(p.MicroCredentialId.ToString() + p.MicroCredentialId.ToString() + p.MicroCredentialName); }).ToList();
                var strBuilder        = new StringBuilder();
                microCredential.ForEach(p => strBuilder.Append(p));
                var subResult = individualDetails + strBuilder.ToString();
                return(subResult);
            });

            var absoluteContentSignature = new StringBuilder();

            signaturesRaw.ToList().ForEach(s => absoluteContentSignature.Append(s));

            blockToSign.MoocSignature = Convert.ToBase64String(Rsa316Engine.Encrypt(absoluteContentSignature.ToString()));
            return(blockToSign);
        }
Example #4
0
        public string GetUserDataToCertify(string emailAddress, string moocEmailAddress, MicroCredential MicroCredential)
        {
            var block = new StratisBlockData(DateTime.Now, new List <Transactions> {
                new Transactions(moocEmailAddress, emailAddress, MicroCredential.CertificateFee)
                {
                    MicroCredentials = new List <MicroCredential> {
                        new MicroCredential {
                            MicroCredentialId = MicroCredential.MicroCredentialId,
                            /*MicroCredentialDescription = MicroCredential.MicroCredentialDescription,*/
                            MicroCredentialName = MicroCredential.MicroCredentialName,
                            Fee            = MicroCredential.Fee,
                            CertificateFee = MicroCredential.CertificateFee
                        }
                    }
                }
            });

            return($"Fr:{block.Transactions.First().From},To:{block.Transactions.First().To},Fee:{block.Transactions.First().MicroCredentials.First().Fee},CFee:{block.Transactions.First().MicroCredentials.First().CertificateFee},CrId:{block.Transactions.First().MicroCredentials.First().MicroCredentialId}");
        }
Example #5
0
        public string CreateSignature(StratisBlockData blockToVerify)
        {
            var signaturesRaw = blockToVerify.Transactions.Select(q =>
            {
                var individualDetails = q.Amount.ToString() + q.From + q.To;
                var microCredentials  = q.MicroCredentials.Select(p => { return(p.MicroCredentialId.ToString() + p.MicroCredentialCode + p.MicroCredentialDescription + p.MicroCredentialName); }).ToList();
                var strBuilder        = new StringBuilder();
                microCredentials.ForEach(p => strBuilder.Append(p));
                var subResult = individualDetails + ":" + strBuilder.ToString();
                return(subResult);
            });

            var absoluteContentSignature = new StringBuilder();

            signaturesRaw.ToList().ForEach(s => absoluteContentSignature.Append(s));
            var sigBytes = Rsa316Engine.Encrypt(absoluteContentSignature.ToString());

            return(Convert.ToBase64String(sigBytes));
        }
Example #6
0
        public bool VerifyMoocSignature(StratisBlockData blockToVerify)
        {
            var signaturesRaw = blockToVerify.Transactions.Select(q => {
                var individualDetails = q.Amount.ToString() + q.From + q.To;
                var microCredential   = q.MicroCredentials.Select(p => { return(p.MicroCredentialId.ToString() + p.MicroCredentialId.ToString() + p.MicroCredentialName); }).ToList();
                var strBuilder        = new StringBuilder();
                microCredential.ForEach(p => strBuilder.Append(p));
                var subResult = individualDetails + ":" + strBuilder.ToString();
                return(subResult);
            });

            var absoluteContentSignature = new StringBuilder();

            signaturesRaw.ToList().ForEach(s => absoluteContentSignature.Append(s));

            var decryptedSignature = Encoding.UTF8.GetString(Rsa316Engine.Decrypt(blockToVerify.MoocSignature));

            return(decryptedSignature.Equals(absoluteContentSignature.ToString()));
        }
Example #7
0
 public BlockChainResponse StratisMineBlockFromChain(string stratisMineUrl, StratisBlockData blockData)
 {
     blockData.blockCount = 1;
     return(StratisMineBlock(stratisMineUrl, blockData).Result);
 }
Example #8
0
        protected async Task <BlockChainResponse> StratisMineBlock(string stratisMineUrl, StratisBlockData blockData)
        {
            var            jsonMediaTypeFormatter = new JsonMediaTypeFormatter();
            BlockChainData request = new BlockChainData {
                blockCount = blockData.blockCount, description = blockData
            };

            var httpResponse = await HttpClient.PostAsJsonAsync <BlockChainData>(stratisMineUrl, request);

            return(JsonConvert.DeserializeObject <BlockChainResponse>(httpResponse.Content.ReadAsStringAsync().Result));
        }