public override KeyValuePair <bool, byte[]> Execute(byte[] data) { byte[] h = new byte[32]; byte[] v = new byte[32]; byte[] r = new byte[32]; byte[] s = new byte[32]; DataWord out_val = null; try { Array.Copy(data, 0, h, 0, 32); Array.Copy(data, 32, v, 0, 32); Array.Copy(data, 64, r, 0, 32); int length = data.Length < 128 ? data.Length - 96 : 32; Array.Copy(data, 96, s, 0, length); ECDSASignature signature = ECDSASignature.FromComponents(r, s, v[31]); if (ValidateV(v) && signature.IsValidComponents) { out_val = new DataWord(ECKey.SignatureToAddress(h, signature)); } } catch { } if (out_val == null) { return(new KeyValuePair <bool, byte[]>(true, new byte[0])); } else { return(new KeyValuePair <bool, byte[]>(true, out_val.Data)); } }