コード例 #1
0
        /// <summary>
        /// Dohvati ObservableCollection FirebaseKorisnik
        /// </summary>
        /// <param name="response"></param>
        /// <returns></returns>
        private ObservableCollection <FirebaseKorisnik> DohvatiObservableCollection(IReadOnlyCollection <FirebaseObject <FirebaseKorisnik> > response)
        {
            ObservableCollection <FirebaseKorisnik> tempLista = new ObservableCollection <FirebaseKorisnik>();

            foreach (var user in response)
            {
                FirebaseKorisnik firebaseKorisnik = user.Object;
                firebaseKorisnik.KljucFirebase = user.Key;
                tempLista.Add(user.Object);
            }

            return(tempLista);
        }
コード例 #2
0
 public Poruka(FirebaseKorisnik korisnik, Byte[] pecat, String poruka)
 {
     this.FireBaseKorisnik = korisnik;
     this.DigitalniPecat   = pecat;
     this.CitkaPoruka      = poruka;
 }
コード例 #3
0
        /// <summary>
        /// PROVJERA PECATA. Prvi element polja je dekriptirana poruka, a drugi element govori ime osobe koja je to poslala.
        /// U slucaju da se vrati null znaci da korisnik nije pronaden
        /// </summary>
        /// <param name="primljeniPodaci"></param>
        /// <returns></returns>
        public static String[] DekriptirajPoruku(Byte[] primljeniPodaci)
        {
            try
            {
                String[] rezultat            = new String[2];
                int      totalnaDuljinaPolja = primljeniPodaci.Length;

                // Dohvati firebase kljuc osobe koja je poslala poruku
                int    skipanje    = totalnaDuljinaPolja - (StatickeVarijable.POSILJATELJ / 8);
                Byte[] posiljatelj = primljeniPodaci.Skip(skipanje).Take(StatickeVarijable.VELICINA_KLJUCA_RSA / 8).ToArray();

                //Dohvaćane firebasekorisnik objekta na temelju kljuca
                String           posiljateljString           = Encoding.UTF8.GetString(posiljatelj);
                FirebaseKorisnik firebaseKorisnikPosiljatelj = TrenutniKorisnik.OnlineKorisnici
                                                               .First(item => item.KljucFirebase.Equals(posiljateljString));

                if (firebaseKorisnikPosiljatelj == null)
                {
                    return(null);
                }

                //Potpis (kriptirano privatnim kljucem osobe koja ja poslala poruku)
                skipanje = totalnaDuljinaPolja - ((StatickeVarijable.VELICINA_KLJUCA_RSA / 8) + (StatickeVarijable.POSILJATELJ / 8));
                Byte[] C3 = primljeniPodaci.Skip(skipanje).Take(StatickeVarijable.VELICINA_KLJUCA_RSA / 8).ToArray();

                //Kriptirani tajni kljuc
                skipanje = totalnaDuljinaPolja - ((StatickeVarijable.VELICINA_KLJUCA_RSA / 8)
                                                  + (StatickeVarijable.VELICINA_KLJUCA_RSA / 8)
                                                  + (StatickeVarijable.POSILJATELJ / 8));
                Byte[] C2 = primljeniPodaci.Skip(skipanje).Take(StatickeVarijable.VELICINA_KLJUCA_RSA / 8).ToArray();

                //Kriptirani tekst simetricnim kljucem
                Byte[] C1 = primljeniPodaci.Take(skipanje).ToArray();

                //Dekriptiran simetricni kljuc
                Byte[] simetricniKljucDekriptiran = RSA.DekriptirajTekst(C2, TrenutniKorisnik.Korisnik.PrivatniKljuc);

                //orginal tekst
                rezultat[0] = $"Sadrzaj poruke: { AES.DekriptirajTekst(C1, simetricniKljucDekriptiran) }";

                //Racunamo sazetak
                Byte[] sazetakC1ConcatC2 = C1.Concat(C2).ToArray();
                Byte[] sazetak           = SHA256.IzracunajSazetak(sazetakC1ConcatC2);

                //Provjera potpisa
                if (RSA.ProvjeriPotpis(sazetak, C3, firebaseKorisnikPosiljatelj.JavniKljuc))
                {
                    rezultat[1] = "Posalo korisnik: " + firebaseKorisnikPosiljatelj.KorisnickoIme;
                }
                else
                {
                    rezultat[1] = null;
                }

                return(rezultat);
            }
            catch (Exception e)
            {
                Debug.Print(new StringBuilder(StatickeVarijable.ERROR).Append(e.Message).ToString());
                return(null);
            }
        }