Ejemplo n.º 1
0
        public static IJType GetJsonDecoded(Context context, byte[] message, long senderId)
        {
            byte[] aesBinKey = context.Contacts
                               .Where(u => u.PublicId == senderId)
                               .Select(u => u.ReceiveAesKey)
                               .SingleOrDefault();

            AESPassword key = new AESPassword(aesBinKey);

            byte[]    decrypted = key.Decrypt(message);
            JsonTypes type      = (JsonTypes)decrypted[0];
            string    jsonText  = Encoding.UTF8.GetString(decrypted, 1, decrypted.Length - 1);

            switch (type)
            {
            case JsonTypes.ALARM:
                return(JsonConvert.DeserializeObject <JAlarm>(jsonText));

            case JsonTypes.CONTACT_DETAIL:
                return(JsonConvert.DeserializeObject <JContactDetail>(jsonText));

            case JsonTypes.MESSAGES:
                return(JsonConvert.DeserializeObject <JMessage>(jsonText));

            case JsonTypes.MESSAGES_THREAD:
                return(JsonConvert.DeserializeObject <JMessageThread>(jsonText));

            case JsonTypes.AES_KEY:
                return(JsonConvert.DeserializeObject <JAESKey>(jsonText));

            default:
                throw new Exception("Unknown JsonType.");
            }
        }
Ejemplo n.º 2
0
        public static JsonCapsula GetJsonDecoded(Context context, byte[] message, long senderId)
        {
            byte[] aesBinKey = context.Contacts
                               .Where(u => u.PublicId == senderId)
                               .Select(u => u.ReceiveAesKey)
                               .SingleOrDefault();

            AESPassword key = new AESPassword(aesBinKey);

            byte[] decrypted = key.Decrypt(message);

            MemoryStream stream   = new MemoryStream(decrypted);
            JsonTypes    type     = (JsonTypes)BinaryEncoder.ReadInt(stream);
            string       jsonText = TextEncoder.ReadString(stream);

            byte[] attechment   = null;
            int    isAttechment = BinaryEncoder.ReadInt(stream);

            if (isAttechment == 1)
            {
                attechment = BinaryEncoder.ReceiveBytes(stream);
            }

            IJType jmessage;

            switch (type)
            {
            case JsonTypes.ALARM:
                jmessage = JsonConvert.DeserializeObject <JAlarm>(jsonText);
                break;

            case JsonTypes.CONTACT:
                jmessage = JsonConvert.DeserializeObject <JContact>(jsonText);
                break;

            case JsonTypes.MESSAGES:
                jmessage = JsonConvert.DeserializeObject <JMessage>(jsonText);
                break;

            case JsonTypes.MESSAGES_THREAD:
                jmessage = JsonConvert.DeserializeObject <JMessageThread>(jsonText);
                break;

            default:
                throw new Exception("Unknown JsonType.");
            }

            return(new JsonCapsula()
            {
                Attechment = attechment,
                Message = jmessage
            });
        }
Ejemplo n.º 3
0
        static void AesTrial()
        {
            using (Context context = new Context(config))
            {
                byte[] aesBinKey = context.Contacts
                                   .Where(u => u.PublicId == connection.UserId)
                                   .Select(u => u.ReceiveAesKey)
                                   .SingleOrDefault();

                AESPassword key     = new AESPassword(aesBinKey);
                String      testStr = "Testy tisty teristy\n";
                for (int i = 0; i != 3; i++)
                {
                    testStr += testStr;
                }
                WriteLine($"Encrypting string: {testStr}");

                byte[] data      = Encoding.UTF8.GetBytes(testStr);
                byte[] encrypted = key.Encrypt(data);
                WriteLine(Encoding.UTF8.GetString(key.Decrypt(encrypted)));
            }
        }