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); }
public BlockChainResponse StratisMineBlockThenReturnResponse(StratisBlockData block) { try { var stratisMineRelativeUrl = ConfigurationManager.AppSettings["StratisBlockChainMineRelativeUrl"]; var hashOfMineData = StratisEndPointService.StratisMineBlockFromChain(stratisMineRelativeUrl, block); return(hashOfMineData); } catch (Exception e) { throw e; } }
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); }
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}"); }
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)); }
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())); }
public BlockChainResponse StratisMineBlockFromChain(string stratisMineUrl, StratisBlockData blockData) { blockData.blockCount = 1; return(StratisMineBlock(stratisMineUrl, blockData).Result); }
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)); }