public IActionResult GetRequisitionFile(string transID) { if (HttpContext.Session.GetString(Globals.currentPSPubK) == null || HttpContext.Session.GetString(Globals.currentPAPubK) == null) { return(RedirectToAction("Login")); } else { var result = _bigChainDbService.GetMetaDataAndAssetFromTransactionId <string, double>(transID); var patientAgreePrivateKey = HttpContext.Session.GetString(Globals.currentPAPriK); var patientSignPublicKey = HttpContext.Session.GetString(Globals.currentPSPubK); if (result.metadata.AccessList.Keys.Contains(patientSignPublicKey)) { var hashedKey = result.metadata.AccessList[patientSignPublicKey]; var dataDecryptionKey = EncryptionService.getDecryptedEncryptionKey(hashedKey, patientAgreePrivateKey); var data = EncryptionService.getDecryptedAssetData(result.data.Data, dataDecryptionKey); var asset = JsonConvert.DeserializeObject <TestRequisitionAsset>(data); //get encrypted file from ipfs string encryptedFileData = _bigChainDbService.GetTextFromIPFS(asset.AttachedFile.Data); string fileData = EncryptionService.getDecryptedAssetData(encryptedFileData, dataDecryptionKey); byte[] fileBytes = Convert.FromBase64String(fileData); return(File(fileBytes, asset.AttachedFile.Type, asset.AttachedFile.Name)); } return(new EmptyResult()); } }