From 401d9c8565c67cf320e432b1b40403bc68dbdc9d Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Sat, 17 Nov 2018 01:21:34 +0900 Subject: [PATCH] DerivationSchemeParser should not override a label --- BTCPayServer.Tests/UnitTest1.cs | 4 ++++ BTCPayServer/DerivationSchemeParser.cs | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/BTCPayServer.Tests/UnitTest1.cs b/BTCPayServer.Tests/UnitTest1.cs index fea752023..2b2fb9c70 100644 --- a/BTCPayServer.Tests/UnitTest1.cs +++ b/BTCPayServer.Tests/UnitTest1.cs @@ -1322,6 +1322,10 @@ namespace BTCPayServer.Tests result = parser.Parse(tpub); Assert.Equal($"{tpub}-[p2sh]", result.ToString()); + + parser = new DerivationSchemeParser(Network.RegTest); + var parsed = parser.Parse("xpub6DG1rMYXiQtCc6CfdLFD9CtxqhzzRh7j6Sq6EdE9abgYy3cfDRrniLLv2AdwqHL1exiLnnKR5XXcaoiiexf3Y9R6J6rxkJtqJHzNzMW9QMZ-[p2sh]"); + Assert.Equal("tpubDDdeNbNDRgqestPX5XEJM8ELAq6eR5cne5RPbBHHvWSSiLHNHehsrn1kGCijMnHFSsFFQMqHcdMfGzDL3pWHRasPMhcGRqZ4tFankQ3i4ok-[p2sh]", parsed.ToString()); } [Fact] diff --git a/BTCPayServer/DerivationSchemeParser.cs b/BTCPayServer/DerivationSchemeParser.cs index eabcdd6eb..4d018b220 100644 --- a/BTCPayServer/DerivationSchemeParser.cs +++ b/BTCPayServer/DerivationSchemeParser.cs @@ -63,10 +63,14 @@ namespace BTCPayServer electrumMapping.Add(p2wpkh, Array.Empty()); var parts = str.Split('-'); + bool hasLabel = false; for (int i = 0; i < parts.Length; i++) { if (IsLabel(parts[i])) { + if (!hasLabel) + hintedLabels.Clear(); + hasLabel = true; hintedLabels.Add(parts[i].Substring(1, parts[i].Length - 2).ToLowerInvariant()); continue; }