Пример #1
0
        public static byte[] DecodeCheck(VersionByte versionByte, string encoded)
        {
            var decoded            = CheckedBase32Decode(encoded);
            var decodedVersionByte = decoded[0];

            var payload = new byte[decoded.Length - 2];

            Array.Copy(decoded, 0, payload, 0, payload.Length);

            var data = new byte[payload.Length - 1];

            Array.Copy(payload, 1, data, 0, data.Length);

            var checksum = new byte[2];

            Array.Copy(decoded, decoded.Length - 2, checksum, 0, checksum.Length);

            if (decodedVersionByte != (byte)versionByte)
            {
                throw new FormatException("Version byte is invalid");
            }

            var expectedChecksum = CalculateChecksum(payload);

            if (!expectedChecksum.SequenceEqual(checksum))
            {
                throw new FormatException("Checksum invalid");
            }

            return(data);
        }
Пример #2
0
        public static byte[] DecodeCheck(VersionByte versionByte, string encoded)
        {
            byte[] decoded            = Base32Encoding.ToBytes(encoded);
            byte   decodedVersionByte = decoded[0];

            byte[] payload = new byte[decoded.Length - 2];
            Array.Copy(decoded, payload, decoded.Length - 2);
            byte[] data = new byte[payload.Length - 1];
            Array.Copy(payload, 1, data, 0, payload.Length - 1);
            byte[] checksum = new byte[2];
            Array.Copy(decoded, decoded.Length - 2, checksum, 0, 2);


            if (decodedVersionByte != (byte)versionByte)
            {
                throw new FormatException("Version byte is invalid");
            }

            byte[] expectedChecksum = StrKey.CalculateChecksum(payload);

            if (!expectedChecksum.IsIdentical(checksum))
            {
                throw new FormatException("Checksum invalid");
            }

            return(data);
        }
        public static byte[] DecodeCheck(VersionByte versionByte, string encoded)
        {
            byte[] decoded = Base32Encoding.ToBytes(encoded);
            byte decodedVersionByte = decoded[0];
            byte[] payload = new byte[decoded.Length - 2];
            Array.Copy(decoded, payload, decoded.Length - 2);
            byte[] data = new byte[payload.Length - 1];
            Array.Copy(payload, 1, data, 0, payload.Length - 1);
            byte[] checksum = new byte[2];
            Array.Copy(decoded, decoded.Length - 2, checksum, 0, 2);


            if (decodedVersionByte != (byte)versionByte)
            {
                throw new FormatException("Version byte is invalid");
            }

            byte[] expectedChecksum = StrKey.CalculateChecksum(payload);

            if (!expectedChecksum.IsIdentical(checksum))
            {
                throw new FormatException("Checksum invalid");
            }

            return data;
        }
 public static string EncodeCheck(VersionByte versionByte, byte[] data)
 {
     var writer = new ByteWriter();
     writer.Write((byte)versionByte);
     writer.Write(data);
     byte[] checksum = StrKey.CalculateChecksum(writer.ToArray());
     writer.Write(checksum);
     return Base32Encoding.ToString(writer.ToArray());
 }
Пример #5
0
        public static string EncodeCheck(VersionByte versionByte, byte[] data)
        {
            var writer = new Generated.ByteWriter();

            writer.Write((byte)versionByte);
            writer.Write(data);
            byte[] checksum = StrKey.CalculateChecksum(writer.ToArray());
            writer.Write(checksum);
            return(Base32Encoding.ToString(writer.ToArray()));
        }
Пример #6
0
 public static bool IsValid(VersionByte versionByte, string encoded)
 {
     try
     {
         var decoded = DecodeCheck(versionByte, encoded);
         return(decoded.Length == 32);
     }
     catch
     {
         return(false);
     }
 }
Пример #7
0
        public static string EncodeCheck(VersionByte versionByte, byte[] data)
        {
            List <byte> bytes = new List <byte>
            {
                (byte)versionByte
            };

            bytes.AddRange(data);
            byte[] checksum = CalculateChecksum(bytes.ToArray());
            bytes.AddRange(checksum);
            return(Base32Encoding.ToString(bytes.ToArray()));
        }
Пример #8
0
        public static string EncodeCheck(VersionByte versionByte, byte[] data)
        {
            var bytes = new List <byte>
            {
                (byte)versionByte
            };

            bytes.AddRange(data);
            var checksum = CalculateChecksum(bytes.ToArray());

            bytes.AddRange(checksum);
            return(Base32Encoding.ToString(bytes.ToArray(), options => options.OmitPadding = true));
        }
Пример #9
0
        public static bool IsValid(VersionByte versionByte, string encoded)
        {
            try
            {
                var decoded = DecodeCheck(versionByte, encoded);
                // Muxed accounts are encoded as a 64 bit ulong wih 32 bytes of data
                if (versionByte == VersionByte.MUXED_ACCOUNT)
                {
                    return(decoded.Length == 40);
                }

                // All other types have 32 bytes of data
                return(decoded.Length == 32);
            }
            catch
            {
                return(false);
            }
        }
Пример #10
0
        public static bool IsValid(VersionByte versionByte, string encoded)
        {
            if (encoded?.Length != 56)
            {
                return(false);
            }

            try
            {
                var decoded = DecodeCheck(versionByte, encoded);
                if (decoded.Length != 32)
                {
                    return(false);
                }
            }
            catch
            {
                return(false);
            }
            return(true);
        }
Пример #11
0
        public static byte[] DecodeCheck(VersionByte versionByte, string encoded)
        {
            for (var i = 0; i < encoded.Length; i++)
            {
                if (encoded[i] > 127)
                {
                    throw new ArgumentException("Illegal characters in encoded char array.");
                }
            }

            var decoded            = Base32Encoding.ToBytes(encoded);
            var decodedVersionByte = decoded[0];

            var payload = new byte[decoded.Length - 2];

            Array.Copy(decoded, 0, payload, 0, payload.Length);

            var data = new byte[payload.Length - 1];

            Array.Copy(payload, 1, data, 0, data.Length);

            var checksum = new byte[2];

            Array.Copy(decoded, decoded.Length - 2, checksum, 0, checksum.Length);

            if (decodedVersionByte != (byte)versionByte)
            {
                throw new FormatException("Version byte is invalid");
            }

            var expectedChecksum = CalculateChecksum(payload);

            if (!expectedChecksum.SequenceEqual(checksum))
            {
                throw new FormatException("Checksum invalid");
            }

            return(data);
        }