Skip to content

Commit 0cf2151

Browse files
erickcestarirustyrussell
authored andcommitted
bolt11: add new test vector to test public key recovery from high-S signature
1 parent 7f09f9e commit 0cf2151

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

11-payment-encoding.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -773,6 +773,34 @@ Breakdown:
773773
* `7hf8he7ecf7n4ffphs6awl9t6676rrclv9ckg3d3ncn7fct63p6s365duk5wrk202cfy3aj5xnnp5gs3vrdvruverwwq7yzhkf5a3xqp`: signature
774774
* `d05wjc`: Bech32 checksum
775775

776+
> ### Public-key recovery with high-S signature
777+
> lnbc1pvjluezsp5zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zygspp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdpl2pkx2ctnv5sxxmmwwd5kgetjypeh2ursdae8g6twvus8g6rfwvs8qun0dfjkxaq9qrsgq357wnc5r2ueh7ck6q93dj32dlqnls087fxdwk8qakdyafkq3yap2r09nt4ndd0unm3z9u5t48y6ucv4r5sg7lk98c77ctvjczkspk5qprc90gx
778+
779+
Breakdown:
780+
781+
* `lnbc`: prefix, Lightning on Bitcoin mainnet
782+
* `1`: Bech32 separator
783+
* `pvjluez`: timestamp (1496314658)
784+
* `s`: payment secret
785+
* `p5`: `data_length` (`p` = 1, `5` = 20; 1 * 32 + 20 == 52)
786+
* `zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zygs`: payment secret 1111111111111111111111111111111111111111111111111111111111111111
787+
* `p`: payment hash
788+
* `p5`: `data_length` (`p` = 1, `5` = 20; 1 * 32 + 20 == 52)
789+
* `qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypq`: payment hash 0001020304050607080900010203040506070809000102030405060708090102
790+
* `d`: short description
791+
* `pl`: `data_length` (`p` = 1, `l` = 31; 1 * 32 + 31 == 63)
792+
* `2pkx2ctnv5sxxmmwwd5kgetjypeh2ursdae8g6twvus8g6rfwvs8qun0dfjkxaq`: 'Please consider supporting this project'
793+
* `9`: features
794+
* `qr`: `data_length` (`q` = 0, `r` = 3; 0 * 32 + 3 == 3)
795+
* `sgq`: b100000100000000
796+
* `357wnc5r2ueh7ck6q93dj32dlqnls087fxdwk8qakdyafkq3yap2r09nt4ndd0unm3z9u5t48y6ucv4r5sg7lk98c77ctvjczkspk5qp`: signature
797+
* `rc90gx`: Bech32 checksum
798+
* Signature breakdown:
799+
* `8d3ce9e28357337f62da0162d9454df827f83cfe499aeb1c1db349d4d8112742a1bcb35d66d6bf93dc445e51753935cc32a3a411efd8a7c7bd85b25815a01b50` hex of signature data (32-byte r, 32-byte s)
800+
* `1` (int) recovery flag contained in `signature`
801+
* `6c6e62630b25fe64500d04444444444444444444444444444444444444444444444444444444444444444021a00008101820283038404800081018202830384048000810182028303840480810343f506c6561736520636f6e736964657220737570706f7274696e6720746869732070726f6a6563740500e08000` hex of data for signing (prefix + data after separator up to the start of the signature)
802+
* `6daf4d488be41ce7cbb487cab1ef2975e5efcea879b20d421f0ef86b07cbb987` hex of SHA256 of the preimage
803+
776804
# Examples of Invalid Invoices
777805

778806
> # Same, but adding invalid unknown feature 100

0 commit comments

Comments
 (0)