Ejemplo n.º 1
0
        /// <summary>
        /// Metoda koja preuzima datoteku sa dropbox servera. Prvo se skida pomoćna .crypto datoteka te se iz nje čita inicijalizacijski
        /// vektor i ključ. Zatim se dohvaća glavna datoteka sa dropbox servera koja se na kraju dekriptira uz pomoć inicijalizacijskoga
        /// vektora, aes ključa i privatnoga ključa prijavljenoga korisnika.
        /// </summary>
        /// <param name="primatelj"></param>
        /// <param name="posiljatelj"></param>
        /// <param name="fileName"></param>
        /// <returns></returns>
        public async Task <byte[]> Download(string primatelj, string posiljatelj, string fileName)
        {
            EnkripcijskiPaket paket = new EnkripcijskiPaket();

            byte[] file;
            byte[] helpFile;
            string fullName = posiljatelj + "_" + fileName;

            string downloadFilePath = path + primatelj + "/primljeno/" + fullName;
            string helpFilePath     = path + primatelj + "/primljeno/" + Path.GetFileNameWithoutExtension(fullName) + ".crypto";

            using (var dbx = new DropboxClient(token))
            {
                using (var response = await dbx.Files.DownloadAsync(helpFilePath))
                {
                    helpFile = await response.GetContentAsByteArrayAsync();

                    using (var ms = new MemoryStream(helpFile))
                    {
                        StreamReader msReader = new StreamReader(ms);
                        paket.EnkriptiraniKljuc = msReader.ReadLine();
                        paket.Iv = Convert.FromBase64String((msReader.ReadLine()));
                    }
                }

                using (var response = await dbx.Files.DownloadAsync(downloadFilePath))
                {
                    file = await response.GetContentAsByteArrayAsync();
                }
            }

            file = HibridnaEnkripcija.DecryptFile(file, paket.EnkriptiraniKljuc, paket.Iv, DohvatiPrivatniKljuc(primatelj));
            return(file);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Konstruktor forme koji za parametar ima objekt 'Poruka' kako bi se uopce mogao prikazati enkriptirani i
        /// dekriptirani tekst
        /// </summary>
        /// <param name="poruka"></param>
        public FormaDekriptiranaPoruka(Poruka poruka)
        {
            InitializeComponent();
            prikazEnkriptiran.Text = poruka.Paket.EnkriptiraniPodaci;
            string privatniKljuc      = DohvatiPrivatniKljuc(poruka.Primatelj);
            string dekriptiranaPoruka = HibridnaEnkripcija.DecryptData(poruka, privatniKljuc);

            prikazDekriptiran.Text = dekriptiranaPoruka;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Metoda koja uploada datoteku na dropbox na temelju putanje datoteke. Username Pošiljatelja datoteke služi za
        /// formiranje imena datoteke kako bi se znalo tko je datoteku poslao, dok username primatelja služi za formiranje ispravne
        /// lokacije gdje će se datoteka uploadati. Datoteka se prije uploada enkriptira hibridnom enkripcijom. Uz glavnu datoteku
        /// šalje se i pomoćna .crypto datoteka koja sadrži enkriptirani AES ključ i inicijalizacijski vektor.
        /// </summary>
        /// <param name="filePath"></param>
        /// <param name="posiljatelj"></param>
        /// <param name="primatelj"></param>
        public async Task <int> Upload(string filePath, string posiljatelj, string primatelj, string javniKljuc)
        {
            EnkripcijskiPaket paket;

            string fileName       = Path.GetFileName(filePath);
            string uploadFilePath = path + primatelj + "/primljeno/" + posiljatelj + "_" + fileName;

            paket = HibridnaEnkripcija.EncryptFile(File.ReadAllBytes(filePath), javniKljuc);
            byte[] fileToUpload = paket.VratiDatoteku();

            string fileName2       = posiljatelj + "_" + Path.GetFileNameWithoutExtension(filePath) + ".crypto";
            string uploadFilePath2 = path + primatelj + "/primljeno/" + fileName2;

            byte[] fileToUpload2 = null;
            using (var ms = new MemoryStream())
            {
                TextWriter tw = new StreamWriter(ms);
                tw.WriteLine(paket.EnkriptiraniKljuc);
                tw.WriteLine(Convert.ToBase64String(paket.Iv));
                tw.Flush();
                ms.Position   = 0;
                fileToUpload2 = ms.ToArray();
            }

            using (var dbx = new DropboxClient(token))
            {
                using (var mem = new MemoryStream(fileToUpload2))
                {
                    var updated = await dbx.Files.UploadAsync(uploadFilePath2,
                                                              WriteMode.Add.Instance, autorename : true,
                                                              body : mem);

                    uploadFilePath = path + primatelj + "/primljeno/" + Path.GetFileNameWithoutExtension(updated.AsFile.Name) + Path.GetExtension(fileName);
                }

                using (var mem = new MemoryStream((fileToUpload)))
                {
                    var updated = await dbx.Files.UploadAsync(uploadFilePath,
                                                              WriteMode.Add.Instance, autorename : true,
                                                              body : mem);
                }
            }
            return(1);
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Metoda koja enkriptira sadrzaj na temelju javnoga ključa te stvara enkripcijski paket koji pridružuje
 /// svom enkripcijskom paketu.
 /// </summary>
 /// <param name="sadrzaj"></param>
 /// <param name="javniKljuc"></param>
 public void FormirajEnkripcijskiPaket(string sadrzaj, string javniKljuc)
 {
     Paket = HibridnaEnkripcija.EncryptData(sadrzaj, javniKljuc);
 }