示例#1
0
 public void RekeyAsync(TLEncryptedChatBase chat, Action <TLLong> callback)
 {
     //GetGA()
 }
示例#2
0
 public SecretChatDebugViewModel(TLEncryptedChatBase chat, System.Action rekeyAction)
 {
     Chat         = chat;
     _rekeyAction = rekeyAction;
 }
        private WriteableBitmap CreateKeyBitmap(TLEncryptedChatBase chat)
        {
            var key = chat.OriginalKey ?? chat.Key;

            if (key == null)
            {
                return(null);
            }
            var data = key.Data;

            var chat17 = chat as TLEncryptedChat17;

            var extended = chat17 != null &&
                           chat17.Layer.Value >= Constants.MinSecretChatWithExtendedKeyVisualizationLayer &&
                           chat17.ExtendedKey != null;

            var count  = extended ? 12 : 8;
            var length = extended ? 25 : 40;
            var bitmap = new WriteableBitmap(count * length, count * length);

            var hash   = Telegram.Api.Helpers.Utils.ComputeSHA1(data);
            var colors = new [] {
                0xffffffff,
                0xffd5e6f3,
                0xff2d5775,
                0xff2f99c9
            };

            if (extended)
            {
                var extendedData = chat17.ExtendedKey.Data;

                for (var i = 0; i < 64; i++)
                {
                    var index = (hash[i / 4] >> (2 * (i % 4))) & 0x3;

                    var x = i % 12;
                    var y = i / 12;
                    DrawFilledRectangle(bitmap, x * length, y * length, (x + 1) * length, (y + 1) * length, (int)colors[index]);
                }

                var hash256 = Telegram.Api.Helpers.Utils.ComputeSHA256(extendedData);
                for (var i = 0; i < 80; i++)
                {
                    var index = (hash256[i / 4] >> (2 * (i % 4))) & 0x3;

                    var local = i + 64;
                    var x     = local % 12;
                    var y     = local / 12;
                    DrawFilledRectangle(bitmap, x * length, y * length, (x + 1) * length, (y + 1) * length, (int)colors[index]);
                }
            }
            else
            {
                for (int i = 0; i < 64; i++)
                {
                    int index = (hash[i / 4] >> (2 * (i % 4))) & 0x3;

                    var x = i % 8;
                    var y = i / 8;
                    DrawFilledRectangle(bitmap, x * length, y * length, (x + 1) * length, (y + 1) * length, (int)colors[index]);
                }
            }


            return(bitmap);
        }