Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update tails.key #1631

Merged
merged 1 commit into from
Apr 4, 2024
Merged

Update tails.key #1631

merged 1 commit into from
Apr 4, 2024

Conversation

0xF4CED
Copy link
Contributor

@0xF4CED 0xF4CED commented Apr 3, 2024

Key expired: 2024-01-04
Replace with clean export of updated Tails signing key.


EDITS (tlaurion) prior of merging.
Reproduction notes:

rm -rf /tmp/tails-signing/
wget -q https://tails.boum.org/tails-signing.key -O tails-signing.key
mkdir -p /tmp/tails-signing/
gpg --home /tmp/tails-signing/ --import tails-signing.key 
gpg --home /tmp/tails-signing/ --export --armor --export-options export-minimal,export-clean [email protected] > ~/heads/initrd/etc/distro/keys/tails.key

Confirmation PR needed at #1631 (comment)

@0xF4CED
Copy link
Contributor Author

0xF4CED commented Apr 3, 2024

The new key expires: 2025-01-25, maybe some bot or gh tool can set a reminder for the next time.

@tlaurion
Copy link
Collaborator

tlaurion commented Apr 3, 2024

Replication notes reduced from last year update (this is not key change: this is public key expiration date which is not as dramatic as in the past. Newer images should still boot but saying the public key expired (while still in use).

Anyway! Thank you for this.

Tried to replicate key in this PR with notes of last year:#1296 (comment)

wget -q https://tails.boum.org/tails-signing.key -O tails-signing.key
mkdir -p /tmp/tails-signing/
gpg --home /tmp/tails-signing/ --import tails-signing.key 
gpg --home /tmp/tails-signing/ --edit-key [email protected]
gpg> minimize
gpg> quit
Save changes? (y/N) y
gpg --home /tmp/tails-signing/ --export --armor [email protected] > ~/heads/initrd/etc/distro/keys/tails.key

Doing so results in the following diff:


diff --git a/initrd/etc/distro/keys/tails.key b/initrd/etc/distro/keys/tails.key
index d2bee8cf440..35e394134bf 100644
--- a/initrd/etc/distro/keys/tails.key
+++ b/initrd/etc/distro/keys/tails.key
@@ -152,7 +152,9 @@ nNYUOyYDpAxtriefn6442byCK5FlFc9P/VWFIR952GaFyGQuA+1kHckunzP9g5eB
 w3FQbIvq02KittfdKwRRPw/8RzFVGyM/GLS+UM7UNzCHnWPQiR3w6rZ3xTe8IOgR
 ORUJoiwJ/6HV1FXRdCfrKC9cUBniigOx9Cn1g201XHiua/yedfV00GWnOBDeqDFB
 pCBrkccGqUA50KOiqBrDK7bwGnYBI1ZdVAQGQ2UVh5R5gi0fLDI19pDdeirOcNj4
-gyqH3EH3cSS/Snj+jmNoE2hruQINBFfFgTEBEAC2tjoU5TRY7vKa6CAjUt1TJwx8
+gyqH3EH3cSS/Snj+jmNoE2hriF4EEBYIAAYFAlpea4QACgkQG7icBgI2dEk8YwEA
+hv0jnehPJEEVjLpmp//s4/B1kclyGIfocV0Xzg3q+YIA/jQR3PKFCLStRINId17i
+Tk0HJQku7ymdUNg7Q7rZowgJuQINBFfFgTEBEAC2tjoU5TRY7vKa6CAjUt1TJwx8
 IExEuPkCHgSJG58w3RPuVOVEpDEjKf+fArpCEVDq1RpVogEmZXZ9BvJzaz5ZWXHX
 A6kC1SJ3AScDTiDkR3jnwY6aRhFjJaKlrklfplsIO3nlAuK8UqulYQbHvIGTnXeO
 pf1Ts14G6YXDk8dr9RB2DFDKRtTCJX3L4vR0Qj7NJDvn8Jcdg0btZeE98eboCBk0
@@ -400,5 +402,5 @@ qMOyrwueTn7yyfgB31gTNpFBIjl9UpmE6UDFsKXldv9VI4/kSKkWTpGlnMgvldWO
 drlV6i92oMPd74bAoL41D+Xs6BzkGneYBtrZEG/FKSAIp51g61pkHv5p+aEJbUFM
 X/ShcwYnmPtACpDJHDPIVcMB6lGo+iSKJxa8LUOEypsbVWezwU2PP57D+9TovcMI
 Ruc4phcBzSePlPaAvN6C
-=+1G+
+=gihN
 -----END PGP PUBLIC KEY BLOCK-----

Where if I replace last command by
gpg --home /tmp/tails-signing/ --export --armor --export-options export-minimal [email protected] > ~/heads/initrd/etc/distro/keys/tails.key

Most is different:

diff --git a/initrd/etc/distro/keys/tails.key b/initrd/etc/distro/keys/tails.key
index d2bee8cf440..76d72d98c63 100644
--- a/initrd/etc/distro/keys/tails.key
+++ b/initrd/etc/distro/keys/tails.key
@@ -38,367 +38,265 @@ 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
-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
-AVn2wB4sum++k6CTj6hE3eVTgS/BtdPQ4IqrhmwVCet0tXtarQK4Smsgszd/1+vK
-slOF/uXGGtZWlTyNVTSF7NHUgw2EGmbnOzAcko3FjTDmo4NKxqhyPVXwp3Wg4Fug
-45xgkyHIiLBz8hd+KwkxQRiPWcJPWwWeP/Wxzb8iY2r2MUNh6EtOsDMkMcj6lpX0
-L3IHXjnFRPDubBK3Hc7daDTQz4THoQ8M6m1RRqXCxL4lkcyZsimcZwsXMWuX70xf
-4t7c5NWuH0EAWWCe0i/U6P+O5gq8nT5R39rnNFcocAPWtJ/F/cCJneeva/O6+/cV
-GIGOBj3tQpXT5HPVxktXl5meCanWvkaccLTNWxnUECYa9td+IwFExiAWh9xKG5Q7
-uV3TlOIaaPQVgRd5t9h+85sIZQ2gmhT4cykvgj7RABEBAAGJAmUEKAEKAE8FAlYy
-C+lIHQNUaGlzIHRlc3Qga2V5IHdhcyBuZXZlciBzdG9yZWQgb24gYW55IHBlcnNp
-c3RlbnQgbWVkaWEgYW5kIGlzIG5vdyBsb3N0AAoJENu4ArJYrNhPi3YP/23Pk9WT
-z13Q7v9vwtNJm9IVqUE3SOp3Os/W8I3alh6hrcYD5INwWml7lrk/GhcEU3plNdGu
-yice5VeAVETJpEJBI4iHw6sdMWImVFG/2xhSH94X4Jj1VOdefUieGUizLcPz92cq
-kZ6W5Tc/8tFDfg0qW2cxz2Jpl7iCJsy495G2WcxMV0e/XCCKlfyFd5T5hy3GmT7r
-shOHmfiNsGgusoo/s1tBUYoRuHd2cI2yIj0g2iOiLOAbRABbUkRAed3g0D8KNdxX
-+25fJV1ZcqJonyikP1QPnslIxUsMuB6srKz2nMSF8kRHy3RjSJr1BrA60SxDhoqJ
-YAWcpc3OtR2PcB3qkYqLEAkiZLAo/F3L9PaeKLK6LbeTZlpXUqynZz3bYm/r6+Qw
-gkqe2pxHG2l5epyinwEqWqaJEGZrYq8RWEHVHgpGvU8zhCb5MJgpaC4H677iicbJ
-+bFGb7GHxAHzHJW4/xKT1+tWXKLij7bYVM9+GQHJtpfPLCZP09wZb+bp/58e8iDi
-OCq6XMpdcWsIw2JPQAhHWcc2LwydhzgdNeC/pYog0T6KcUKs2tyBzWQYS+qezdaz
-LNrD2IQhpED+zYSjzFMkzeaTaVBTfGIAfvvmbmPdmAO/4cjfN5d8cTLXCslvqOWf
-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
-Ruc4phcBzSePlPaAvN6C
-=+1G+
+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
+=8z3k
 -----END PGP PUBLIC KEY BLOCK-----

May I ask what commands you used to generate the public key pushed in this PR @0xF4CED ?

This PR:

user@heads-tests-deb12:~/heads$ ls -al ~/heads/initrd/etc/distro/keys/tails.key 
-rw-r--r-- 1 user user 26165 Apr  3 19:43 /home/user/heads/initrd/etc/distro/keys/tails.key

With replicated minimize instructions (same size but not exact content, which is why i'm curious):

user@heads-tests-deb12:~/heads$ ls -al ~/heads/initrd/etc/distro/keys/tails.key 
-rw-r--r-- 1 user user 26165 Apr  3 19:49 /home/user/heads/initrd/etc/distro/keys/tails.key

With added export-minimal export-options::

user@heads-tests-deb12:~/heads$ gpg --home /tmp/tails-signing/ --export --armor --export-options export-minimal [email protected] > ~/heads/initrd/etc/distro/keys/tails.key
gpg: WARNING: unsafe permissions on homedir '/tmp/tails-signing'
user@heads-tests-deb12:~/heads$ ls -al ~/heads/initrd/etc/distro/keys/tails.key 
-rw-r--r-- 1 user user 19441 Apr  3 19:47 /home/user/heads/initrd/etc/distro/keys/tails.key

Thanks!

@tlaurion
Copy link
Collaborator

tlaurion commented Apr 3, 2024

@0xF4CED Modified past comment (in case you reply to emails)

@0xF4CED
Copy link
Contributor Author

0xF4CED commented Apr 3, 2024

Sure. I wanted to use export-minimal at first, but then I inspected the key that is currently in this repo, and it appeared to me that the last time the key was updated it must have been exported only with --export-options export-clean and so I did that too.

gpg --armor --export-options export-clean --export A490D0F4D311A4153E2BB7CADBB802B258ACD84F > tails.key

is what I used.

@tlaurion
Copy link
Collaborator

tlaurion commented Apr 4, 2024

Sure. I wanted to use export-minimal at first, but then I inspected the key that is currently in this repo, and it appeared to me that the last time the key was updated it must have been exported only with --export-options export-clean and so I did that too.

gpg --armor --export-options export-clean --export A490D0F4D311A4153E2BB7CADBB802B258ACD84F > tails.key

is what I used.

Combination of miniziming within gpg + exporting export-minimal smalls it down even more.
Can you confirm size and push?

Key expired: 2024-01-04
Replace with clean export of updated [Tails](https://tails.net/tails-signing.key) signing key.

Signed-off-by: 0xF4CED <[email protected]>
@0xF4CED
Copy link
Contributor Author

0xF4CED commented Apr 4, 2024

Should be fine now. Can you confirm?

@0xF4CED
Copy link
Contributor Author

0xF4CED commented Apr 4, 2024

Newer images should still boot but saying the public key expired (while still in use).

I think this is currently not the case for the latest releases as they added a new subkey E1693B1DAB525F2AAD6702DCE5DBA2E186D5BAFC on 2023-10-03 which is used to sign the new versions, causing the signature verification in heads to fail atm (Can't check signature: No public key).

@tlaurion
Copy link
Collaborator

tlaurion commented Apr 4, 2024

Not sure why I get different output as if it was not reproducible...
https://github.com/tlaurion/heads/tree/tails-key-2024

tlaurion@104ee83

@0xF4CED maybe going further then minimizing is not reproducible?

@0xF4CED
Copy link
Contributor Author

0xF4CED commented Apr 4, 2024

Not sure tbh. The key in your fork is identical to the one in this pr though.
Edit: seems like my force push slipped through on your review. So we got the same result after all.

@tlaurion
Copy link
Collaborator

tlaurion commented Apr 4, 2024

Not sure tbh. The key in your fork is identical to the one in this pr though. Edit: seems like my force push slipped through on your review. So we got the same result after all.

Confirmed matching.

Testing.

With this PR, latest iso+detached signature on qemu FD drive:

~ # usb-init 
[   58.020076] TRACE: /bin/usb-init(7): main
[   58.086400] TRACE: /bin/tpmr(32): main
[   58.108203] TRACE: /bin/tpmr(232): tpm2_extend
[   58.250533] DEBUG: tpm2 pcrread sha256:4
  sha256:
    4 : 0x3C3EEE8FE10DD1737DABA9FF679BD37AB4B4762D7A442D396E224E810F97E2F9
[   58.374667] DEBUG: media-scan usb
[   58.442467] TRACE: /bin/media-scan(8): main
[   58.831914] TRACE: /etc/gui_functions(18): mount_usb
[   58.918586] TRACE: /bin/mount-usb(6): main
[   58.931412] DEBUG: Parameters: --mode=ro, --device=empty, --mountpoint=/media, --pass=
[   58.940679] TRACE: Under /etc/ash_functions:enable_usb
[   58.989935] TRACE: /sbin/insmod(9): main
[   59.062446] DEBUG: Extending TPM PCR 5 with /lib/modules/ehci-hcd.ko prior of usage
[   59.127179] TRACE: /bin/tpmr(32): main
[   59.160262] TRACE: /bin/tpmr(232): tpm2_extend
[   59.283065] DEBUG: tpm2 pcrread sha256:5
  sha256:
    5 : 0xA395394C6D941E3CC5F2C796C641FA42F8EC5E00960598CD50BD38D2EE16E733
[   59.408941] DEBUG: Loading /lib/modules/ehci-hcd.ko with busybox insmod
[   59.427332] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[   59.495842] TRACE: /sbin/insmod(9): main
[   59.575058] DEBUG: Extending TPM PCR 5 with /lib/modules/uhci-hcd.ko prior of usage
[   59.635236] TRACE: /bin/tpmr(32): main
[   59.659476] TRACE: /bin/tpmr(232): tpm2_extend
[   59.764626] DEBUG: tpm2 pcrread sha256:5
  sha256:
    5 : 0xA741872C69DF36E9BA55D2486E26BEAF2BB702A7F26096D0BDF7DB0C2822A052
[   59.881139] DEBUG: Loading /lib/modules/uhci-hcd.ko with busybox insmod
[   59.897685] uhci_hcd: USB Universal Host Controller Interface driver
[   59.949214] TRACE: /sbin/insmod(9): main
[   60.043291] DEBUG: Extending TPM PCR 5 with /lib/modules/ohci-hcd.ko prior of usage
[   60.112989] TRACE: /bin/tpmr(32): main
[   60.146714] TRACE: /bin/tpmr(232): tpm2_extend
[   60.287684] DEBUG: tpm2 pcrread sha256:5
  sha256:
    5 : 0xAA29A13913D3E47076AB146587DFE2226FA76726E9E61E2CF40A7C396AC206EE
[   60.453318] DEBUG: Loading /lib/modules/ohci-hcd.ko with busybox insmod
[   60.466088] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[   60.514229] TRACE: /sbin/insmod(9): main
[   60.626256] DEBUG: Extending TPM PCR 5 with /lib/modules/ohci-pci.ko prior of usage
[   60.673212] TRACE: /bin/tpmr(32): main
[   60.698234] TRACE: /bin/tpmr(232): tpm2_extend
[   60.853790] DEBUG: tpm2 pcrread sha256:5
  sha256:
    5 : 0xE72EFE2A075A28B0A78D9939B15F35D6953E26B1F9EB41A4A67C173610D7C4ED
[   61.002700] DEBUG: Loading /lib/modules/ohci-pci.ko with busybox insmod
[   61.017598] ohci-pci: OHCI PCI platform driver
[   63.110399] TRACE: /sbin/insmod(9): main
[   63.193369] DEBUG: Extending TPM PCR 5 with /lib/modules/ehci-pci.ko prior of usage
[   63.237178] TRACE: /bin/tpmr(32): main
[   63.266481] TRACE: /bin/tpmr(232): tpm2_extend
[   63.416708] DEBUG: tpm2 pcrread sha256:5
  sha256:
    5 : 0xEEB8D545C4373804C633C589050D2D5357D8506B1B755AFC52B7D57947DD68C3
[   63.561740] DEBUG: Loading /lib/modules/ehci-pci.ko with busybox insmod
[   63.573754] ehci-pci: EHCI PCI platform driver
[   63.625243] TRACE: /sbin/insmod(9): main
[   63.704149] DEBUG: Extending TPM PCR 5 with /lib/modules/xhci-hcd.ko prior of usage
[   63.758621] TRACE: /bin/tpmr(32): main
[   63.784033] TRACE: /bin/tpmr(232): tpm2_extend
[   63.923593] DEBUG: tpm2 pcrread sha256:5
  sha256:
    5 : 0xCDE10D2C2C1FC0374BA5BFC9F8D1AED8AB89758B14D7E7C40B1840344D4B37D7
[   64.037174] DEBUG: Loading /lib/modules/xhci-hcd.ko with busybox insmod
[   64.109231] TRACE: /sbin/insmod(9): main
[   64.183565] DEBUG: Extending TPM PCR 5 with /lib/modules/xhci-pci.ko prior of usage
[   64.236327] TRACE: /bin/tpmr(32): main
[   64.267192] TRACE: /bin/tpmr(232): tpm2_extend
[   64.390683] DEBUG: tpm2 pcrread sha256:5
  sha256:
    5 : 0x08AA3C13A45C28706BA7A2C7E49EB2A18FD19217A039A6073A934C3A41227FF6
[   64.546404] DEBUG: Loading /lib/modules/xhci-pci.ko with busybox insmod
[   64.562728] xhci_hcd 0000:00:04.0: xHCI Host Controller
[   64.566025] xhci_hcd 0000:00:04.0: new USB bus registered, assigned bus number 1
[   64.573569] xhci_hcd 0000:00:04.0: hcc params 0x00087001 hci version 0x100 quirks 0x0000000000000010
[   64.586439] hub 1-0:1.0: USB hub found
[   64.592753] hub 1-0:1.0: 4 ports detected
[   64.604864] xhci_hcd 0000:00:04.0: xHCI Host Controller
[   64.610252] xhci_hcd 0000:00:04.0: new USB bus registered, assigned bus number 2
[   64.613261] xhci_hcd 0000:00:04.0: Host supports USB 3.0 SuperSpeed
[   64.616535] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[   64.619925] hub 2-0:1.0: USB hub found
[   64.625438] hub 2-0:1.0: 4 ports detected
[   64.643701] TRACE: /etc/functions(143): enable_usb_storage
Scanning for USB storage devices...
[   64.705632] TRACE: /sbin/insmod(9): main
[   64.795161] DEBUG: Extending TPM PCR 5 with /lib/modules/usb-storage.ko prior of usage
[   64.862683] TRACE: /bin/tpmr(32): main
[   64.889357] TRACE: /bin/tpmr(232): tpm2_extend
[   64.980821] DEBUG: tpm2 pcrread sha256:5
[   65.008325] usb 2-2: new SuperSpeed Gen 1 USB device number 2 using xhci_hcd
[   65.080514] DEBUG: Loading /lib/modules/usb-storage.ko with busybox insmod
[   65.095553] usb-storage 2-2:1.0: USB Mass Storage device detected
[   65.101362] scsi host6: usb-storage 2-2:1.0
[   65.106573] usbcore: registered new interface driver usb-storage
[   65.147616] TRACE: /etc/functions(180): list_usb_storage
[   65.176939] DEBUG: Listing USB storage devices (including partitions)
[   65.195525] usb 1-1: new high-speed USB device number 2 using xhci_hcd
[   65.575195] usb 1-3: new full-speed USB device number 3 using xhci_hcd
[   66.127551] scsi 6:0:0:0: Direct-Access     QEMU     QEMU HARDDISK    2.5+ PQ: 0 ANSI: 5
[   66.138679] sd 6:0:0:0: Power-on or device reset occurred
[   66.142599] sd 6:0:0:0: Attached scsi generic sg1 type 0
[   66.152956] sd 6:0:0:0: [sda] 6291456 512-byte logical blocks: (3.22 GB/3.00 GiB)
[   66.160391] sd 6:0:0:0: [sda] Write Protect is off
[   66.166212] sd 6:0:0:0: [sda] Mode Sense: 63 00 00 08
[   66.170171] sd 6:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[   66.185545]  sda: sda1
[   66.194155] sd 6:0:0:0: [sda] Attached SCSI disk
[   66.293844] TRACE: /etc/functions(180): list_usb_storage
[   66.307728] DEBUG: Listing USB storage devices (including partitions)
[   66.393833] DEBUG: USB storage device of size greater then 0: /sys/block/sda
[   66.454721] DEBUG: USB storage device with partition table: /dev/sda
[   66.494843] DEBUG: Cleaning /media directory
[   66.521596] TRACE: /etc/functions(180): list_usb_storage
[   66.551268] DEBUG: Listing USB storage devices (including partitions)
[   66.635153] DEBUG: USB storage device of size greater then 0: /sys/block/sda
[   66.713993] DEBUG: USB storage device with partition table: /dev/sda
[   66.790639] DEBUG: Checking if /dev/sda1 is a LUKS device/partition
[   66.855428] DEBUG: Selected USB partition is not a LUKS device, continuing...
[   66.879641] DEBUG: Mounting /dev/sda1 as read-only
[   66.900376] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)








┌───────────────────────┤ Select your ISO boot option ├────────────────────────┐
│ Choose the ISO boot option [1-1]:                                            │
│                                                                              │
│                         1 /media/tails-amd64-6.1.iso                         │
│                         a Abort                                              │
│                                                                              │
│                                                                              │
│                     <Ok>                         <Cancel>                    │
│                                                                              │
└──────────────────────────────────────────────────────────────────────────────┘






[   72.239534] DEBUG: kexec-iso-init /media/tails-amd64-6.1.iso tails-amd64-6.1.iso /dev/sda1
[   72.305352] TRACE: /bin/kexec-iso-init(7): main
+++ Verifying ISO
[   72.373069] TRACE: /bin/gpgv(5): main
gpg: Signature made Tue Mar 26 13:57:20 2024 UTC
gpg:                using RSA key E1693B1DAB525F2AAD6702DCE5DBA2E186D5BAFC
gpg: Good signature from "Tails developers (offline long-term identity key) <[email protected]>" [ultimate]
gpg:                 aka "Tails developers <[email protected]>" [ultimate]
+++ Mounting ISO and booting

Without this PR:

+++ Verifying ISO
[   48.313146] TRACE: /bin/gpgv(5): main
gpg: Signature made Tue Mar 26 13:57:20 2024 UTC
gpg:                using RSA key E1693B1DAB525F2AAD6702DCE5DBA2E186D5BAFC
gpg: Can't check signature: No public key
[  147.658952]  !!! ERROR: ISO signature failed !!!

So took the freedom to modify OP with reproducibility step so that can be reused in a year.
Merging.

Copy link
Collaborator

@tlaurion tlaurion left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All good per #1631 (comment)

@tlaurion tlaurion merged commit ee1978f into linuxboot:master Apr 4, 2024
36 checks passed
@tlaurion
Copy link
Collaborator

tlaurion commented Apr 4, 2024

@0xF4CED Thanks for your contribution!

@0xF4CED
Copy link
Contributor Author

0xF4CED commented Apr 4, 2024

Nice, thanks!

@0xF4CED 0xF4CED deleted the tails-key-2024 branch April 4, 2024 20:16
tlaurion added a commit to tlaurion/heads that referenced this pull request Sep 7, 2024
Repro notes per last update at linuxboot#1631 (comment)

rm -rf /tmp/tails-signing/
wget -q https://tails.boum.org/tails-signing.key -O tails-signing.key
mkdir -p /tmp/tails-signing/
gpg --home /tmp/tails-signing/ --import tails-signing.key
gpg --home /tmp/tails-signing/ --export --armor --export-options export-minimal,export-clean [email protected] > ~/heads/initrd/etc/distro/keys/tails.key

Signed-off-by: Thierry Laurion <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants