Example #1
0
        public IActionResult GetResultFile(string transID)
        {
            var result = _bigChainDbService.GetMetaDataAndAssetFromTransactionId <string, double>(transID);
            var doctorSignPrivateKey  = HttpContext.Session.GetString(Globals.currentDSPriK);
            var doctorAgreePrivateKey = HttpContext.Session.GetString(Globals.currentDAPriK);
            var doctorSignPublicKey   = EncryptionService.getSignPublicKeyStringFromPrivate(doctorSignPrivateKey);

            if (result.metadata.AccessList.Keys.Contains(doctorSignPublicKey))
            {
                var hashedKey         = result.metadata.AccessList[doctorSignPublicKey];
                var dataDecryptionKey = EncryptionService.getDecryptedEncryptionKey(hashedKey, doctorAgreePrivateKey);
                var encryptedFile     = _bigChainDbService.GetAssociatedTestResultFile(result.id);
                if (encryptedFile != "")
                {
                    var data  = EncryptionService.getDecryptedAssetData(encryptedFile, dataDecryptionKey);
                    var asset = JsonConvert.DeserializeObject <FileData>(data);
                    //get encrypted file from ipfs
                    string encryptedFileData = _bigChainDbService.GetTextFromIPFS(asset.Data);
                    string fileData          = EncryptionService.getDecryptedAssetData(encryptedFileData, dataDecryptionKey);

                    byte[] fileBytes = Convert.FromBase64String(fileData);
                    return(File(fileBytes, asset.Type, asset.Name));
                }
            }
            return(new EmptyResult());
        }