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); }
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()); }
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())); }
public static bool IsValid(VersionByte versionByte, string encoded) { try { var decoded = DecodeCheck(versionByte, encoded); return(decoded.Length == 32); } catch { return(false); } }
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())); }
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)); }
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); } }
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); }
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); }