From f7210e0726e5543e718d473d48babfc309f8e80f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1=20autouploader?= Date: Fri, 1 Mar 2024 19:45:12 +0000 Subject: [PATCH] Manpage update by job 1160235 --- tzpfms.pdf | Bin 81311 -> 86977 bytes tzpfms.ps | 1729 ++++++++++++++++++++++++++-------------------------- 2 files changed, 876 insertions(+), 853 deletions(-) diff --git a/tzpfms.pdf b/tzpfms.pdf index 173e61f3413a64e9e0cfffb2aa76b220b5be6643..e7323f9117ad5a002dc9ee3cbedbb2e16cdab62b 100644 GIT binary patch delta 67898 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

WOi6 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

$+}06d(Ox+T`(Qj^wV*h9J+Kf*{`142J+t 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 y{9JtEyg-0BzcfHvTtw*q+rj`%L> setpagedevice %%EndFeature %%IncludeResource: font Times-Roman +%%IncludeResource: font Times-Italic %%IncludeResource: font Times-Bold %%IncludeResource: font Courier-Bold %%IncludeResource: font Courier-Oblique %%IncludeResource: font Courier -%%IncludeResource: font Times-Italic %%IncludeResource: font Symbol grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron @@ -267,125 +267,131 @@ def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron /egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis /eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash /ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def -/Times-Italic@0 ENC0/Times-Italic RE/Courier@0 ENC0/Courier RE -/Courier-Oblique@0 ENC0/Courier-Oblique RE/Courier-Bold@0 ENC0 -/Courier-Bold RE/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 ENC0 -/Times-Roman RE +/Courier@0 ENC0/Courier RE/Courier-Oblique@0 ENC0/Courier-Oblique RE +/Courier-Bold@0 ENC0/Courier-Bold RE/Times-Bold@0 ENC0/Times-Bold RE +/Times-Italic@0 ENC0/Times-Italic RE/Times-Roman@0 ENC0/Times-Roman RE %%EndSetup %%Page: 1 1 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(ZFS-FIDO2-ADD-B)72 48 Q -.4(AC)-.35 G 42.103 -(KUP\(8\) System).4 F(Manager')2.5 E 2.5(sM)-.55 G 39.602 -(anual ZFS-FIDO2-ADD-B)-2.5 F -.4(AC)-.35 G(KUP\(8\)).4 E/F1 10 -/Times-Bold@0 SF -.2(NA)72 84 S(ME).2 E/F2 10/Courier-Bold@0 SF -(zfs-fido2-add-backup)108 96 Q F0 2.5<8a61>2.5 G(llo)-2.5 E 2.5(wa)-.25 -G(nother FIDO2 de)-2.5 E(vice to unlock ZFS dataset)-.25 E F1(SYNOPSIS) -72 112.8 Q F2(zfs-fido2-add-backup)108 124.8 Q/F3 10/Courier-Oblique@0 -SF(dataset)2.5 E F1(DESCRIPTION)72 141.6 Q F0(After)108 153.6 Q/F4 10 -/Courier@0 SF(zfs-fido2-change-key)7.564 E F0 5.064(\(8\) deri)B -.15 -(ve)-.25 G 7.563(st).15 G 5.063(he k)-7.563 F 5.363 -.15(ey f)-.1 H -5.063(or a dataset from a FIDO2 de).15 F(vice,)-.25 E F2 -(zfs-fido2-add-backup)108 165.6 Q F0(may be e)2.5 E -.15(xe)-.15 G -(cuted to e).15 E(xtend this to an)-.15 E 2.5(yn)-.15 G -(umber of additional de)-2.5 E(vices.)-.25 E .273(First, the wrapping k) -108 182.4 R .574 -.15(ey i)-.1 H 2.774(se).15 G .274 -(xtracted as normally during)-2.924 F F4(zfs-fido2-load-key)2.774 E F0 -.274(\(8\), then a credential)B 1.604(is made as-if during)108 194.4 R -F4(zfs-fido2-change-key)4.104 E F0 1.604(\(8\) \(e)B 1.604 -(xcept the "primary" de)-.15 F 1.603(vice and all the ones)-.25 F .185 -(holding backups are e)108 206.4 R .185(xcluded from the search\); ho) --.15 F(we)-.25 E -.15(ve)-.25 G .985 -.4(r, t).15 H(he).4 E F4 -(hmac-secret)2.685 E F0 .185(is instead used as a sym-)2.685 F 1.555 -(metric AES-256-GCM \()108 218.4 R F4(EVP_CIPHER-AES)A F0 1.555 -(\(7ssl\)\) k)B 1.855 -.15(ey t)-.1 H 4.055(oe).15 G 1.555 -(ncrypt the wrapping k)-4.055 F 1.855 -.15(ey d)-.1 H 1.555 -(irectly with a).15 F(random IV)108 230.4 Q(.)-1.29 E(This turns the)108 -247.2 Q F4(xyz.nabijaczleweli:tzpfms.key)2.5 E F0 -.25(va)2.5 G -(riable into).25 E F3(salt)108 259.2 Q F2(:)A F3(credential-ID)A F2(:)A -F3(credential-public-key)A F0([)A F2(.)A F3(backup-salt)A F2(:)A F3 -(backup-credential-ID)108 271.2 Q F2(:)A F3 -(backup-credential-public-key)A F2(:)A F3(IV)A F2(:)A F3(encrypted-key)A -F0 1.666(]...)C F4(tzpfms.key)108 288 Q F0 2.238 +/F0 10/Times-Roman@0 SF 4.998( 504 Gate)72 12 R -.1 +(wa)-.25 G 7.498(yT).1 G 4.998 +(ime-out

504 Gate)-7.848 F -.1(wa)-.25 +G 7.497(yT).1 G(ime-)-7.847 E +(out


nginx
)72 24 Q/F1 +10/Times-Italic@0 SF(ZFS-FIDO2-ADD-B)72 72 Q -.3(AC)-.25 G(KUP).3 E F0 +44.693(\(8\) System)B(Manager')2.5 E 2.5(sM)-.55 G(anual)-2.5 E F1 +(ZFS-FIDO2-ADD-B)44.692 E -.3(AC)-.25 G(KUP).3 E F0(\(8\))A/F2 10 +/Times-Bold@0 SF -.2(NA)72 84 S(ME).2 E F0 +(zfs-\214do2-add-backup \212 allo)108 96 Q 2.5(wa)-.25 G +(nother FIDO2 de)-2.5 E(vice to unlock ZFS dataset)-.25 E F2(SYNOPSIS)72 +112.8 Q/F3 10/Courier-Bold@0 SF(zfs-fido2-add-backup)108 124.8 Q/F4 10 +/Courier-Oblique@0 SF(dataset)2.5 E F2(DESCRIPTION)72 141.6 Q F0(After) +108 153.6 Q F1(zfs-\214do2-c)11.008 E(hang)-.15 E(e-k)-.1 E -.3(ey)-.1 G +F0 8.508(\(8\) deri).3 F -.15(ve)-.25 G 11.008(st).15 G 8.508(he k) +-11.008 F 8.809 -.15(ey f)-.1 H 8.509(or a dataset from a FIDO2 de).15 F +(vice,)-.25 E F3(zfs-fido2-add-backup)108 165.6 Q F0(may be e)2.5 E -.15 +(xe)-.15 G(cuted to e).15 E(xtend this to an)-.15 E 2.5(yn)-.15 G +(umber of additional de)-2.5 E(vices.)-.25 E .479(First, the wrapping k) +108 182.4 R .779 -.15(ey i)-.1 H 2.979(se).15 G .479 +(xtracted as normally during)-3.129 F F1(zfs-\214do2-load-k)2.979 E -.3 +(ey)-.1 G F0 .479(\(8\), then a credential is made).3 F .571 +(as-if during)108 194.4 R F1(zfs-\214do2-c)3.072 E(hang)-.15 E(e-k)-.1 E +-.3(ey)-.1 G F0 .572(\(8\) \(e).3 F .572(xcept the "primary" de)-.15 F +.572(vice and all the ones holding backups are)-.25 F -.15(ex)108 206.4 +S 5.3(cluded from the search\); ho).15 F(we)-.25 E -.15(ve)-.25 G 6.1 +-.4(r, t).15 H(he).4 E/F5 10/Courier@0 SF(hmac-secret)7.8 E F0 5.299 +(is instead used as a symmetric)7.8 F(AES-256-GCM \()108 218.4 Q F1 +(EVP_CIPHER-AES)A F0(\(7ssl\)\) k)A .3 -.15(ey t)-.1 H 2.5(oe).15 G +(ncrypt the wrapping k)-2.5 E .3 -.15(ey d)-.1 H +(irectly with a random IV).15 E(.)-1.29 E(This turns the)108 235.2 Q F5 +(xyz.nabijaczleweli:tzpfms.key)2.5 E F0 -.25(va)2.5 G(riable into).25 E +F4(salt)108 247.2 Q F5(:)A F4(credential-ID)A F5(:)A F4 +(credential-public-key)A F0([)A F5(.)A F4(backup-salt)A F5(:)A F4 +(backup-credential-ID)108 259.2 Q F5(:)A F4 +(backup-credential-public-key)A F5(:)A F4(IV)A F5(:)A F4(encrypted-key)A +F0 1.666(]...)C F5(tzpfms.key)108 276 Q F0 2.238 (is actually a dot-separated list of de)4.738 F 2.238(vice b)-.25 F -4.738(undles. The)-.2 F 2.239(\214rst one is as-described in)4.738 F F4 -(zfs-fido2-change-key)108 300 Q F0 5.181(\(8\). Subsequent)B 2.681 -(ones also include \(identically-encoded\) IVs and en-)5.181 F -(crypted blobs.)108 312 Q F4(zfs-fido2-load-key)108 328.8 Q F0 .081 -(\(8\) shops assertions around de)B .081(vices in a de)-.25 F .082 -(vice-major order \212 depending on)-.25 F(de)108 340.8 Q -(vice numbering, a backup may be loaded e)-.25 E -.15(ve)-.25 G 2.5(ni) -.15 G 2.5(ft)-2.5 G(he primary de)-2.5 E(vice is present.)-.25 E F1 -(ENVIR)72 357.6 Q 1.666(ONMENT V)-.3 F(ARIABLES)-1.35 E F4 -(TZPFMS_PASSPHRASE_HELPER)108 369.6 Q F0 .046(By def)133 381.6 R .045(a\ +4.738(undles. The)-.2 F 2.239(\214rst one is as-described in)4.738 F F1 +(zfs-\214do2-c)108 288 Q(hang)-.15 E(e-k)-.1 E -.3(ey)-.1 G F0 2.5 +(\(8\). Subsequent).3 F +(ones also include \(identically-encoded\) IVs and encrypted blobs.)2.5 +E F1(zfs-\214do2-load-k)108 304.8 Q -.3(ey)-.1 G F0 .775 +(\(8\) shops assertions around de).3 F .775(vices in a de)-.25 F .774 +(vice-major order \212 depending on de)-.25 F(vice)-.25 E +(numbering, a backup may be loaded e)108 316.8 Q -.15(ve)-.25 G 2.5(ni) +.15 G 2.5(ft)-2.5 G(he primary de)-2.5 E(vice is present.)-.25 E F2 +(ENVIR)72 333.6 Q 1.666(ONMENT V)-.3 F(ARIABLES)-1.35 E F5 +(TZPFMS_PASSPHRASE_HELPER)108 345.6 Q F0 .045(By def)133 357.6 R .045(a\ ult, passphrases are prompted for and read in on the standard output an\ -d input streams.)-.1 F(If)5.045 E F4(TZPFMS_PASSPHRASE_HELPER)133 393.6 -Q F0 1.595(is set and nonempty)4.095 F 4.096(,i)-.65 G 4.096(tw)-4.096 G -1.596(ill be run via)-4.096 F F4(/bin/)4.096 E F2 3.262(sh \255c)B F0 -(to)4.096 E(pro)133 405.6 Q(vide each passphrase, instead.)-.15 E .643 -(The standard output stream of the helper is tied to an anon)133 422.4 R +d input streams.)-.1 F(If)5.046 E F5(TZPFMS_PASSPHRASE_HELPER)133 369.6 +Q F0 .896(is set and nonempty)3.397 F 3.396(,i)-.65 G 3.396(tw)-3.396 G +.896(ill be run via)-3.396 F F1(/bin/)3.396 E F3(sh)A F58.562 E F0 +.896(to pro-)3.396 F(vide each passphrase, instead.)133 381.6 Q .643 +(The standard output stream of the helper is tied to an anon)133 398.4 R .643(ymous \214le and used in its entirety as)-.15 F(the passphrase, e) -133 434.4 Q(xcept for a trailing ne)-.15 E(w-line, if an)-.25 E 3.8 -.65 -(y. T)-.15 H(he ar).65 E(guments are:)-.18 E F4($1)143 446.4 Q F0 -(Pre-formatted noun phrase with all the information belo)160 446.4 Q 1.3 --.65(w, f)-.25 H(or use as a prompt).65 E F4($2)143 458.4 Q F0 -(Either the dataset name or the element of the TPM hierarch)160 458.4 Q -2.5(yb)-.05 G(eing prompted for)-2.5 E F4($3)143 470.4 Q F0("ne)160 -470.4 Q(w" if this is for a ne)-.25 E 2.5(wp)-.25 G -(assphrase, otherwise blank)-2.5 E F4($4)143 482.4 Q F0("ag)160 482.4 Q +133 410.4 Q(xcept for a trailing ne)-.15 E(w-line, if an)-.25 E 3.8 -.65 +(y. T)-.15 H(he ar).65 E(guments are:)-.18 E F5($1)143 422.4 Q F0 +(Pre-formatted noun phrase with all the information belo)160 422.4 Q 1.3 +-.65(w, f)-.25 H(or use as a prompt).65 E F5($2)143 434.4 Q F0 +(Either the dataset name or the element of the TPM hierarch)160 434.4 Q +2.5(yb)-.05 G(eing prompted for)-2.5 E F5($3)143 446.4 Q F0("ne)160 +446.4 Q(w" if this is for a ne)-.25 E 2.5(wp)-.25 G +(assphrase, otherwise blank)-2.5 E F5($4)143 458.4 Q F0("ag)160 458.4 Q (ain" if it')-.05 E 2.5(st)-.55 G -(he second prompt for that passphrase, otherwise blank)-2.5 E .177 -(If the helper doesn')133 499.2 R 2.677(te)-.18 G .177 -(xist \(the shell e)-2.827 F .177(xits with)-.15 F F1(127)2.677 E F0 -.178(\), a diagnostic is issued and the normal prompt)B(is used as f)133 -511.2 Q 2.5(all-back. If)-.1 F(it f)2.5 E(ails for an)-.1 E 2.5(yo)-.15 -G(ther reason, the prompting is aborted.)-2.5 E F1 1.666 -(FIDO2 back-end con\214guration)72 528 R(En)87 540 Q(vir)-.4 E .625 -(onment v)-.18 F(ariables)-.1 E F4(FIDO_DEBUG)108 552 Q F0 -(If set, enables lib\214do2 deb)173 552 Q -(ug logging to the standard error stream.)-.2 E F1(De)87 568.8 Q .625 -(vice selection)-.15 F F0 .727(When creating, the \214rst de)108 580.8 R -.727(vice which supports the)-.25 F F4(hmac-secret)3.226 E F0 -.15(ex) -3.226 G .726(tension is used.).15 F .726(When loading,)5.726 F -(the assertion is shopped around to e)108 592.8 Q -.15(ve)-.25 G -(ry such de).15 E(vice.)-.25 E F1 .625(See also)87 609.6 R F0 -(The lib\214do2 documentation at https://de)108 621.6 Q -.15(ve)-.25 G -(lopers.yubico.com/lib\214do2/.).15 E F1 1.666(SPECIAL THANKS)72 638.4 R -F0 1.6 -.8(To a)108 650.4 T(ll who support further de).8 E -.15(ve)-.25 -G(lopment, in particular:).15 E F1<83>128 662.4 Q F0(ThePhD)7.5 E F1<83> -128 674.4 Q F0(Embark Studios)7.5 E F1<83>128 686.4 Q F0(Jasper Bekk)7.5 -E(ers)-.1 E F1<83>128 698.4 Q F0(EvModder)7.5 E F1(REPOR)72 715.2 Q -1.666(TING B)-.4 F(UGS)-.1 E F0(https://todo.sr)108 727.2 Q -(.ht/\001nabijaczle)-.55 E(weli/fzifdso)-.25 E F4 -(\001nabijaczleweli/tzpfms@lists.sr.ht)108 744 Q F0 83.762(,a)C(rchi) --83.762 E -.15(ve)-.25 G 83.763(da).15 G(t)-83.763 E(https://lists.sr) -108 756 Q(.ht/\001nabijaczle)-.55 E(weli/tzpfms.)-.25 E(fzifdso 0)72 -817.889 Q(February 29, 2024)153.568 E(1)183.837 E 0 Cg EP +(he second prompt for that passphrase, otherwise blank)-2.5 E .178 +(If the helper doesn')133 475.2 R 2.678(te)-.18 G .178 +(xist \(the shell e)-2.828 F .177(xits with)-.15 F F2(127)2.677 E F0 +.177(\), a diagnostic is issued and the normal prompt)B(is used as f)133 +487.2 Q 2.5(all-back. If)-.1 F(it f)2.5 E(ails for an)-.1 E 2.5(yo)-.15 +G(ther reason, the prompting is aborted.)-2.5 E F2 1.666 +(FIDO2 back-end con\214guration)72 504 R(En)87 516 Q(vir)-.4 E .625 +(onment v)-.18 F(ariables)-.1 E F5(FIDO_DEBUG)108 528 Q F0 +(If set, enables lib\214do2 deb)173 528 Q +(ug logging to the standard error stream.)-.2 E F2(De)87 544.8 Q .625 +(vice selection)-.15 F F0 .726(When creating, the \214rst de)108 556.8 R +.726(vice which supports the)-.25 F F5(hmac-secret)3.227 E F0 -.15(ex) +3.227 G .727(tension is used.).15 F .727(When loading,)5.727 F +(the assertion is shopped around to e)108 568.8 Q -.15(ve)-.25 G +(ry such de).15 E(vice.)-.25 E F2 .625(See also)87 585.6 R F0 +(The lib\214do2 documentation at https://de)108 597.6 Q -.15(ve)-.25 G +(lopers.yubico.com/lib\214do2/.).15 E F2 1.666(SPECIAL THANKS)72 614.4 R +F0 1.6 -.8(To a)108 626.4 T(ll who support further de).8 E -.15(ve)-.25 +G(lopment, in particular:).15 E F2<83>128 638.4 Q F0(ThePhD)7.5 E F2<83> +128 650.4 Q F0(Embark Studios)7.5 E F2<83>128 662.4 Q F0(Jasper Bekk)7.5 +E(ers)-.1 E F2<83>128 674.4 Q F0(EvModder)7.5 E F2(REPOR)72 691.2 Q +1.666(TING B)-.4 F(UGS)-.1 E F0(https://todo.sr)108 703.2 Q +(.ht/\001nabijaczle)-.55 E(weli/fzifdso)-.25 E F1(\001nabijaczle)108 720 +Q(weli/tzpfms@lists.sr)-.15 E(.ht)-1.11 E F0 2.5(,a)C(rchi)-2.5 E -.15 +(ve)-.25 G 2.5(da).15 G 2.5(th)-2.5 G(ttps://lists.sr)-2.5 E +(.ht/\001nabijaczle)-.55 E(weli/tzpfms.)-.25 E(fzifdso 0)72 817.889 Q +(February 29, 2024)153.568 E(1)183.837 E 0 Cg EP %%Page: 1 2 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF 41.363(ZFS-FIDO2-CHANGE-KEY\(8\) System)72 48 R -(Manager')2.5 E 2.5(sM)-.55 G 38.862(anual ZFS-FIDO2-CHANGE-KEY\(8\)) --2.5 F/F1 10/Times-Bold@0 SF -.2(NA)72 84 S(ME).2 E/F2 10/Courier-Bold@0 -SF(zfs-fido2-change-key)108 96 Q F0 2.5<8a63>2.5 G(hange ZFS dataset k) --2.5 E .3 -.15(ey t)-.1 H 2.5(oo).15 G(ne authenticated by a FIDO2 de) --2.5 E(vice)-.25 E F1(SYNOPSIS)72 112.8 Q F2(zfs-fido2-add-backup)108 -124.8 Q F0([)2.5 E F21.666 E/F3 10/Courier-Oblique@0 SF -(backup-file)6 E F0(])A F3(dataset)2.5 E F1(DESCRIPTION)72 141.6 Q F0 -2.867 -.8(To n)108 153.6 T 1.267(ormalise the).8 F F3(dataset)3.767 E F0 -(,)A F2(zfs-fido2-add-backup)3.766 E F0 1.266 -(will open its encryption root in its stead.)3.766 F F2 -(zfs-fido2-add-backup)108 165.6 Q F0(will)14.654 E/F4 10/Times-Italic@0 -SF(ne)14.654 E(ver)-.15 E F0 12.154(create or destro)14.654 F 14.655(ye) --.1 G 12.155(ncryption roots; use)-14.655 F/F5 10/Courier@0 SF -(zfs-change-key)108 177.6 Q F0(\(8\) for that.)A +/F0 10/Times-Italic@0 SF(ZFS-FIDO2-CHANGE-KEY)72 48 Q/F1 10 +/Times-Roman@0 SF 45.243(\(8\) System)B(Manager')2.5 E 2.5(sM)-.55 G +(anual)-2.5 E F0(ZFS-FIDO2-CHANGE-KEY)45.242 E F1(\(8\))A/F2 10 +/Times-Bold@0 SF -.2(NA)72 84 S(ME).2 E F1(zfs-\214do2-change-k)108 96 Q +.3 -.15(ey \212 c)-.1 H(hange ZFS dataset k).15 E .3 -.15(ey t)-.1 H 2.5 +(oo).15 G(ne authenticated by a FIDO2 de)-2.5 E(vice)-.25 E F2(SYNOPSIS) +72 112.8 Q/F3 10/Courier-Bold@0 SF(zfs-fido2-add-backup)108 124.8 Q F1 +([)2.5 E/F4 10/Courier@0 SF1.666 E/F5 10/Courier-Oblique@0 SF +(backup-file)6 E F1(])A F5(dataset)2.5 E F2(DESCRIPTION)72 141.6 Q F1 +2.867 -.8(To n)108 153.6 T 1.267(ormalise the).8 F F5(dataset)3.767 E F1 +(,)A F3(zfs-fido2-add-backup)3.766 E F1 1.266 +(will open its encryption root in its stead.)3.766 F F3 +(zfs-fido2-add-backup)108 165.6 Q F1(will)3.514 E F0(ne)3.514 E(ver)-.15 +E F1 1.014(create or destro)3.514 F 3.515(ye)-.1 G 1.015 +(ncryption roots; use)-3.515 F F0(zfs-c)3.515 E(hang)-.15 E(e-k)-.1 E +-.3(ey)-.1 G F1 1.015(\(8\) for).3 F(that.)108 177.6 Q (First, a connection is made to the FIDO2 de)108 194.4 Q(vice, which) --.25 E F4(must)2.5 E F0(support the)2.5 E F5(hmac-secret)2.5 E F0 -.15 -(ex)2.5 G(tension.).15 E(If)108 211.2 Q F3(dataset)3.244 E F0 -.1(wa) -3.244 G 3.244(sp).1 G(re)-3.244 E .743(viously encrypted with)-.25 F F2 -(fzifdso)3.243 E F0 .743(and the)3.243 F F1(FIDO2)3.243 E F0 .743 +-.25 E F0(must)2.5 E F1(support the)2.5 E F4(hmac-secret)2.5 E F1 -.15 +(ex)2.5 G(tension.).15 E(If)108 211.2 Q F5(dataset)3.244 E F1 -.1(wa) +3.244 G 3.244(sp).1 G(re)-3.244 E .743(viously encrypted with)-.25 F F3 +(fzifdso)3.243 E F1 .743(and the)3.243 F F2(FIDO2)3.243 E F1 .743 (back-end w)3.243 F .743(as used, the meta-)-.1 F .926 (data will be silently cleared.)108 223.2 R .926 (Otherwise, or in case of an error)5.926 F 3.426(,d)-.4 G .926 @@ -393,75 +399,76 @@ SF(ne)14.654 E(ver)-.15 E F0 12.154(create or destro)14.654 F 14.655(ye) (will be written to the standard error stream.)108 235.2 Q(Ne)108 252 Q .465(xt, a ne)-.15 F 2.965(wc)-.25 G .465 (redential of type ES256 is generated on the de)-2.965 F .464 -(vice \(with relying party ID)-.25 F F5(fzifdso)2.964 E F0(and)2.964 E -.499(name equal to the dataset name\) with the)108 264 R F5(hmac-secret) -2.999 E F0 -.15(ex)2.999 G .499(tension requested; the de).15 F .499 +(vice \(with relying party ID)-.25 F F4(fzifdso)2.964 E F1(and)2.964 E +.499(name equal to the dataset name\) with the)108 264 R F4(hmac-secret) +2.999 E F1 -.15(ex)2.999 G .499(tension requested; the de).15 F .499 (vice PIN, if an)-.25 F -.65(y,)-.15 G(is prompted for here.)108 276 Q (This mimicks a W)5 E(ebAuthn re)-.8 E(gistration step.)-.15 E .962(The\ n, the credential is asserted with a 32-byte random salt, which hashes \ it with de)108 292.8 R(vice-pri)-.25 E -.25(va)-.25 G .962(te data,).25 -F .137(and thus generates the wrapping k)108 304.8 R .438 -.15(ey \()-.1 -H .138(which is optionally back).15 F .138(ed up \(see)-.1 F F1(OPTIONS) -2.638 E F0 2.638(\)\). This)B .138(mimicks a)2.638 F -.8(We)108 316.8 S -(bAuthn login step.).8 E(The follo)108 333.6 Q -(wing properties are set on)-.25 E F3(dataset)2.5 E F0(:)A F1<83>128 -345.6 Q F5(xyz.nabijaczleweli:tzpfms.backend)7.5 E F0(=)A F1(FIDO2)A<83> -128 357.6 Q F5(xyz.nabijaczleweli:tzpfms.key)7.5 E F0(=)A F3(salt)A F2 -(:)A F3(credential-ID)A F2(:)A F3(credential-public-key)139 369.6 Q F0 -([)A F2(.)A F0 1.666(...)1.666 G 1.666(]...)-1.666 G F5(tzpfms.backend) -108 386.4 Q F0 2.708(identi\214es this dataset for w)5.208 F 2.707 -(ork with)-.1 F F1(FIDO2)5.207 E F0(-back-ended)A F2(tzpfms)5.207 E F0 -2.707(tools \(i.e.)5.207 F F2(fzifdso)108 398.4 Q F5 -(zfs-fido2-change-key)60.227 E F0(\(8\),)A F5(zfs-fido2-load-key)56.728 -E F0(\(8\),)A F5(zfs-fido2-add-backup)108 410.4 Q F0(\(8\), and)A F5 -(zfs-fido2-clear-key)2.5 E F0(\(8\)\).)A F5(tzpfms.key)108 427.2 Q F0 -.486(is a colon-separated tuple of unpadded URL-safe base64 blobs; the \ -\214rst one is the ran-)2.986 F .217(dom salt; the second represents th\ -e ID of created credential, and the third \211 its public k)108 439.2 R --.15(ey)-.1 G 5.217(.T)-.5 G .217(here e)-5.217 F(xists)-.15 E -(no other user)108 451.2 Q +F .208(and thus generates the wrapping k)108 304.8 R .508 -.15(ey \()-.1 +H .208(which is optionally back).15 F .208 +(ed up \(see \231OPTIONS\232\)\).)-.1 F .209(This mimicks)5.209 F 2.5 +(aW)108 316.8 S(ebAuthn login step.)-3.3 E(The follo)108 333.6 Q +(wing properties are set on)-.25 E F5(dataset)2.5 E F1(:)A F2<83>128 +345.6 Q F4(xyz.nabijaczleweli:tzpfms.backend)7.5 E F1(=)A F2(FIDO2)A<83> +128 357.6 Q F4(xyz.nabijaczleweli:tzpfms.key)7.5 E F1(=)A F5(salt)A F4 +(:)A F5(credential-ID)A F4(:)A F5(credential-public-key)139 369.6 Q F1 +([)A F4(.)A F1 1.666(...)1.666 G 1.666(]...)-1.666 G F4(tzpfms.backend) +108 386.4 Q F1 2.708(identi\214es this dataset for w)5.208 F 2.707 +(ork with)-.1 F F2(FIDO2)5.207 E F1(-back-ended)A F3(tzpfms)5.207 E F1 +2.707(tools \(i.e.)5.207 F F3(fzifdso)108 398.4 Q F0(zfs-\214do2-c) +22.318 E(hang)-.15 E(e-k)-.1 E -.3(ey)-.1 G F1(\(8\),).3 E F0 +(zfs-\214do2-load-k)18.819 E -.3(ey)-.1 G F1(\(8\),).3 E F0 +(zfs-\214do2-add-bac)18.819 E(kup)-.2 E F1 16.319(\(8\), and)B F0 +(zfs-\214do2-clear)108 410.4 Q(-k)-.2 E -.3(ey)-.1 G F1(\(8\)\).).3 E F4 +(tzpfms.key)108 427.2 Q F1 .486(is a colon-separated tuple of unpadded \ +URL-safe base64 blobs; the \214rst one is the ran-)2.986 F .217(dom sal\ +t; the second represents the ID of created credential, and the third \ +\211 its public k)108 439.2 R -.15(ey)-.1 G 5.217(.T)-.5 G .217(here e) +-5.217 F(xists)-.15 E(no other user)108 451.2 Q (-land tool for deciphering this; perhaps there should be.)-.2 E (Finally)108 468 Q 12.006(,t)-.65 G 9.506(he equi)-12.006 F -.25(va)-.25 -G 9.506(lent of).25 F F2 9.505(zfs change-key)12.005 F17.171 E F5 -(keylocation=prompt)15.505 E F217.171 E F5(keyformat=raw)108 480 Q -F3(dataset)6.106 E F0 .106(is performed with the ne)2.606 F 2.606(wk) --.25 G -.15(ey)-2.706 G 5.106(.I)-.5 G 2.606(fa)-5.106 G 2.606(ne)-2.606 -G .107(rror occurred, best ef)-2.606 F .107(fort is made)-.25 F +G 9.506(lent of).25 F F3(zfs)12.005 E F4 11.171(change-key \255o)15.505 +F 11.171(keylocation=prompt \255o)15.505 F(keyformat=raw)108 480 Q F5 +(dataset)6.106 E F1 .106(is performed with the ne)2.606 F 2.606(wk)-.25 +G -.15(ey)-2.706 G 5.106(.I)-.5 G 2.606(fa)-5.106 G 2.606(ne)-2.606 G +.107(rror occurred, best ef)-2.606 F .107(fort is made)-.25 F (to clean up the properties, or to issue a note for manual interv)108 492 Q(ention into the standard error stream.)-.15 E 4.056<418c>108 508.8 S 1.556(nal v)-4.056 F 1.556(eri\214cation should be made by running) --.15 F F2 3.222(zfs-fido2-load-key \255n)4.056 F F3(dataset)7.555 E F0 -6.555(.I)C 4.055(ft)-6.555 G(hat)-4.055 E .729 +-.15 F F3(zfs-fido2-load-key)4.056 E F49.222 E F5(dataset)7.555 E +F1 6.555(.I)C 4.055(ft)-6.555 G(hat)-4.055 E .729 (command succeeds, all is well, b)108 520.8 R .729 (ut otherwise the dataset can be manually rolled back to a passphrase) --.2 F(with)108 532.8 Q F2(zfs-fido2-clear-key)5.147 E F3(dataset)8.647 E -F0(\(or)5.147 E 5.146(,i)-.4 G 5.146(ft)-5.146 G 2.646(hat f)-5.146 F -2.646(ails to w)-.1 F(ork,)-.1 E F2 2.646(zfs change-key)5.146 F -10.312 E F5(keyformat=passphrase)108 544.8 Q F3(dataset)6 E F0 -(\), and you are hereby ask)A(ed to report a b)-.1 E(ug, please.)-.2 E -F2(zfs-fido2-clear-key)108 561.6 Q F3(dataset)7.606 E F0 1.607 +-.2 F(with)108 532.8 Q F3(zfs-fido2-clear-key)5.147 E F5(dataset)8.647 E +F1(\(or)5.147 E 5.146(,i)-.4 G 5.146(ft)-5.146 G 2.646(hat f)-5.146 F +2.646(ails to w)-.1 F(ork,)-.1 E F3(zfs)5.146 E F4 4.312 +(change-key \255o)8.646 F(keyformat=passphrase)108 544.8 Q F5(dataset)6 +E F1(\), and you are hereby ask)A(ed to report a b)-.1 E(ug, please.)-.2 +E F3(zfs-fido2-clear-key)108 561.6 Q F5(dataset)7.606 E F1 1.607 (can be used to clear the properties and go back to using a)4.106 F -(passphrase.)108 573.6 Q F1(OPTIONS)72 590.4 Q F2109.666 602.4 Q -F3(backup-file)6 E F0(Sa)203 602.4 Q .353 -.15(ve a b)-.2 H .052 -(ack-up of the k).15 F .352 -.15(ey t)-.1 H(o).15 E F3(backup-file)2.552 -E F0 2.552(,w)C .052(hich must not e)-2.552 F .052(xist beforehand.)-.15 -F .693(This back-up)203 614.4 R F4(must)3.193 E F0 .694 +(passphrase.)108 573.6 Q F2(OPTIONS)72 590.4 Q F4109.666 602.4 Q +F5(backup-file)6 E F1(Sa)203 602.4 Q .353 -.15(ve a b)-.2 H .052 +(ack-up of the k).15 F .352 -.15(ey t)-.1 H(o).15 E F5(backup-file)2.552 +E F1 2.552(,w)C .052(hich must not e)-2.552 F .052(xist beforehand.)-.15 +F .693(This back-up)203 614.4 R F0(must)3.193 E F1 .694 (be stored securely)3.193 F 3.194(,o)-.65 G -.25(ff)-3.194 G 3.194 (-site. In).25 F .694(case of a catastrophic e)3.194 F -.15(ve)-.25 G (nt,).15 E(the k)203 626.4 Q .3 -.15(ey c)-.1 H(an be loaded by running) -.15 E F2(zfs load-key)233 638.4 Q F3(dataset)6 E F5(<)6 E F3 -(backup-file)6 E F1(ENVIR)72 655.2 Q 1.666(ONMENT V)-.3 F(ARIABLES)-1.35 -E F5(TZPFMS_PASSPHRASE_HELPER)108 667.2 Q F0 .046(By def)133 679.2 R +.15 E F3(zfs)233 638.4 Q F4(load-key)6 E F5(dataset)6 E F4(<)6 E F5 +(backup-file)6 E F2(ENVIR)72 655.2 Q 1.666(ONMENT V)-.3 F(ARIABLES)-1.35 +E F4(TZPFMS_PASSPHRASE_HELPER)108 667.2 Q F1 .046(By def)133 679.2 R .045(ault, passphrases are prompted for and read in on the standard out\ -put and input streams.)-.1 F(If)5.045 E F5(TZPFMS_PASSPHRASE_HELPER)133 -691.2 Q F0 1.595(is set and nonempty)4.095 F 4.096(,i)-.65 G 4.096(tw) --4.096 G 1.596(ill be run via)-4.096 F F5(/bin/)4.096 E F2 3.262 -(sh \255c)B F0(to)4.096 E(pro)133 703.2 Q -(vide each passphrase, instead.)-.15 E .643 -(The standard output stream of the helper is tied to an anon)133 720 R -.643(ymous \214le and used in its entirety as)-.15 F(the passphrase, e) -133 732 Q(xcept for a trailing ne)-.15 E(w-line, if an)-.25 E 3.8 -.65 -(y. T)-.15 H(he ar).65 E(guments are:)-.18 E F5($1)143 744 Q F0 +put and input streams.)-.1 F(If)5.045 E F4(TZPFMS_PASSPHRASE_HELPER)133 +691.2 Q F1 .896(is set and nonempty)3.396 F 3.396(,i)-.65 G 3.396(tw) +-3.396 G .896(ill be run via)-3.396 F F0(/bin/)3.396 E F3(sh)A F4 +8.562 E F1 .897(to pro-)3.396 F(vide each passphrase, instead.)133 703.2 +Q .643(The standard output stream of the helper is tied to an anon)133 +720 R .643(ymous \214le and used in its entirety as)-.15 F +(the passphrase, e)133 732 Q(xcept for a trailing ne)-.15 E +(w-line, if an)-.25 E 3.8 -.65(y. T)-.15 H(he ar).65 E(guments are:)-.18 +E F4($1)143 744 Q F1 (Pre-formatted noun phrase with all the information belo)160 744 Q 1.3 -.65(w, f)-.25 H(or use as a prompt).65 E(fzifdso 0)72 817.889 Q (February 29, 2024)153.568 E(1)183.837 E 0 Cg EP @@ -469,361 +476,368 @@ put and input streams.)-.1 F(If)5.045 E F5(TZPFMS_PASSPHRASE_HELPER)133 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF 41.363(ZFS-FIDO2-CHANGE-KEY\(8\) System)72 48 R -(Manager')2.5 E 2.5(sM)-.55 G 38.862(anual ZFS-FIDO2-CHANGE-KEY\(8\)) --2.5 F/F1 10/Courier@0 SF($2)143 84 Q F0 +/F0 10/Times-Italic@0 SF(ZFS-FIDO2-CHANGE-KEY)72 48 Q/F1 10 +/Times-Roman@0 SF 45.243(\(8\) System)B(Manager')2.5 E 2.5(sM)-.55 G +(anual)-2.5 E F0(ZFS-FIDO2-CHANGE-KEY)45.242 E F1(\(8\))A/F2 10 +/Courier@0 SF($2)143 84 Q F1 (Either the dataset name or the element of the TPM hierarch)160 84 Q 2.5 -(yb)-.05 G(eing prompted for)-2.5 E F1($3)143 96 Q F0("ne)160 96 Q +(yb)-.05 G(eing prompted for)-2.5 E F2($3)143 96 Q F1("ne)160 96 Q (w" if this is for a ne)-.25 E 2.5(wp)-.25 G(assphrase, otherwise blank) --2.5 E F1($4)143 108 Q F0("ag)160 108 Q(ain" if it')-.05 E 2.5(st)-.55 G +-2.5 E F2($4)143 108 Q F1("ag)160 108 Q(ain" if it')-.05 E 2.5(st)-.55 G (he second prompt for that passphrase, otherwise blank)-2.5 E .177 (If the helper doesn')133 124.8 R 2.677(te)-.18 G .177 -(xist \(the shell e)-2.827 F .177(xits with)-.15 F/F2 10/Times-Bold@0 SF -(127)2.677 E F0 .178(\), a diagnostic is issued and the normal prompt)B +(xist \(the shell e)-2.827 F .177(xits with)-.15 F/F3 10/Times-Bold@0 SF +(127)2.677 E F1 .178(\), a diagnostic is issued and the normal prompt)B (is used as f)133 136.8 Q 2.5(all-back. If)-.1 F(it f)2.5 E(ails for an) --.1 E 2.5(yo)-.15 G(ther reason, the prompting is aborted.)-2.5 E F2 +-.1 E 2.5(yo)-.15 G(ther reason, the prompting is aborted.)-2.5 E F3 1.666(FIDO2 back-end con\214guration)72 153.6 R(En)87 165.6 Q(vir)-.4 E -.625(onment v)-.18 F(ariables)-.1 E F1(FIDO_DEBUG)108 177.6 Q F0 +.625(onment v)-.18 F(ariables)-.1 E F2(FIDO_DEBUG)108 177.6 Q F1 (If set, enables lib\214do2 deb)173 177.6 Q -(ug logging to the standard error stream.)-.2 E F2(De)87 194.4 Q .625 -(vice selection)-.15 F F0 .727(When creating, the \214rst de)108 206.4 R -.727(vice which supports the)-.25 F F1(hmac-secret)3.226 E F0 -.15(ex) +(ug logging to the standard error stream.)-.2 E F3(De)87 194.4 Q .625 +(vice selection)-.15 F F1 .727(When creating, the \214rst de)108 206.4 R +.727(vice which supports the)-.25 F F2(hmac-secret)3.226 E F1 -.15(ex) 3.226 G .726(tension is used.).15 F .726(When loading,)5.726 F (the assertion is shopped around to e)108 218.4 Q -.15(ve)-.25 G -(ry such de).15 E(vice.)-.25 E F2 .625(See also)87 235.2 R F0 +(ry such de).15 E(vice.)-.25 E F3 .625(See also)87 235.2 R F1 (The lib\214do2 documentation at https://de)108 247.2 Q -.15(ve)-.25 G -(lopers.yubico.com/lib\214do2/.).15 E F2 1.666(SPECIAL THANKS)72 264 R -F0 1.6 -.8(To a)108 276 T(ll who support further de).8 E -.15(ve)-.25 G -(lopment, in particular:).15 E F2<83>128 288 Q F0(ThePhD)7.5 E F2<83>128 -300 Q F0(Embark Studios)7.5 E F2<83>128 312 Q F0(Jasper Bekk)7.5 E(ers) --.1 E F2<83>128 324 Q F0(EvModder)7.5 E F2(REPOR)72 340.8 Q 1.666 -(TING B)-.4 F(UGS)-.1 E F0(https://todo.sr)108 352.8 Q -(.ht/\001nabijaczle)-.55 E(weli/fzifdso)-.25 E F1 -(\001nabijaczleweli/tzpfms@lists.sr.ht)108 369.6 Q F0 83.762(,a)C(rchi) --83.762 E -.15(ve)-.25 G 83.763(da).15 G(t)-83.763 E(https://lists.sr) -108 381.6 Q(.ht/\001nabijaczle)-.55 E(weli/tzpfms.)-.25 E(fzifdso 0)72 -817.889 Q(February 29, 2024)153.568 E(2)183.837 E 0 Cg EP +(lopers.yubico.com/lib\214do2/.).15 E F3 1.666(SPECIAL THANKS)72 264 R +F1 1.6 -.8(To a)108 276 T(ll who support further de).8 E -.15(ve)-.25 G +(lopment, in particular:).15 E F3<83>128 288 Q F1(ThePhD)7.5 E F3<83>128 +300 Q F1(Embark Studios)7.5 E F3<83>128 312 Q F1(Jasper Bekk)7.5 E(ers) +-.1 E F3<83>128 324 Q F1(EvModder)7.5 E F3(REPOR)72 340.8 Q 1.666 +(TING B)-.4 F(UGS)-.1 E F1(https://todo.sr)108 352.8 Q +(.ht/\001nabijaczle)-.55 E(weli/fzifdso)-.25 E F0(\001nabijaczle)108 +369.6 Q(weli/tzpfms@lists.sr)-.15 E(.ht)-1.11 E F1 2.5(,a)C(rchi)-2.5 E +-.15(ve)-.25 G 2.5(da).15 G 2.5(th)-2.5 G(ttps://lists.sr)-2.5 E +(.ht/\001nabijaczle)-.55 E(weli/tzpfms.)-.25 E(fzifdso 0)72 817.889 Q +(February 29, 2024)153.568 E(2)183.837 E 0 Cg EP %%Page: 1 4 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF 50.243(ZFS-FIDO2-CLEAR-KEY\(8\) System)72 48 R -(Manager')2.5 E 2.5(sM)-.55 G 47.742(anual ZFS-FIDO2-CLEAR-KEY\(8\))-2.5 -F/F1 10/Times-Bold@0 SF -.2(NA)72 84 S(ME).2 E/F2 10/Courier-Bold@0 SF -(zfs-fido2-clear-key)108 96 Q F0 3.587<8a72>3.588 G -.25(ew)-3.587 G -1.087(rap ZFS dataset k).25 F 1.387 -.15(ey i)-.1 H 3.587(np).15 G -(asssw)-3.587 E 1.087(ord and clear tzpfms FIDO2 meta-)-.1 F(data)108 -108 Q F1(SYNOPSIS)72 124.8 Q F2(zfs-fido2-add-backup)108 136.8 Q/F3 10 -/Courier-Oblique@0 SF(dataset)2.5 E F1(DESCRIPTION)72 153.6 Q F0 -(After v)108 165.6 Q(erifying)-.15 E F3(dataset)2.5 E F0 -.1(wa)2.5 G -2.5(se).1 G(ncrypted with)-2.5 E F2(tzpfms)2.5 E F0(back)2.5 E(end)-.1 E -F1(FIDO2)2.5 E F0(:)A 5(1. performs)118 177.6 R 5.641(the equi)8.141 F --.25(va)-.25 G 5.641(lent of).25 F F2 5.642(zfs change-key)8.142 F -13.308 E/F4 10/Courier@0 SF(keylocation=prompt)11.642 E F213.308 E -F4(keyformat=passphrase)133 189.6 Q F3(dataset)6 E F0(,)A 5(2. remo)118 -201.6 R -.15(ve)-.15 G 10.689(st).15 G(he)-10.689 E F4 -(xyz.nabijaczleweli:tzpfms.)10.689 E F0({)A F4(backend)A F0(,)A F4(key) -14.189 E F0 10.689(}p)C 8.189(roperties from)-10.689 F F3(dataset)133 -213.6 Q F0(.)A(See)108 230.4 Q F4(zfs-fido2-change-key)2.5 E F0 -(\(8\) for a detailed description.)A F1(ENVIR)72 247.2 Q 1.666(ONMENT V) --.3 F(ARIABLES)-1.35 E F4(TZPFMS_PASSPHRASE_HELPER)108 259.2 Q F0 .045 -(By def)133 271.2 R .045(ault, passphrases are prompted for and read in\ - on the standard output and input streams.)-.1 F(If)5.046 E F4 -(TZPFMS_PASSPHRASE_HELPER)133 283.2 Q F0 1.596(is set and nonempty)4.096 -F 4.096(,i)-.65 G 4.096(tw)-4.096 G 1.596(ill be run via)-4.096 F F4 -(/bin/)4.095 E F2 3.261(sh \255c)B F0(to)4.095 E(pro)133 295.2 Q -(vide each passphrase, instead.)-.15 E .643 -(The standard output stream of the helper is tied to an anon)133 312 R +/F0 10/Times-Italic@0 SF(ZFS-FIDO2-CLEAR-KEY)72 48 Q/F1 10/Times-Roman@0 +SF 54.683(\(8\) System)B(Manager')2.5 E 2.5(sM)-.55 G(anual)-2.5 E F0 +(ZFS-FIDO2-CLEAR-KEY)54.682 E F1(\(8\))A/F2 10/Times-Bold@0 SF -.2(NA)72 +84 S(ME).2 E F1(zfs-\214do2-clear)108 96 Q(-k)-.2 E .3 -.15(ey \212 r) +-.1 H -.25(ew).15 G(rap ZFS dataset k).25 E .3 -.15(ey i)-.1 H 2.5(np) +.15 G(asssw)-2.5 E(ord and clear tzpfms FIDO2 metadata)-.1 E F2 +(SYNOPSIS)72 112.8 Q/F3 10/Courier-Bold@0 SF(zfs-fido2-add-backup)108 +124.8 Q/F4 10/Courier-Oblique@0 SF(dataset)2.5 E F2(DESCRIPTION)72 141.6 +Q F1(After v)108 153.6 Q(erifying)-.15 E F4(dataset)2.5 E F1 -.1(wa)2.5 +G 2.5(se).1 G(ncrypted with)-2.5 E F3(tzpfms)2.5 E F1(back)2.5 E(end)-.1 +E F2(FIDO2)2.5 E F1(:)A 5(1. performs)118 165.6 R 5.641(the equi)8.141 F +-.25(va)-.25 G 5.641(lent of).25 F F3(zfs)8.142 E/F5 10/Courier@0 SF +7.308(change-key \255o)11.642 F 7.308(keylocation=prompt \255o)11.642 F +(keyformat=passphrase)133 177.6 Q F4(dataset)6 E F1(,)A 5(2. remo)118 +189.6 R -.15(ve)-.15 G 10.689(st).15 G(he)-10.689 E F5 +(xyz.nabijaczleweli:tzpfms.)10.689 E F1({)A F5(backend)A F1(,)A F5(key) +14.189 E F1 10.689(}p)C 8.189(roperties from)-10.689 F F4(dataset)133 +201.6 Q F1(.)A(See)108 218.4 Q F0(zfs-\214do2-c)2.5 E(hang)-.15 E(e-k) +-.1 E -.3(ey)-.1 G F1(\(8\) for a detailed description.).3 E F2(ENVIR)72 +235.2 Q 1.666(ONMENT V)-.3 F(ARIABLES)-1.35 E F5 +(TZPFMS_PASSPHRASE_HELPER)108 247.2 Q F1 .045(By def)133 259.2 R .045(a\ +ult, passphrases are prompted for and read in on the standard output an\ +d input streams.)-.1 F(If)5.046 E F5(TZPFMS_PASSPHRASE_HELPER)133 271.2 +Q F1 .896(is set and nonempty)3.397 F 3.396(,i)-.65 G 3.396(tw)-3.396 G +.896(ill be run via)-3.396 F F0(/bin/)3.396 E F3(sh)A F58.562 E F1 +.896(to pro-)3.396 F(vide each passphrase, instead.)133 283.2 Q .643 +(The standard output stream of the helper is tied to an anon)133 300 R .643(ymous \214le and used in its entirety as)-.15 F(the passphrase, e) -133 324 Q(xcept for a trailing ne)-.15 E(w-line, if an)-.25 E 3.8 -.65 -(y. T)-.15 H(he ar).65 E(guments are:)-.18 E F4($1)143 336 Q F0 -(Pre-formatted noun phrase with all the information belo)160 336 Q 1.3 --.65(w, f)-.25 H(or use as a prompt).65 E F4($2)143 348 Q F0 -(Either the dataset name or the element of the TPM hierarch)160 348 Q -2.5(yb)-.05 G(eing prompted for)-2.5 E F4($3)143 360 Q F0("ne)160 360 Q +133 312 Q(xcept for a trailing ne)-.15 E(w-line, if an)-.25 E 3.8 -.65 +(y. T)-.15 H(he ar).65 E(guments are:)-.18 E F5($1)143 324 Q F1 +(Pre-formatted noun phrase with all the information belo)160 324 Q 1.3 +-.65(w, f)-.25 H(or use as a prompt).65 E F5($2)143 336 Q F1 +(Either the dataset name or the element of the TPM hierarch)160 336 Q +2.5(yb)-.05 G(eing prompted for)-2.5 E F5($3)143 348 Q F1("ne)160 348 Q (w" if this is for a ne)-.25 E 2.5(wp)-.25 G(assphrase, otherwise blank) --2.5 E F4($4)143 372 Q F0("ag)160 372 Q(ain" if it')-.05 E 2.5(st)-.55 G +-2.5 E F5($4)143 360 Q F1("ag)160 360 Q(ain" if it')-.05 E 2.5(st)-.55 G (he second prompt for that passphrase, otherwise blank)-2.5 E .178 -(If the helper doesn')133 388.8 R 2.678(te)-.18 G .178 -(xist \(the shell e)-2.828 F .177(xits with)-.15 F F1(127)2.677 E F0 +(If the helper doesn')133 376.8 R 2.678(te)-.18 G .178 +(xist \(the shell e)-2.828 F .177(xits with)-.15 F F2(127)2.677 E F1 .177(\), a diagnostic is issued and the normal prompt)B(is used as f)133 -400.8 Q 2.5(all-back. If)-.1 F(it f)2.5 E(ails for an)-.1 E 2.5(yo)-.15 -G(ther reason, the prompting is aborted.)-2.5 E F1 1.666 -(FIDO2 back-end con\214guration)72 417.6 R(En)87 429.6 Q(vir)-.4 E .625 -(onment v)-.18 F(ariables)-.1 E F4(FIDO_DEBUG)108 441.6 Q F0 -(If set, enables lib\214do2 deb)173 441.6 Q -(ug logging to the standard error stream.)-.2 E F1(De)87 458.4 Q .625 -(vice selection)-.15 F F0 .726(When creating, the \214rst de)108 470.4 R -.726(vice which supports the)-.25 F F4(hmac-secret)3.227 E F0 -.15(ex) +388.8 Q 2.5(all-back. If)-.1 F(it f)2.5 E(ails for an)-.1 E 2.5(yo)-.15 +G(ther reason, the prompting is aborted.)-2.5 E F2 1.666 +(FIDO2 back-end con\214guration)72 405.6 R(En)87 417.6 Q(vir)-.4 E .625 +(onment v)-.18 F(ariables)-.1 E F5(FIDO_DEBUG)108 429.6 Q F1 +(If set, enables lib\214do2 deb)173 429.6 Q +(ug logging to the standard error stream.)-.2 E F2(De)87 446.4 Q .625 +(vice selection)-.15 F F1 .726(When creating, the \214rst de)108 458.4 R +.726(vice which supports the)-.25 F F5(hmac-secret)3.227 E F1 -.15(ex) 3.227 G .727(tension is used.).15 F .727(When loading,)5.727 F -(the assertion is shopped around to e)108 482.4 Q -.15(ve)-.25 G -(ry such de).15 E(vice.)-.25 E F1 .625(See also)87 499.2 R F0 -(The lib\214do2 documentation at https://de)108 511.2 Q -.15(ve)-.25 G -(lopers.yubico.com/lib\214do2/.).15 E F1 1.666(SPECIAL THANKS)72 528 R -F0 1.6 -.8(To a)108 540 T(ll who support further de).8 E -.15(ve)-.25 G -(lopment, in particular:).15 E F1<83>128 552 Q F0(ThePhD)7.5 E F1<83>128 -564 Q F0(Embark Studios)7.5 E F1<83>128 576 Q F0(Jasper Bekk)7.5 E(ers) --.1 E F1<83>128 588 Q F0(EvModder)7.5 E F1(REPOR)72 604.8 Q 1.666 -(TING B)-.4 F(UGS)-.1 E F0(https://todo.sr)108 616.8 Q -(.ht/\001nabijaczle)-.55 E(weli/fzifdso)-.25 E F4 -(\001nabijaczleweli/tzpfms@lists.sr.ht)108 633.6 Q F0 83.763(,a)C(rchi) --83.763 E -.15(ve)-.25 G 83.762(da).15 G(t)-83.762 E(https://lists.sr) -108 645.6 Q(.ht/\001nabijaczle)-.55 E(weli/tzpfms.)-.25 E(fzifdso 0)72 -817.889 Q(February 28, 2024)153.568 E(1)183.837 E 0 Cg EP +(the assertion is shopped around to e)108 470.4 Q -.15(ve)-.25 G +(ry such de).15 E(vice.)-.25 E F2 .625(See also)87 487.2 R F1 +(The lib\214do2 documentation at https://de)108 499.2 Q -.15(ve)-.25 G +(lopers.yubico.com/lib\214do2/.).15 E F2 1.666(SPECIAL THANKS)72 516 R +F1 1.6 -.8(To a)108 528 T(ll who support further de).8 E -.15(ve)-.25 G +(lopment, in particular:).15 E F2<83>128 540 Q F1(ThePhD)7.5 E F2<83>128 +552 Q F1(Embark Studios)7.5 E F2<83>128 564 Q F1(Jasper Bekk)7.5 E(ers) +-.1 E F2<83>128 576 Q F1(EvModder)7.5 E F2(REPOR)72 592.8 Q 1.666 +(TING B)-.4 F(UGS)-.1 E F1(https://todo.sr)108 604.8 Q +(.ht/\001nabijaczle)-.55 E(weli/fzifdso)-.25 E F0(\001nabijaczle)108 +621.6 Q(weli/tzpfms@lists.sr)-.15 E(.ht)-1.11 E F1 2.5(,a)C(rchi)-2.5 E +-.15(ve)-.25 G 2.5(da).15 G 2.5(th)-2.5 G(ttps://lists.sr)-2.5 E +(.ht/\001nabijaczle)-.55 E(weli/tzpfms.)-.25 E(fzifdso 0)72 817.889 Q +(February 28, 2024)153.568 E(1)183.837 E 0 Cg EP %%Page: 1 5 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(ZFS-FIDO2-LO)72 48 Q 55.603(AD-KEY\(8\) System) --.35 F(Manager')2.5 E 2.5(sM)-.55 G 53.102(anual ZFS-FIDO2-LO)-2.5 F -(AD-KEY\(8\))-.35 E/F1 10/Times-Bold@0 SF -.2(NA)72 84 S(ME).2 E/F2 10 -/Courier-Bold@0 SF(zfs-fido2-load-key)108 96 Q F0 2.5<8a6c>2.5 G -(oad FIDO2-encrypted ZFS dataset k)-2.5 E -.15(ey)-.1 G F1(SYNOPSIS)72 -112.8 Q F2(zfs-fido2-add-backup)108 124.8 Q F0([)2.5 E F21.666 E -F0(])A/F3 10/Courier-Oblique@0 SF(dataset)2.5 E F1(DESCRIPTION)72 141.6 -Q F0 1.141(After v)108 153.6 R(erifying)-.15 E F3(dataset)3.641 E F0 -.1 -(wa)3.641 G 3.641(se).1 G 1.141(ncrypted with)-3.641 F F2(tzpfms)3.641 E -F0(back)3.641 E(end)-.1 E F1(FIDO2)3.641 E F0 3.641(,a)C 1.142 -(sserts the preserv)-3.641 F 1.142(ed chal-)-.15 F(lenge, HMA)108 165.6 -Q(Cking the salt with the on-de)-.4 E +/F0 10/Times-Italic@0 SF(ZFS-FIDO2-LO)72 48 Q(AD-KEY)-.55 E/F1 10 +/Times-Roman@0 SF 59.683(\(8\) System)B(Manager')2.5 E 2.5(sM)-.55 G +(anual)-2.5 E F0(ZFS-FIDO2-LO)59.682 E(AD-KEY)-.55 E F1(\(8\))A/F2 10 +/Times-Bold@0 SF -.2(NA)72 84 S(ME).2 E F1(zfs-\214do2-load-k)108 96 Q +.3 -.15(ey \212 l)-.1 H(oad FIDO2-encrypted ZFS dataset k).15 E -.15(ey) +-.1 G F2(SYNOPSIS)72 112.8 Q/F3 10/Courier-Bold@0 SF +(zfs-fido2-add-backup)108 124.8 Q F1([)2.5 E/F4 10/Courier@0 SF +1.666 E F1(])A/F5 10/Courier-Oblique@0 SF(dataset)2.5 E F2(DESCRIPTION) +72 141.6 Q F1 1.142(After v)108 153.6 R(erifying)-.15 E F5(dataset)3.642 +E F1 -.1(wa)3.642 G 3.641(se).1 G 1.141(ncrypted with)-3.641 F F3 +(tzpfms)3.641 E F1(back)3.641 E(end)-.1 E F2(FIDO2)3.641 E F1 3.641(,a)C +1.141(sserts the preserv)-3.641 F 1.141(ed chal-)-.15 F(lenge, HMA)108 +165.6 Q(Cking the salt with the on-de)-.4 E (vice secret, and loads the resulting k)-.25 E .3 -.15(ey i)-.1 H(nto) -.15 E F3(dataset)2.5 E F0(.)A(See)108 182.4 Q/F4 10/Courier@0 SF -(zfs-fido2-change-key)2.5 E F0(\(8\) for a detailed description.)A F1 -(OPTIONS)72 199.2 Q F2109.666 211.2 Q F0 3.208 -(Do a no-op/dry run, can be used e)131 211.2 R -.15(ve)-.25 G 5.708(ni) -.15 G 5.708(ft)-5.708 G 3.208(he k)-5.708 F 3.508 -.15(ey i)-.1 H 5.708 -(sa).15 G 3.208(lready loaded.)-5.708 F(Equi)8.207 E -.25(va)-.25 G -3.207(lent to).25 F F2(zfs)5.707 E(load-key)131 223.2 Q F0 -.55('s)C F2 -4.716 E F0(option.)2.5 E F1(ENVIR)72 240 Q 1.666(ONMENT V)-.3 F -(ARIABLES)-1.35 E F4(TZPFMS_PASSPHRASE_HELPER)108 252 Q F0 .045(By def) -133 264 R .045(ault, passphrases are prompted for and read in on the st\ -andard output and input streams.)-.1 F(If)5.046 E F4 -(TZPFMS_PASSPHRASE_HELPER)133 276 Q F0 1.596(is set and nonempty)4.096 F -4.096(,i)-.65 G 4.096(tw)-4.096 G 1.596(ill be run via)-4.096 F F4 -(/bin/)4.095 E F2 3.261(sh \255c)B F0(to)4.095 E(pro)133 288 Q -(vide each passphrase, instead.)-.15 E .643 +.15 E F5(dataset)2.5 E F1(.)A(See)108 182.4 Q F0(zfs-\214do2-c)2.5 E +(hang)-.15 E(e-k)-.1 E -.3(ey)-.1 G F1 +(\(8\) for a detailed description.).3 E F2(OPTIONS)72 199.2 Q F4 +109.666 211.2 Q F1 3.208(Do a no-op/dry run, can be used e)131 211.2 R +-.15(ve)-.25 G 5.708(ni).15 G 5.708(ft)-5.708 G 3.208(he k)-5.708 F +3.508 -.15(ey i)-.1 H 5.708(sa).15 G 3.208(lready loaded.)-5.708 F(Equi) +8.208 E -.25(va)-.25 G 3.208(lent to).25 F F3(zfs)5.708 E F4(load-key) +131 223.2 Q F1 -.55('s)C F44.716 E F1(option.)2.5 E F2(ENVIR)72 +240 Q 1.666(ONMENT V)-.3 F(ARIABLES)-1.35 E F4(TZPFMS_PASSPHRASE_HELPER) +108 252 Q F1 .046(By def)133 264 R .045(ault, passphrases are prompted \ +for and read in on the standard output and input streams.)-.1 F(If)5.045 +E F4(TZPFMS_PASSPHRASE_HELPER)133 276 Q F1 .896(is set and nonempty) +3.396 F 3.396(,i)-.65 G 3.396(tw)-3.396 G .896(ill be run via)-3.396 F +F0(/bin/)3.396 E F3(sh)A F48.562 E F1 .897(to pro-)3.396 F +(vide each passphrase, instead.)133 288 Q .643 (The standard output stream of the helper is tied to an anon)133 304.8 R .643(ymous \214le and used in its entirety as)-.15 F(the passphrase, e) 133 316.8 Q(xcept for a trailing ne)-.15 E(w-line, if an)-.25 E 3.8 -.65 -(y. T)-.15 H(he ar).65 E(guments are:)-.18 E F4($1)143 328.8 Q F0 +(y. T)-.15 H(he ar).65 E(guments are:)-.18 E F4($1)143 328.8 Q F1 (Pre-formatted noun phrase with all the information belo)160 328.8 Q 1.3 --.65(w, f)-.25 H(or use as a prompt).65 E F4($2)143 340.8 Q F0 +-.65(w, f)-.25 H(or use as a prompt).65 E F4($2)143 340.8 Q F1 (Either the dataset name or the element of the TPM hierarch)160 340.8 Q -2.5(yb)-.05 G(eing prompted for)-2.5 E F4($3)143 352.8 Q F0("ne)160 +2.5(yb)-.05 G(eing prompted for)-2.5 E F4($3)143 352.8 Q F1("ne)160 352.8 Q(w" if this is for a ne)-.25 E 2.5(wp)-.25 G -(assphrase, otherwise blank)-2.5 E F4($4)143 364.8 Q F0("ag)160 364.8 Q +(assphrase, otherwise blank)-2.5 E F4($4)143 364.8 Q F1("ag)160 364.8 Q (ain" if it')-.05 E 2.5(st)-.55 G -(he second prompt for that passphrase, otherwise blank)-2.5 E .178 -(If the helper doesn')133 381.6 R 2.678(te)-.18 G .178 -(xist \(the shell e)-2.828 F .177(xits with)-.15 F F1(127)2.677 E F0 -.177(\), a diagnostic is issued and the normal prompt)B(is used as f)133 +(he second prompt for that passphrase, otherwise blank)-2.5 E .177 +(If the helper doesn')133 381.6 R 2.677(te)-.18 G .177 +(xist \(the shell e)-2.827 F .177(xits with)-.15 F F2(127)2.677 E F1 +.178(\), a diagnostic is issued and the normal prompt)B(is used as f)133 393.6 Q 2.5(all-back. If)-.1 F(it f)2.5 E(ails for an)-.1 E 2.5(yo)-.15 -G(ther reason, the prompting is aborted.)-2.5 E F1 1.666(SPECIAL THANKS) -72 410.4 R F0 1.6 -.8(To a)108 422.4 T(ll who support further de).8 E --.15(ve)-.25 G(lopment, in particular:).15 E F1<83>128 434.4 Q F0 -(ThePhD)7.5 E F1<83>128 446.4 Q F0(Embark Studios)7.5 E F1<83>128 458.4 -Q F0(Jasper Bekk)7.5 E(ers)-.1 E F1<83>128 470.4 Q F0(EvModder)7.5 E F1 -(REPOR)72 487.2 Q 1.666(TING B)-.4 F(UGS)-.1 E F0(https://todo.sr)108 -499.2 Q(.ht/\001nabijaczle)-.55 E(weli/fzifdso)-.25 E F4 -(\001nabijaczleweli/tzpfms@lists.sr.ht)108 516 Q F0 83.762(,a)C(rchi) --83.762 E -.15(ve)-.25 G 83.763(da).15 G(t)-83.763 E(https://lists.sr) -108 528 Q(.ht/\001nabijaczle)-.55 E(weli/tzpfms.)-.25 E(fzifdso 0)72 -817.889 Q(February 28, 2024)153.568 E(1)183.837 E 0 Cg EP +G(ther reason, the prompting is aborted.)-2.5 E F2 1.666(SPECIAL THANKS) +72 410.4 R F1 1.6 -.8(To a)108 422.4 T(ll who support further de).8 E +-.15(ve)-.25 G(lopment, in particular:).15 E F2<83>128 434.4 Q F1 +(ThePhD)7.5 E F2<83>128 446.4 Q F1(Embark Studios)7.5 E F2<83>128 458.4 +Q F1(Jasper Bekk)7.5 E(ers)-.1 E F2<83>128 470.4 Q F1(EvModder)7.5 E F2 +(REPOR)72 487.2 Q 1.666(TING B)-.4 F(UGS)-.1 E F1(https://todo.sr)108 +499.2 Q(.ht/\001nabijaczle)-.55 E(weli/fzifdso)-.25 E F0(\001nabijaczle) +108 516 Q(weli/tzpfms@lists.sr)-.15 E(.ht)-1.11 E F1 2.5(,a)C(rchi)-2.5 +E -.15(ve)-.25 G 2.5(da).15 G 2.5(th)-2.5 G(ttps://lists.sr)-2.5 E +(.ht/\001nabijaczle)-.55 E(weli/tzpfms.)-.25 E(fzifdso 0)72 817.889 Q +(February 28, 2024)153.568 E(1)183.837 E 0 Cg EP %%Page: 1 6 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF 93.563(ZFS-TPM-LIST\(8\) System)72 48 R -(Manager')2.5 E 2.5(sM)-.55 G 91.062(anual ZFS-TPM-LIST\(8\))-2.5 F/F1 -10/Times-Bold@0 SF -.2(NA)72 84 S(ME).2 E/F2 10/Courier-Bold@0 SF -(zfs-tpm-list)108 96 Q F0 2.5<8a70>2.5 G(rint dataset tzpfms metadata) --2.5 E F1(SYNOPSIS)72 112.8 Q F2(zfs-fido2-add-backup)108 124.8 Q F0([) -2.5 E F21.666 E F0 2.5(][)C F2-.834 E F0(|)A F21.666 E -/F3 10/Courier-Oblique@0 SF(depth)6 E F0 2.5(][)C F2-.834 E F0(|)A -F21.666 E F3(back-end)6 E F0 2.5(][)C F2-.834 E F0(|)A F2 -1.666 E F0(])A([)234 136.8 Q F3(filesystem)A F0(|)A F3(volume)A F0 -1.666(]...)C F1(DESCRIPTION)72 153.6 Q F0(Lists the follo)108 165.6 Q -(wing properties on encryption roots:)-.25 E/F4 10/Courier@0 SF(name)128 -177.6 Q(back-end)128 189.6 Q F0(the)187 189.6 Q F2(tzpfms)2.979 E F0 -.478(back-end \(e.g.)2.978 F F1(TPM2)2.978 E F0(for)2.978 E F4 -(zfs-tpm2-change-key)2.978 E F0 .478(\(8\) or)B F1(TPM1.X)2.978 E F0 -(for)187 201.6 Q F4(zfs-tpm1x-change-key)2.5 E F0(\(8\)\), or ")A F1(-)A -F0 2.5("i)C 2.5(fn)-2.5 G(one is con\214gured)-2.5 E F4(keystatus)128 -213.6 Q F1 -2.1 -.25(av a)187 213.6 T(ilable).25 E F0(or)2.5 E F1(una) -2.5 E -.1(va)-.25 G(ilable).1 E F4(coherent)128 225.6 Q F1 -.1(ye)187 -225.6 S(s).1 E F0 10.289(if either both)12.789 F F4 -(xyz.nabijaczleweli:tzpfms.backend)12.789 E F0(and)12.789 E F4 -(xyz.nabijaczleweli:tzpfms.key)187 237.6 Q F0(are present or missing,) -2.5 E F1(no)2.5 E F0(otherwise)2.5 E 8.743(Incoherent datasets require \ -immediate operator attention, with either the appropriate)108 254.4 R F2 -(zfs-tpm)108 266.4 Q/F5 10/Symbol SF(*)A F2(-clear-key)A F0 1.778 -(program or)4.277 F F2 1.778(zfs change-key)4.278 F F0(and)4.278 E F2 -1.778(zfs inherit)4.278 F F0 4.278<8a69>4.278 G 4.278(ft)-4.278 G 1.778 -(he k)-4.278 F 2.078 -.15(ey b)-.1 H(e-).15 E .566(comes unloaded, the) -108 278.4 R 3.066(yw)-.15 G .566(ill require restoration from back-up.) --3.066 F(Ho)5.566 E(we)-.25 E -.15(ve)-.25 G 1.366 -.4(r, t).15 H .566 -(his should ne).4 F -.15(ve)-.25 G 3.065(ro).15 G(ccur)-3.065 E 3.065 -(,u)-.4 G(nless)-3.065 E +/F0 10/Times-Italic@0 SF(ZFS-TPM-LIST)72 48 Q/F1 10/Times-Roman@0 SF +96.343(\(8\) System)B(Manager')2.5 E 2.5(sM)-.55 G(anual)-2.5 E F0 +(ZFS-TPM-LIST)96.342 E F1(\(8\))A/F2 10/Times-Bold@0 SF -.2(NA)72 84 S +(ME).2 E F1(zfs-tpm-list \212 print dataset tzpfms metadata)108 96 Q F2 +(SYNOPSIS)72 112.8 Q/F3 10/Courier-Bold@0 SF(zfs-fido2-add-backup)108 +124.8 Q F1([)2.5 E/F4 10/Courier@0 SF1.666 E F1 2.5(][)C F4 +-.834 E F1(|)A F41.666 E/F5 10/Courier-Oblique@0 SF(depth)6 E F1 +2.5(][)C F4-.834 E F1(|)A F41.666 E F5(back-end)6 E F1 2.5 +(][)C F4-.834 E F1(|)A F41.666 E F1(])A([)234 136.8 Q F5 +(filesystem)A F1(|)A F5(volume)A F1 1.666(]...)C F2(DESCRIPTION)72 153.6 +Q F1(Lists the follo)108 165.6 Q(wing properties on encryption roots:) +-.25 E F4(name)128 177.6 Q(back-end)128 189.6 Q F1(the)187 189.6 Q F3 +(tzpfms)4.897 E F1 2.396(back-end \(e.g.)4.896 F F2(TPM2)4.896 E F1(for) +4.896 E F0(zfs-tpm2-c)4.896 E(hang)-.15 E(e-k)-.1 E -.3(ey)-.1 G F1 +2.396(\(8\) or).3 F F2(TPM1.X)4.896 E F1(for)4.896 E F0(zfs-tpm1x-c)187 +201.6 Q(hang)-.15 E(e-k)-.1 E -.3(ey)-.1 G F1(\(8\)\), or ").3 E F2(-)A +F1 2.5("i)C 2.5(fn)-2.5 G(one is con\214gured)-2.5 E F4(keystatus)128 +213.6 Q F2 -2.1 -.25(av a)187 213.6 T(ilable).25 E F1(or)2.5 E F2(una) +2.5 E -.1(va)-.25 G(ilable).1 E F4(coherent)128 225.6 Q F2 -.1(ye)187 +225.6 S(s).1 E F1 10.289(if either both)12.789 F F4 +(xyz.nabijaczleweli:tzpfms.backend)12.789 E F1(and)12.789 E F4 +(xyz.nabijaczleweli:tzpfms.key)187 237.6 Q F1(are present or missing,) +2.5 E F2(no)2.5 E F1(otherwise)2.5 E 8.743(Incoherent datasets require \ +immediate operator attention, with either the appropriate)108 254.4 R F3 +(zfs-tpm)108 266.4 Q/F6 10/Symbol SF(*)A F3(-clear-key)A F1 1.778 +(program or)4.277 F F3(zfs)4.278 E F4(change-key)7.778 E F1(and)4.278 E +F3(zfs)4.278 E F4(inherit)7.778 E F1 4.278<8a69>4.278 G 4.278(ft)-4.278 +G 1.778(he k)-4.278 F 2.078 -.15(ey b)-.1 H(e-).15 E .566 +(comes unloaded, the)108 278.4 R 3.066(yw)-.15 G .566 +(ill require restoration from back-up.)-3.066 F(Ho)5.566 E(we)-.25 E +-.15(ve)-.25 G 1.366 -.4(r, t).15 H .566(his should ne).4 F -.15(ve)-.25 +G 3.065(ro).15 G(ccur)-3.065 E 3.065(,u)-.4 G(nless)-3.065 E (something went horribly wrong with the dataset properties.)108 290.4 Q .965(If no datasets are speci\214ed, all matching encryption roots are \ -listed \212 by def)108 307.2 R .966(ault, those managed by)-.1 F F2 -(tzpfms)108 319.2 Q F0(.)A F1(OPTIONS)72 336 Q F2109.666 348 Q F0 +listed \212 by def)108 307.2 R .966(ault, those managed by)-.1 F F3 +(tzpfms)108 319.2 Q F1(.)A F2(OPTIONS)72 336 Q F4109.666 348 Q F1 1.583(Scripting mode \212 remo)185 348 R 1.883 -.15(ve h)-.15 H 1.583 (eaders and separate \214elds by a single tab instead of).15 F -(columnating them with spaces.)185 360 Q F2109.666 376.8 Q F0 -(Recurse into all descendants of speci\214ed datasets.)185 376.8 Q F2 -109.666 388.8 Q F3(depth)6 E F0(Recurse at most)185 388.8 Q F3 -(depth)2.5 E F0(datasets deep.)2.5 E(Def)5 E(ault:)-.1 E F1(0)2.5 E F0 -(.)A F2109.666 405.6 Q F0(List all encryption roots, e)185 405.6 Q --.15(ve)-.25 G 2.5(no).15 G(nes not managed by)-2.5 E F2(tzpfms)2.5 E F0 -(.)A F2109.666 417.6 Q F3(back-end)6 E F0 -(List only encryption roots with the speci\214ed)185 417.6 Q F2(tzpfms) -2.5 E F3(back-end)2.5 E F0(.)A F2109.666 434.4 Q F0 +(columnating them with spaces.)185 360 Q F4109.666 376.8 Q F1 +(Recurse into all descendants of speci\214ed datasets.)185 376.8 Q F4 +109.666 388.8 Q F5(depth)6 E F1(Recurse at most)185 388.8 Q F5 +(depth)2.5 E F1(datasets deep.)2.5 E(Def)5 E(ault:)-.1 E F2(0)2.5 E F1 +(.)A F4109.666 405.6 Q F1(List all encryption roots, e)185 405.6 Q +-.15(ve)-.25 G 2.5(no).15 G(nes not managed by)-2.5 E F3(tzpfms)2.5 E F1 +(.)A F4109.666 417.6 Q F5(back-end)6 E F1 +(List only encryption roots with the speci\214ed)185 417.6 Q F3(tzpfms) +2.5 E F5(back-end)2.5 E F1(.)A F4109.666 434.4 Q F1 (List only encryption roots whose k)185 434.4 Q -.15(ey)-.1 G 2.5(sa).15 -G(re una)-2.5 E -.25(va)-.2 G(ilable.).25 E F2109.666 446.4 Q F0 +G(re una)-2.5 E -.25(va)-.2 G(ilable.).25 E F4109.666 446.4 Q F1 (List only encryption roots whose k)185 446.4 Q -.15(ey)-.1 G 2.5(sa).15 -G(re a)-2.5 E -.25(va)-.2 G(ilable.).25 E F1(EXAMPLES)72 463.2 Q F4($) -108 475.2 Q F2(zfs-fido2-add-backup)6 E F4 72(NAME BACK-END)108 487.2 R +G(re a)-2.5 E -.25(va)-.2 G(ilable.).25 E F2(EXAMPLES)72 463.2 Q F4($) +108 475.2 Q F3(zfs-fido2-add-backup)6 E F4 72(NAME BACK-END)108 487.2 R 18(KEYSTATUS COHERENT)12 F 36(tarta-zoot TPM1.X)108 499.2 R 18 (available yes)24 F 6(tarta-zoot/home TPM2)108 511.2 R 6 -(unavailable yes)36 F($)108 535.2 Q F2 1.666 -(zfs-fido2-add-backup \255ad0)6 F F4 24(NAME BACK-END)108 547.2 R 6 -(KEYSTATUS COHERENT)12 F 6(filling -)108 559.2 R 6(available yes)54 F($) -108 583.2 Q F2 1.666(zfs-fido2-add-backup \255b)6 F F1(TPM2)6 E F4 72 +(unavailable yes)36 F($)108 535.2 Q F3(zfs-fido2-add-backup)6 E F4 +(\255ad0)7.666 E 24(NAME BACK-END)108 547.2 R 6(KEYSTATUS COHERENT)12 F +6(filling -)108 559.2 R 6(available yes)54 F($)108 583.2 Q F3 +(zfs-fido2-add-backup)6 E F47.666 E F2(TPM2)6 E F4 72 (NAME BACK-END)108 595.2 R 18(KEYSTATUS COHERENT)12 F 6 (tarta-zoot/home TPM2)108 607.2 R 6(unavailable yes)36 F($)108 631.2 Q -F2 1.666(zfs-fido2-add-backup \255ra)6 F F3(tarta-zoot)6 E F4 72 +F3(zfs-fido2-add-backup)6 E F4(\255ra)7.666 E F5(tarta-zoot)6 E F4 72 (NAME BACK-END)108 643.2 R 18(KEYSTATUS COHERENT)12 F 36 (tarta-zoot TPM1.X)108 655.2 R 18(available yes)24 F 6 (tarta-zoot/home TPM2)108 667.2 R 6(unavailable yes)36 F 12 (tarta-zoot/bkp -)108 679.2 R 18(available yes)54 F 18(tarta-zoot/vm -) -108 691.2 R 18(available yes)54 F($)108 715.2 Q F2 1.666 -(zfs-fido2-add-backup \255al)6 F F4 72(NAME BACK-END)108 727.2 R 6 -(KEYSTATUS COHERENT)12 F 54(filling -)108 739.2 R 6(available yes)54 F -36(tarta-zoot TPM1.X)108 751.2 R 6(available yes)24 F 12 -(tarta-zoot/bkp -)108 763.2 R 6(available yes)54 F 18(tarta-zoot/vm -) -108 775.2 R 6(available yes)54 F F0(tzpfms 0.3.4-14-gf5996ad)72 817.889 -Q(December 4, 2022)84.693 E(1)183.842 E 0 Cg EP +108 691.2 R 18(available yes)54 F($)108 715.2 Q F3(zfs-fido2-add-backup) +6 E F4(\255al)7.666 E 72(NAME BACK-END)108 727.2 R 6(KEYSTATUS COHERENT) +12 F 54(filling -)108 739.2 R 6(available yes)54 F 36(tarta-zoot TPM1.X) +108 751.2 R 6(available yes)24 F 12(tarta-zoot/bkp -)108 763.2 R 6 +(available yes)54 F 18(tarta-zoot/vm -)108 775.2 R 6(available yes)54 F +F1(tzpfms 0.3.4-14-gf5996ad)72 817.889 Q(December 4, 2022)84.693 E(1) +183.842 E 0 Cg EP %%Page: 2 7 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF 93.563(ZFS-TPM-LIST\(8\) System)72 48 R -(Manager')2.5 E 2.5(sM)-.55 G 91.062(anual ZFS-TPM-LIST\(8\))-2.5 F/F1 -10/Times-Bold@0 SF 1.666(SPECIAL THANKS)72 84 R F0 1.6 -.8(To a)108 96 T +/F0 10/Times-Italic@0 SF(ZFS-TPM-LIST)72 48 Q/F1 10/Times-Roman@0 SF +96.343(\(8\) System)B(Manager')2.5 E 2.5(sM)-.55 G(anual)-2.5 E F0 +(ZFS-TPM-LIST)96.342 E F1(\(8\))A/F2 10/Times-Bold@0 SF 1.666 +(SPECIAL THANKS)72 84 R F1 1.6 -.8(To a)108 96 T (ll who support further de).8 E -.15(ve)-.25 G(lopment, in particular:) -.15 E F1<83>128 108 Q F0(ThePhD)7.5 E F1<83>128 120 Q F0(Embark Studios) -7.5 E F1<83>128 132 Q F0(Jasper Bekk)7.5 E(ers)-.1 E F1<83>128 144 Q F0 -(EvModder)7.5 E F1(REPOR)72 160.8 Q 1.666(TING B)-.4 F(UGS)-.1 E F0 +.15 E F2<83>128 108 Q F1(ThePhD)7.5 E F2<83>128 120 Q F1(Embark Studios) +7.5 E F2<83>128 132 Q F1(Jasper Bekk)7.5 E(ers)-.1 E F2<83>128 144 Q F1 +(EvModder)7.5 E F2(REPOR)72 160.8 Q 1.666(TING B)-.4 F(UGS)-.1 E F1 (https://todo.sr)108 172.8 Q(.ht/\001nabijaczle)-.55 E(weli/tzpfms)-.25 -E/F2 10/Courier@0 SF(\001nabijaczleweli/tzpfms@lists.sr.ht)108 189.6 Q -F0 83.762(,a)C(rchi)-83.762 E -.15(ve)-.25 G 83.763(da).15 G(t)-83.763 E -(https://lists.sr)108 201.6 Q(.ht/\001nabijaczle)-.55 E(weli/tzpfms.) --.25 E(tzpfms 0.3.4-14-gf5996ad)72 817.889 Q(December 4, 2022)84.693 E -(2)183.842 E 0 Cg EP +E F0(\001nabijaczle)108 189.6 Q(weli/tzpfms@lists.sr)-.15 E(.ht)-1.11 E +F1 2.5(,a)C(rchi)-2.5 E -.15(ve)-.25 G 2.5(da).15 G 2.5(th)-2.5 G +(ttps://lists.sr)-2.5 E(.ht/\001nabijaczle)-.55 E(weli/tzpfms.)-.25 E +(tzpfms 0.3.4-14-gf5996ad)72 817.889 Q(December 4, 2022)84.693 E(2) +183.842 E 0 Cg EP %%Page: 1 8 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF 36.913(ZFS-TPM1X-CHANGE-KEY\(8\) System)72 48 R -(Manager')2.5 E 2.5(sM)-.55 G 34.412(anual ZFS-TPM1X-CHANGE-KEY\(8\)) --2.5 F/F1 10/Times-Bold@0 SF -.2(NA)72 84 S(ME).2 E/F2 10/Courier-Bold@0 -SF(zfs-tpm1x-change-key)108 96 Q F0 2.5<8a63>2.5 G(hange ZFS dataset k) --2.5 E .3 -.15(ey t)-.1 H 2.5(oo).15 G(ne stored on the TPM)-2.5 E F1 -(SYNOPSIS)72 112.8 Q F2(zfs-fido2-add-backup)108 124.8 Q F0([)2.5 E F2 -1.666 E/F3 10/Courier-Oblique@0 SF(backup-file)6 E F0 2.5(][)C F2 --.834 E F3(PCR)6 E F0([)A F2(,)A F3(PCR)A F0 1.666(]...)C(])-1.666 -E F3(dataset)2.5 E F1(DESCRIPTION)72 141.6 Q F0 2.867 -.8(To n)108 153.6 -T 1.267(ormalise the).8 F F3(dataset)3.767 E F0(,)A F2 -(zfs-fido2-add-backup)3.766 E F0 1.266 -(will open its encryption root in its stead.)3.766 F F2 -(zfs-fido2-add-backup)108 165.6 Q F0(will)14.654 E/F4 10/Times-Italic@0 -SF(ne)14.654 E(ver)-.15 E F0 12.154(create or destro)14.654 F 14.655(ye) --.1 G 12.155(ncryption roots; use)-14.655 F/F5 10/Courier@0 SF -(zfs-change-key)108 177.6 Q F0(\(8\) for that.)A -(First, a connection is made to the TPM, which)108 194.4 Q F4(must)2.5 E -F0(be TPM-1.X-compatible.)2.5 E(If)108 211.2 Q F3(dataset)3.177 E F0 -.1 +/F0 10/Times-Italic@0 SF(ZFS-TPM1X-CHANGE-KEY)72 48 Q/F1 10 +/Times-Roman@0 SF 43.013(\(8\) System)B(Manager')2.5 E 2.5(sM)-.55 G +(anual)-2.5 E F0(ZFS-TPM1X-CHANGE-KEY)43.012 E F1(\(8\))A/F2 10 +/Times-Bold@0 SF -.2(NA)72 84 S(ME).2 E F1(zfs-tpm1x-change-k)108 96 Q +.3 -.15(ey \212 c)-.1 H(hange ZFS dataset k).15 E .3 -.15(ey t)-.1 H 2.5 +(oo).15 G(ne stored on the TPM)-2.5 E F2(SYNOPSIS)72 112.8 Q/F3 10 +/Courier-Bold@0 SF(zfs-fido2-add-backup)108 124.8 Q F1([)2.5 E/F4 10 +/Courier@0 SF1.666 E/F5 10/Courier-Oblique@0 SF(backup-file)6 E F1 +2.5(][)C F4-.834 E F5(PCR)6 E F1([)A F4(,)A F5(PCR)A F1 1.666 +(]...)C(])-1.666 E F5(dataset)2.5 E F2(DESCRIPTION)72 141.6 Q F1 2.866 +-.8(To n)108 153.6 T 1.266(ormalise the).8 F F5(dataset)3.766 E F1(,)A +F3(zfs-fido2-add-backup)3.766 E F1 1.266 +(will open its encryption root in its stead.)3.766 F F3 +(zfs-fido2-add-backup)108 165.6 Q F1(will)3.515 E F0(ne)3.515 E(ver)-.15 +E F1 1.015(create or destro)3.515 F 3.514(ye)-.1 G 1.014 +(ncryption roots; use)-3.514 F F0(zfs-c)3.514 E(hang)-.15 E(e-k)-.1 E +-.3(ey)-.1 G F1 1.014(\(8\) for).3 F(that.)108 177.6 Q +(First, a connection is made to the TPM, which)108 194.4 Q F0(must)2.5 E +F1(be TPM-1.X-compatible.)2.5 E(If)108 211.2 Q F5(dataset)3.176 E F1 -.1 (wa)3.176 G 3.176(sp).1 G(re)-3.176 E .676(viously encrypted with)-.25 F -F2(tzpfms)3.176 E F0 .676(and the)3.176 F F1(TPM1.X)3.176 E F0 .676 +F3(tzpfms)3.176 E F1 .676(and the)3.176 F F2(TPM1.X)3.176 E F1 .676 (back-end w)3.176 F .676(as used, the meta-)-.1 F .926 (data will be silently cleared.)108 223.2 R .926 (Otherwise, or in case of an error)5.926 F 3.426(,d)-.4 G .926 (ata required for manual interv)-3.426 F(ention)-.15 E (will be written to the standard error stream.)108 235.2 Q(Ne)108 252 Q -.295(xt, a ne)-.15 F 2.794(ww)-.25 G .294(rapping k)-2.794 F .594 -.15 -(ey i)-.1 H 2.794(sg).15 G .294(enerated on the TPM, optionally back) --2.794 F .294(ed up \(see)-.1 F F1(OPTIONS)2.794 E F0 .294 -(\), and sealed)B .585(on the TPM; the user is prompted for an optional\ - passphrase to protect the k)108 264 R .886 -.15(ey w)-.1 H .586 -(ith, and for the SRK).15 F(passphrase, set when taking o)108 276 Q -(wnership, if not "well-kno)-.25 E(wn" \(all zeroes\).)-.25 E(The follo) -108 292.8 Q(wing properties are set on)-.25 E F3(dataset)2.5 E F0(:)A F1 -<83>128 304.8 Q F5(xyz.nabijaczleweli:tzpfms.backend)7.5 E F0(=)A F1 -(TPM1.X)A<83>128 316.8 Q F5(xyz.nabijaczleweli:tzpfms.key)7.5 E F0(=)A -F3(parent-key-blob)A F2(:)A F3(sealed-object-blob)A F5(tzpfms.backend) -108 333.6 Q F0 .292(identi\214es this dataset for w)2.792 F .291 -(ork with)-.1 F F1(TPM1.X)2.791 E F0(-back-ended)A F2(tzpfms)2.791 E F0 -.291(tools \(namely)2.791 F F5(zfs-tpm1x-change-key)108 345.6 Q F0 -(\(8\),)A F5(zfs-tpm1x-load-key)2.5 E F0(\(8\), and)A F5 -(zfs-tpm1x-clear-key)2.5 E F0(\(8\)\).)A F5(tzpfms.key)108 362.4 Q F0 -1.412(is a colon-separated pair of he)3.912 F 1.412 -(xadecimal-string \(i.e. "4F7730" for "Ow0"\) blobs; the)-.15 F .868 -(\214rst one represents the RSA k)108 374.4 R 1.168 -.15(ey p)-.1 H .867 +1.74(xt, a ne)-.15 F 4.24(ww)-.25 G 1.74(rapping k)-4.24 F 2.04 -.15 +(ey i)-.1 H 4.24(sg).15 G 1.74(enerated on the TPM, optionally back) +-4.24 F 1.741(ed up \(see \231OPTIONS\232\), and)-.1 F .294(sealed on t\ +he TPM; the user is prompted for an optional passphrase to protect the \ +k)108 264 R .594 -.15(ey w)-.1 H .294(ith, and for the).15 F +(SRK passphrase, set when taking o)108 276 Q(wnership, if not "well-kno) +-.25 E(wn" \(all zeroes\).)-.25 E(The follo)108 292.8 Q +(wing properties are set on)-.25 E F5(dataset)2.5 E F1(:)A F2<83>128 +304.8 Q F4(xyz.nabijaczleweli:tzpfms.backend)7.5 E F1(=)A F2(TPM1.X)A +<83>128 316.8 Q F4(xyz.nabijaczleweli:tzpfms.key)7.5 E F1(=)A F5 +(parent-key-blob)A F4(:)A F5(sealed-object-blob)A F4(tzpfms.backend)108 +333.6 Q F1 .291(identi\214es this dataset for w)2.791 F .292(ork with) +-.1 F F2(TPM1.X)2.792 E F1(-back-ended)A F3(tzpfms)2.792 E F1 .292 +(tools \(namely)2.792 F F0(zfs-tpm1x-c)108 345.6 Q(hang)-.15 E(e-k)-.1 E +-.3(ey)-.1 G F1(\(8\),).3 E F0(zfs-tpm1x-load-k)2.5 E -.3(ey)-.1 G F1 +(\(8\), and).3 E F0(zfs-tpm1x-clear)2.5 E(-k)-.2 E -.3(ey)-.1 G F1 +(\(8\)\).).3 E F4(tzpfms.key)108 362.4 Q F1 1.412 +(is a colon-separated pair of he)3.913 F 1.412 +(xadecimal-string \(i.e. "4F7730" for "Ow0"\) blobs; the)-.15 F .867 +(\214rst one represents the RSA k)108 374.4 R 1.167 -.15(ey p)-.1 H .868 (rotecting the blob, and it is protected with either the passphrase, if) -.15 F(pro)108 386.4 Q 1.413(vided, or the SHA1 constant)-.15 F F5 -(CE4CF677875B5EB8993591D5A9AF1ED24A3A8736)3.914 E F0 3.914(;t)C 1.414 -(he sec-)-3.914 F .379 +.15 F(pro)108 386.4 Q 1.414(vided, or the SHA1 constant)-.15 F F4 +(CE4CF677875B5EB8993591D5A9AF1ED24A3A8736)3.913 E F1 3.913(;t)C 1.413 +(he sec-)-3.913 F .379 (ond represents the sealed object containing the wrapping k)108 398.4 R -.15(ey)-.1 G 2.879(,a)-.5 G .379 -(nd is protected with the SHA1 constant)-2.879 F F5 -(B9EE715DBE4B243FAA81EA04306E063710383E35)108 410.4 Q F0 6.72(.T)C 1.72 -(here e)-6.72 F 1.721(xists no other user)-.15 F 1.721(-land tool for) --.2 F(decrypting this; perhaps there should be.)108 422.4 Q(Finally)108 -439.2 Q 12.006(,t)-.65 G 9.506(he equi)-12.006 F -.25(va)-.25 G 9.506 -(lent of).25 F F2 9.505(zfs change-key)12.005 F17.171 E F5 -(keylocation=prompt)15.505 E F217.171 E F5(keyformat=raw)108 451.2 -Q F3(dataset)6.106 E F0 .106(is performed with the ne)2.606 F 2.606(wk) --.25 G -.15(ey)-2.706 G 5.106(.I)-.5 G 2.606(fa)-5.106 G 2.606(ne)-2.606 -G .107(rror occurred, best ef)-2.606 F .107(fort is made)-.25 F +(nd is protected with the SHA1 constant)-2.879 F F4 +(B9EE715DBE4B243FAA81EA04306E063710383E35)108 410.4 Q F1 6.721(.T)C +1.721(here e)-6.721 F 1.721(xists no other user)-.15 F 1.72 +(-land tool for)-.2 F(decrypting this; perhaps there should be.)108 +422.4 Q(Finally)108 439.2 Q 12.005(,t)-.65 G 9.505(he equi)-12.005 F +-.25(va)-.25 G 9.505(lent of).25 F F3(zfs)12.005 E F4 11.172 +(change-key \255o)15.505 F 11.172(keylocation=prompt \255o)15.506 F +(keyformat=raw)108 451.2 Q F5(dataset)6.107 E F1 .107 +(is performed with the ne)2.607 F 2.606(wk)-.25 G -.15(ey)-2.706 G 5.106 +(.I)-.5 G 2.606(fa)-5.106 G 2.606(ne)-2.606 G .106 +(rror occurred, best ef)-2.606 F .106(fort is made)-.25 F (to clean up the properties, or to issue a note for manual interv)108 -463.2 Q(ention into the standard error stream.)-.15 E 4.056<418c>108 480 -S 1.556(nal v)-4.056 F 1.556(eri\214cation should be made by running) --.15 F F2 3.222(zfs-tpm1x-load-key \255n)4.056 F F3(dataset)7.555 E F0 -6.555(.I)C 4.055(ft)-6.555 G(hat)-4.055 E .729 +463.2 Q(ention into the standard error stream.)-.15 E 4.055<418c>108 480 +S 1.555(nal v)-4.055 F 1.556(eri\214cation should be made by running) +-.15 F F3(zfs-tpm1x-load-key)4.056 E F49.222 E F5(dataset)7.556 E +F1 6.556(.I)C 4.056(ft)-6.556 G(hat)-4.056 E .729 (command succeeds, all is well, b)108 492 R .729 (ut otherwise the dataset can be manually rolled back to a passphrase) --.2 F(with)108 504 Q F2(zfs-tpm1x-clear-key)5.147 E F3(dataset)8.647 E -F0(\(or)5.147 E 5.146(,i)-.4 G 5.146(ft)-5.146 G 2.646(hat f)-5.146 F -2.646(ails to w)-.1 F(ork,)-.1 E F2 2.646(zfs change-key)5.146 F -10.312 E F5(keyformat=passphrase)108 516 Q F3(dataset)6 E F0 -(\), and you are hereby ask)A(ed to report a b)-.1 E(ug, please.)-.2 E -F2(zfs-tpm1x-clear-key)108 532.8 Q F3(dataset)7.606 E F0 1.607 -(can be used to clear the properties and go back to using a)4.106 F -(passphrase.)108 544.8 Q F1(OPTIONS)72 561.6 Q F2109.666 573.6 Q -F3(backup-file)6 E F0(Sa)203 573.6 Q .353 -.15(ve a b)-.2 H .052 -(ack-up of the k).15 F .352 -.15(ey t)-.1 H(o).15 E F3(backup-file)2.552 -E F0 2.552(,w)C .052(hich must not e)-2.552 F .052(xist beforehand.)-.15 -F .693(This back-up)203 585.6 R F4(must)3.193 E F0 .694 -(be stored securely)3.193 F 3.194(,o)-.65 G -.25(ff)-3.194 G 3.194 -(-site. In).25 F .694(case of a catastrophic e)3.194 F -.15(ve)-.25 G +-.2 F(with)108 504 Q F3(zfs-tpm1x-clear-key)5.146 E F5(dataset)8.646 E +F1(\(or)5.146 E 5.146(,i)-.4 G 5.146(ft)-5.146 G 2.646(hat f)-5.146 F +2.646(ails to w)-.1 F(ork,)-.1 E F3(zfs)5.147 E F4 4.313 +(change-key \255o)8.647 F(keyformat=passphrase)108 516 Q F5(dataset)6 E +F1(\), and you are hereby ask)A(ed to report a b)-.1 E(ug, please.)-.2 E +F3(zfs-tpm1x-clear-key)108 532.8 Q F5(dataset)7.607 E F1 1.607 +(can be used to clear the properties and go back to using a)4.107 F +(passphrase.)108 544.8 Q F2(OPTIONS)72 561.6 Q F4109.666 573.6 Q +F5(backup-file)6 E F1(Sa)203 573.6 Q .352 -.15(ve a b)-.2 H .052 +(ack-up of the k).15 F .352 -.15(ey t)-.1 H(o).15 E F5(backup-file)2.552 +E F1 2.552(,w)C .052(hich must not e)-2.552 F .053(xist beforehand.)-.15 +F .694(This back-up)203 585.6 R F0(must)3.194 E F1 .694 +(be stored securely)3.194 F 3.194(,o)-.65 G -.25(ff)-3.194 G 3.194 +(-site. In).25 F .693(case of a catastrophic e)3.194 F -.15(ve)-.25 G (nt,).15 E(the k)203 597.6 Q .3 -.15(ey c)-.1 H(an be loaded by running) -.15 E F2(zfs load-key)233 609.6 Q F3(dataset)6 E F5(<)6 E F3 -(backup-file)6 E F2109.666 626.4 Q F3(PCR)6 E F0([)A F2(,)A F3 -(PCR)A F0 1.666(]...)C .639(Bind the k)203 626.4 R .939 -.15(ey t)-.1 H -3.139(os).15 G .639(pace- or comma-separated)-3.139 F F3(PCR)3.139 E F0 -3.139(s\212i)C 3.139(ft)-3.139 G(he)-3.139 E 3.139(yc)-.15 G .638 -(hange, the wrap-)-3.139 F .462(ping k)203 638.4 R .762 -.15(ey w)-.1 H -.462(ill not be able to be unsealed.).15 F .463 -(The minimum number of PCRs for a)5.462 F(PC TPM is)203 650.4 Q F1(24) -2.5 E F0(\(numbered [)2.5 E F1(0)A F0(,)A F1(23)2.5 E F0 2.5(]\). F)B -(or most, this is also the maximum.)-.15 E F1(ENVIR)72 667.2 Q 1.666 -(ONMENT V)-.3 F(ARIABLES)-1.35 E F5(TZPFMS_PASSPHRASE_HELPER)108 679.2 Q -F0 .046(By def)133 691.2 R .045(ault, passphrases are prompted for and \ -read in on the standard output and input streams.)-.1 F(If)5.045 E F5 -(TZPFMS_PASSPHRASE_HELPER)133 703.2 Q F0 1.595(is set and nonempty)4.095 -F 4.096(,i)-.65 G 4.096(tw)-4.096 G 1.596(ill be run via)-4.096 F F5 -(/bin/)4.096 E F2 3.262(sh \255c)B F0(to)4.096 E(pro)133 715.2 Q -(vide each passphrase, instead.)-.15 E .643 +.15 E F3(zfs)233 609.6 Q F4(load-key)6 E F5(dataset)6 E F4(<)6 E F5 +(backup-file)6 E F4109.666 626.4 Q F5(PCR)6 E F1([)A F4(,)A F5 +(PCR)A F1 1.666(]...)C .638(Bind the k)203 626.4 R .939 -.15(ey t)-.1 H +3.139(os).15 G .639(pace- or comma-separated)-3.139 F F5(PCR)3.139 E F1 +3.139(s\212i)C 3.139(ft)-3.139 G(he)-3.139 E 3.139(yc)-.15 G .639 +(hange, the wrap-)-3.139 F .463(ping k)203 638.4 R .763 -.15(ey w)-.1 H +.463(ill not be able to be unsealed.).15 F .462 +(The minimum number of PCRs for a)5.462 F(PC TPM is)203 650.4 Q F2(24) +2.5 E F1(\(numbered [)2.5 E F2(0)A F1(,)A F2(23)2.5 E F1 2.5(]\). F)B +(or most, this is also the maximum.)-.15 E F2(ENVIR)72 667.2 Q 1.666 +(ONMENT V)-.3 F(ARIABLES)-1.35 E F4(TZPFMS_PASSPHRASE_HELPER)108 679.2 Q +F1 .045(By def)133 691.2 R .045(ault, passphrases are prompted for and \ +read in on the standard output and input streams.)-.1 F(If)5.046 E F4 +(TZPFMS_PASSPHRASE_HELPER)133 703.2 Q F1 .896(is set and nonempty)3.397 +F 3.396(,i)-.65 G 3.396(tw)-3.396 G .896(ill be run via)-3.396 F F0 +(/bin/)3.396 E F3(sh)A F48.562 E F1 .896(to pro-)3.396 F +(vide each passphrase, instead.)133 715.2 Q .643 (The standard output stream of the helper is tied to an anon)133 732 R .643(ymous \214le and used in its entirety as)-.15 F(the passphrase, e) 133 744 Q(xcept for a trailing ne)-.15 E(w-line, if an)-.25 E 3.8 -.65 @@ -833,356 +847,363 @@ F 4.096(,i)-.65 G 4.096(tw)-4.096 G 1.596(ill be run via)-4.096 F F5 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF 36.913(ZFS-TPM1X-CHANGE-KEY\(8\) System)72 48 R -(Manager')2.5 E 2.5(sM)-.55 G 34.412(anual ZFS-TPM1X-CHANGE-KEY\(8\)) --2.5 F/F1 10/Courier@0 SF($1)143 84 Q F0 +/F0 10/Times-Italic@0 SF(ZFS-TPM1X-CHANGE-KEY)72 48 Q/F1 10 +/Times-Roman@0 SF 43.013(\(8\) System)B(Manager')2.5 E 2.5(sM)-.55 G +(anual)-2.5 E F0(ZFS-TPM1X-CHANGE-KEY)43.012 E F1(\(8\))A/F2 10 +/Courier@0 SF($1)143 84 Q F1 (Pre-formatted noun phrase with all the information belo)160 84 Q 1.3 --.65(w, f)-.25 H(or use as a prompt).65 E F1($2)143 96 Q F0 +-.65(w, f)-.25 H(or use as a prompt).65 E F2($2)143 96 Q F1 (Either the dataset name or the element of the TPM hierarch)160 96 Q 2.5 -(yb)-.05 G(eing prompted for)-2.5 E F1($3)143 108 Q F0("ne)160 108 Q +(yb)-.05 G(eing prompted for)-2.5 E F2($3)143 108 Q F1("ne)160 108 Q (w" if this is for a ne)-.25 E 2.5(wp)-.25 G(assphrase, otherwise blank) --2.5 E F1($4)143 120 Q F0("ag)160 120 Q(ain" if it')-.05 E 2.5(st)-.55 G -(he second prompt for that passphrase, otherwise blank)-2.5 E .177 -(If the helper doesn')133 136.8 R 2.677(te)-.18 G .177 -(xist \(the shell e)-2.827 F .177(xits with)-.15 F/F2 10/Times-Bold@0 SF -(127)2.677 E F0 .178(\), a diagnostic is issued and the normal prompt)B +-2.5 E F2($4)143 120 Q F1("ag)160 120 Q(ain" if it')-.05 E 2.5(st)-.55 G +(he second prompt for that passphrase, otherwise blank)-2.5 E .178 +(If the helper doesn')133 136.8 R 2.678(te)-.18 G .178 +(xist \(the shell e)-2.828 F .177(xits with)-.15 F/F3 10/Times-Bold@0 SF +(127)2.677 E F1 .177(\), a diagnostic is issued and the normal prompt)B (is used as f)133 148.8 Q 2.5(all-back. If)-.1 F(it f)2.5 E(ails for an) --.1 E 2.5(yo)-.15 G(ther reason, the prompting is aborted.)-2.5 E F2 +-.1 E 2.5(yo)-.15 G(ther reason, the prompting is aborted.)-2.5 E F3 1.666(TPM1.X back-end con\214guration)72 165.6 R .625(TPM selection)87 -177.6 R F0(The)108 189.6 Q/F3 10/Courier-Bold@0 SF(tzpfms)2.73 E F0 .23 -(suite connects to a local)2.73 F F1(tcsd)2.73 E F0 .23 -(\(8\) process \(at)B F1(localhost:30003)2.729 E F0 2.729(\)b)C 2.729 -(yd)-2.729 G(ef)-2.729 E 2.729(ault. Use)-.1 F(the)2.729 E(en)108 201.6 -Q(vironment v)-.4 E(ariable)-.25 E F1(TZPFMS_TPM1X)2.5 E F0 -(to specify a remote TCS hostname.)2.5 E .11(The T)108 218.4 R(rouSerS) --.35 E F1(tcsd)2.61 E F0 .11(\(8\) daemon will try)B F1(/dev/tpm0)2.61 E -F0 2.61(,t)C(hen)-2.61 E F1(/udev/tpm0)2.611 E F0 2.611(,t)C(hen)-2.611 -E F1(/dev/tpm)2.611 E F0 2.611(;b)C 2.611(yo)-2.611 G(ccu-)-2.611 E -.1 -(py)108 230.4 S(ing one of the earlier ones with, for e).1 E -(xample, shell redirection, a later one can be selected.)-.15 E F2 .625 -(See also)87 247.2 R F0(The T)108 259.2 Q +177.6 R F1(The)108 189.6 Q/F4 10/Courier-Bold@0 SF(tzpfms)2.508 E F1 +.008(suite connects to a local)2.508 F F0(tcsd)2.508 E F1 .008 +(\(8\) process \(at)B F0(localhost:30003)2.508 E F1 2.509(\)b)C 2.509 +(yd)-2.509 G(ef)-2.509 E 2.509(ault. Use)-.1 F .009(the en)2.509 F +(viron-)-.4 E(ment v)108 201.6 Q(ariable)-.25 E F2(TZPFMS_TPM1X)2.5 E F1 +(to specify a remote TCS hostname.)2.5 E .445(The T)108 218.4 R(rouSerS) +-.35 E F0(tcsd)2.945 E F1 .445(\(8\) daemon will try)B F0(/de)2.945 E +(v/tpm0)-.15 E F1 2.945(,t)C(hen)-2.945 E F0(/ude)2.945 E(v/tpm0)-.15 E +F1 2.945(,t)C(hen)-2.945 E F0(/de)2.944 E(v/tpm)-.15 E F1 2.944(;b)C +2.944(yo)-2.944 G(ccup)-2.944 E .444(ying one of)-.1 F +(the earlier ones with, for e)108 230.4 Q +(xample, shell redirection, a later one can be selected.)-.15 E F3 .625 +(See also)87 247.2 R F1(The T)108 259.2 Q (rouSerS project page at https://sourcefor)-.35 E (ge.net/projects/trousers.)-.18 E 4.415 (The TPM 1.2 main speci\214cation inde)108 276 R 6.915(xa)-.15 G 6.915 (th)-6.915 G(ttps://trustedcomputinggroup.or)-6.915 E -(g/resource/tpm-main-)-.18 E(speci\214cation.)108 288 Q F2 1.666 -(SPECIAL THANKS)72 304.8 R F0 1.6 -.8(To a)108 316.8 T +(g/resource/tpm-main-)-.18 E(speci\214cation.)108 288 Q F3 1.666 +(SPECIAL THANKS)72 304.8 R F1 1.6 -.8(To a)108 316.8 T (ll who support further de).8 E -.15(ve)-.25 G(lopment, in particular:) -.15 E F2<83>128 328.8 Q F0(ThePhD)7.5 E F2<83>128 340.8 Q F0 -(Embark Studios)7.5 E F2<83>128 352.8 Q F0(Jasper Bekk)7.5 E(ers)-.1 E -F2<83>128 364.8 Q F0(EvModder)7.5 E F2(REPOR)72 381.6 Q 1.666(TING B)-.4 -F(UGS)-.1 E F0(https://todo.sr)108 393.6 Q(.ht/\001nabijaczle)-.55 E -(weli/tzpfms)-.25 E F1(\001nabijaczleweli/tzpfms@lists.sr.ht)108 410.4 Q -F0 83.762(,a)C(rchi)-83.762 E -.15(ve)-.25 G 83.763(da).15 G(t)-83.763 E -(https://lists.sr)108 422.4 Q(.ht/\001nabijaczle)-.55 E(weli/tzpfms.) --.25 E F2 1.666(SEE ALSO)72 439.2 R F0 -(PCR allocations: https://wiki.archlinux.or)108 451.2 Q(g/title/T)-.18 E +.15 E F3<83>128 328.8 Q F1(ThePhD)7.5 E F3<83>128 340.8 Q F1 +(Embark Studios)7.5 E F3<83>128 352.8 Q F1(Jasper Bekk)7.5 E(ers)-.1 E +F3<83>128 364.8 Q F1(EvModder)7.5 E F3(REPOR)72 381.6 Q 1.666(TING B)-.4 +F(UGS)-.1 E F1(https://todo.sr)108 393.6 Q(.ht/\001nabijaczle)-.55 E +(weli/tzpfms)-.25 E F0(\001nabijaczle)108 410.4 Q(weli/tzpfms@lists.sr) +-.15 E(.ht)-1.11 E F1 2.5(,a)C(rchi)-2.5 E -.15(ve)-.25 G 2.5(da).15 G +2.5(th)-2.5 G(ttps://lists.sr)-2.5 E(.ht/\001nabijaczle)-.55 E +(weli/tzpfms.)-.25 E F3 1.666(SEE ALSO)72 427.2 R F1 +(PCR allocations: https://wiki.archlinux.or)108 439.2 Q(g/title/T)-.18 E (rusted_Platform_Module#Accessing_PCR_re)-.35 E(gisters)-.15 E -(and https://trustedcomputinggroup.or)108 463.2 Q +(and https://trustedcomputinggroup.or)108 451.2 Q (g/wp-content/uploads/PC-)-.18 E(ClientSpeci\214c_Platform_Pro\214le_fo\ -r_TPM_2p0_Systems_v51.pdf, Section 2.3.4 "PCR Usage", T)108 475.2 Q -(able)-.8 E(1.)108 487.2 Q(tzpfms 0.3.4-14-gf5996ad)72 817.889 Q +r_TPM_2p0_Systems_v51.pdf, Section 2.3.4 "PCR Usage", T)108 463.2 Q +(able)-.8 E(1.)108 475.2 Q(tzpfms 0.3.4-14-gf5996ad)72 817.889 Q (February 28, 2024)84.688 E(2)183.837 E 0 Cg EP %%Page: 1 10 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF 45.793(ZFS-TPM1X-CLEAR-KEY\(8\) System)72 48 R -(Manager')2.5 E 2.5(sM)-.55 G 43.292(anual ZFS-TPM1X-CLEAR-KEY\(8\))-2.5 -F/F1 10/Times-Bold@0 SF -.2(NA)72 84 S(ME).2 E/F2 10/Courier-Bold@0 SF -(zfs-tpm1x-clear-key)108 96 Q F0 3.008<8a72>3.008 G -.25(ew)-3.008 G -.508(rap ZFS dataset k).25 F .808 -.15(ey i)-.1 H 3.008(np).15 G(asssw) --3.008 E .508(ord and clear tzpfms TPM1.X meta-)-.1 F(data)108 108 Q F1 -(SYNOPSIS)72 124.8 Q F2(zfs-fido2-add-backup)108 136.8 Q/F3 10 -/Courier-Oblique@0 SF(dataset)2.5 E F1(DESCRIPTION)72 153.6 Q F0 -(After v)108 165.6 Q(erifying)-.15 E F3(dataset)2.5 E F0 -.1(wa)2.5 G -2.5(se).1 G(ncrypted with)-2.5 E F2(tzpfms)2.5 E F0(back)2.5 E(end)-.1 E -F1(TPM1.X)2.5 E F0(:)A 5(1. performs)118 177.6 R 5.641(the equi)8.141 F --.25(va)-.25 G 5.641(lent of).25 F F2 5.642(zfs change-key)8.142 F -13.308 E/F4 10/Courier@0 SF(keylocation=prompt)11.642 E F213.308 E -F4(keyformat=passphrase)133 189.6 Q F3(dataset)6 E F0(,)A 5(2. remo)118 -201.6 R -.15(ve)-.15 G 10.689(st).15 G(he)-10.689 E F4 -(xyz.nabijaczleweli:tzpfms.)10.689 E F0({)A F4(backend)A F0(,)A F4(key) -14.189 E F0 10.689(}p)C 8.189(roperties from)-10.689 F F3(dataset)133 -213.6 Q F0(.)A(See)108 230.4 Q F4(zfs-tpm1x-change-key)2.5 E F0 -(\(8\) for a detailed description.)A F1 1.666 -(TPM1.X back-end con\214guration)72 247.2 R .625(TPM selection)87 259.2 -R F0(The)108 271.2 Q F2(tzpfms)2.729 E F0 .229 -(suite connects to a local)2.729 F F4(tcsd)2.73 E F0 .23 -(\(8\) process \(at)B F4(localhost:30003)2.73 E F0 2.73(\)b)C 2.73(yd) --2.73 G(ef)-2.73 E 2.73(ault. Use)-.1 F(the)2.73 E(en)108 283.2 Q -(vironment v)-.4 E(ariable)-.25 E F4(TZPFMS_TPM1X)2.5 E F0 -(to specify a remote TCS hostname.)2.5 E .111(The T)108 300 R(rouSerS) --.35 E F4(tcsd)2.611 E F0 .111(\(8\) daemon will try)B F4(/dev/tpm0)2.61 -E F0 2.61(,t)C(hen)-2.61 E F4(/udev/tpm0)2.61 E F0 2.61(,t)C(hen)-2.61 E -F4(/dev/tpm)2.61 E F0 2.61(;b)C 2.61(yo)-2.61 G(ccu-)-2.61 E -.1(py)108 -312 S(ing one of the earlier ones with, for e).1 E -(xample, shell redirection, a later one can be selected.)-.15 E F1 .625 -(See also)87 328.8 R F0(The T)108 340.8 Q +/F0 10/Times-Italic@0 SF(ZFS-TPM1X-CLEAR-KEY)72 48 Q/F1 10/Times-Roman@0 +SF 52.453(\(8\) System)B(Manager')2.5 E 2.5(sM)-.55 G(anual)-2.5 E F0 +(ZFS-TPM1X-CLEAR-KEY)52.452 E F1(\(8\))A/F2 10/Times-Bold@0 SF -.2(NA)72 +84 S(ME).2 E F1(zfs-tpm1x-clear)108 96 Q(-k)-.2 E .3 -.15(ey \212 r)-.1 +H -.25(ew).15 G(rap ZFS dataset k).25 E .3 -.15(ey i)-.1 H 2.5(np).15 G +(asssw)-2.5 E(ord and clear tzpfms TPM1.X metadata)-.1 E F2(SYNOPSIS)72 +112.8 Q/F3 10/Courier-Bold@0 SF(zfs-fido2-add-backup)108 124.8 Q/F4 10 +/Courier-Oblique@0 SF(dataset)2.5 E F2(DESCRIPTION)72 141.6 Q F1 +(After v)108 153.6 Q(erifying)-.15 E F4(dataset)2.5 E F1 -.1(wa)2.5 G +2.5(se).1 G(ncrypted with)-2.5 E F3(tzpfms)2.5 E F1(back)2.5 E(end)-.1 E +F2(TPM1.X)2.5 E F1(:)A 5(1. performs)118 165.6 R 5.642(the equi)8.142 F +-.25(va)-.25 G 5.642(lent of).25 F F3(zfs)8.142 E/F5 10/Courier@0 SF +7.307(change-key \255o)11.642 F 7.307(keylocation=prompt \255o)11.641 F +(keyformat=passphrase)133 177.6 Q F4(dataset)6 E F1(,)A 5(2. remo)118 +189.6 R -.15(ve)-.15 G 10.689(st).15 G(he)-10.689 E F5 +(xyz.nabijaczleweli:tzpfms.)10.689 E F1({)A F5(backend)A F1(,)A F5(key) +14.189 E F1 10.689(}p)C 8.189(roperties from)-10.689 F F4(dataset)133 +201.6 Q F1(.)A(See)108 218.4 Q F0(zfs-tpm1x-c)2.5 E(hang)-.15 E(e-k)-.1 +E -.3(ey)-.1 G F1(\(8\) for a detailed description.).3 E F2 1.666 +(TPM1.X back-end con\214guration)72 235.2 R .625(TPM selection)87 247.2 +R F1(The)108 259.2 Q F3(tzpfms)2.509 E F1 .009 +(suite connects to a local)2.509 F F0(tcsd)2.508 E F1 .008 +(\(8\) process \(at)B F0(localhost:30003)2.508 E F1 2.508(\)b)C 2.508 +(yd)-2.508 G(ef)-2.508 E 2.508(ault. Use)-.1 F .008(the en)2.508 F +(viron-)-.4 E(ment v)108 271.2 Q(ariable)-.25 E F5(TZPFMS_TPM1X)2.5 E F1 +(to specify a remote TCS hostname.)2.5 E .444(The T)108 288 R(rouSerS) +-.35 E F0(tcsd)2.944 E F1 .444(\(8\) daemon will try)B F0(/de)2.945 E +(v/tpm0)-.15 E F1 2.945(,t)C(hen)-2.945 E F0(/ude)2.945 E(v/tpm0)-.15 E +F1 2.945(,t)C(hen)-2.945 E F0(/de)2.945 E(v/tpm)-.15 E F1 2.945(;b)C +2.945(yo)-2.945 G(ccup)-2.945 E .445(ying one of)-.1 F +(the earlier ones with, for e)108 300 Q +(xample, shell redirection, a later one can be selected.)-.15 E F2 .625 +(See also)87 316.8 R F1(The T)108 328.8 Q (rouSerS project page at https://sourcefor)-.35 E (ge.net/projects/trousers.)-.18 E 4.415 -(The TPM 1.2 main speci\214cation inde)108 357.6 R 6.915(xa)-.15 G 6.915 +(The TPM 1.2 main speci\214cation inde)108 345.6 R 6.915(xa)-.15 G 6.915 (th)-6.915 G(ttps://trustedcomputinggroup.or)-6.915 E -(g/resource/tpm-main-)-.18 E(speci\214cation.)108 369.6 Q F1 1.666 -(SPECIAL THANKS)72 386.4 R F0 1.6 -.8(To a)108 398.4 T +(g/resource/tpm-main-)-.18 E(speci\214cation.)108 357.6 Q F2 1.666 +(SPECIAL THANKS)72 374.4 R F1 1.6 -.8(To a)108 386.4 T (ll who support further de).8 E -.15(ve)-.25 G(lopment, in particular:) -.15 E F1<83>128 410.4 Q F0(ThePhD)7.5 E F1<83>128 422.4 Q F0 -(Embark Studios)7.5 E F1<83>128 434.4 Q F0(Jasper Bekk)7.5 E(ers)-.1 E -F1<83>128 446.4 Q F0(EvModder)7.5 E F1(REPOR)72 463.2 Q 1.666(TING B)-.4 -F(UGS)-.1 E F0(https://todo.sr)108 475.2 Q(.ht/\001nabijaczle)-.55 E -(weli/tzpfms)-.25 E F4(\001nabijaczleweli/tzpfms@lists.sr.ht)108 492 Q -F0 83.763(,a)C(rchi)-83.763 E -.15(ve)-.25 G 83.762(da).15 G(t)-83.762 E -(https://lists.sr)108 504 Q(.ht/\001nabijaczle)-.55 E(weli/tzpfms.)-.25 -E(tzpfms 0.3.4-14-gf5996ad)72 817.889 Q(December 4, 2022)84.693 E(1) -183.842 E 0 Cg EP +.15 E F2<83>128 398.4 Q F1(ThePhD)7.5 E F2<83>128 410.4 Q F1 +(Embark Studios)7.5 E F2<83>128 422.4 Q F1(Jasper Bekk)7.5 E(ers)-.1 E +F2<83>128 434.4 Q F1(EvModder)7.5 E F2(REPOR)72 451.2 Q 1.666(TING B)-.4 +F(UGS)-.1 E F1(https://todo.sr)108 463.2 Q(.ht/\001nabijaczle)-.55 E +(weli/tzpfms)-.25 E F0(\001nabijaczle)108 480 Q(weli/tzpfms@lists.sr) +-.15 E(.ht)-1.11 E F1 2.5(,a)C(rchi)-2.5 E -.15(ve)-.25 G 2.5(da).15 G +2.5(th)-2.5 G(ttps://lists.sr)-2.5 E(.ht/\001nabijaczle)-.55 E +(weli/tzpfms.)-.25 E(tzpfms 0.3.4-14-gf5996ad)72 817.889 Q +(December 4, 2022)84.693 E(1)183.842 E 0 Cg EP %%Page: 1 11 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(ZFS-TPM1X-LO)72 48 Q 51.153(AD-KEY\(8\) System) --.35 F(Manager')2.5 E 2.5(sM)-.55 G 48.652(anual ZFS-TPM1X-LO)-2.5 F -(AD-KEY\(8\))-.35 E/F1 10/Times-Bold@0 SF -.2(NA)72 84 S(ME).2 E/F2 10 -/Courier-Bold@0 SF(zfs-tpm1x-load-key)108 96 Q F0 2.5<8a6c>2.5 G -(oad TPM1.X-encrypted ZFS dataset k)-2.5 E -.15(ey)-.1 G F1(SYNOPSIS)72 -112.8 Q F2(zfs-fido2-add-backup)108 124.8 Q F0([)2.5 E F21.666 E -F0(])A/F3 10/Courier-Oblique@0 SF(dataset)2.5 E F1(DESCRIPTION)72 141.6 -Q F0 .19(After v)108 153.6 R(erifying)-.15 E F3(dataset)2.69 E F0 -.1 -(wa)2.69 G 2.69(se).1 G .19(ncrypted with)-2.69 F F2(tzpfms)2.69 E F0 -(back)2.69 E(end)-.1 E F1(TPM1.X)2.69 E F0 .191(will unseal the k)2.69 F -.491 -.15(ey a)-.1 H .191(nd load).15 F(it into)108 165.6 Q F3(dataset) -2.5 E F0(.)A .236 +/F0 10/Times-Italic@0 SF(ZFS-TPM1X-LO)72 48 Q(AD-KEY)-.55 E/F1 10 +/Times-Roman@0 SF 57.453(\(8\) System)B(Manager')2.5 E 2.5(sM)-.55 G +(anual)-2.5 E F0(ZFS-TPM1X-LO)57.452 E(AD-KEY)-.55 E F1(\(8\))A/F2 10 +/Times-Bold@0 SF -.2(NA)72 84 S(ME).2 E F1(zfs-tpm1x-load-k)108 96 Q .3 +-.15(ey \212 l)-.1 H(oad TPM1.X-encrypted ZFS dataset k).15 E -.15(ey) +-.1 G F2(SYNOPSIS)72 112.8 Q/F3 10/Courier-Bold@0 SF +(zfs-fido2-add-backup)108 124.8 Q F1([)2.5 E/F4 10/Courier@0 SF +1.666 E F1(])A/F5 10/Courier-Oblique@0 SF(dataset)2.5 E F2(DESCRIPTION) +72 141.6 Q F1 .19(After v)108 153.6 R(erifying)-.15 E F5(dataset)2.69 E +F1 -.1(wa)2.69 G 2.69(se).1 G .19(ncrypted with)-2.69 F F3(tzpfms)2.69 E +F1(back)2.69 E(end)-.1 E F2(TPM1.X)2.69 E F1 .191(will unseal the k)2.69 +F .491 -.15(ey a)-.1 H .191(nd load).15 F(it into)108 165.6 Q F5 +(dataset)2.5 E F1(.)A .236 (The user is \214rst prompted for the SRK passphrase, set when taking o) 108 182.4 R .236(wnership, if not "well-kno)-.25 F .235(wn" \(all)-.25 F (zeroes\); then for the additional passphrase, set when creating the k) 108 194.4 Q -.15(ey)-.1 G 2.5(,i)-.5 G 2.5(fo)-2.5 G(ne w)-2.5 E -(as set.)-.1 E(See)108 211.2 Q/F4 10/Courier@0 SF(zfs-tpm1x-change-key) -2.5 E F0(\(8\) for a detailed description.)A F1(OPTIONS)72 228 Q F2 -109.666 240 Q F0 3.208(Do a no-op/dry run, can be used e)131 240 R --.15(ve)-.25 G 5.708(ni).15 G 5.708(ft)-5.708 G 3.208(he k)-5.708 F -3.508 -.15(ey i)-.1 H 5.708(sa).15 G 3.208(lready loaded.)-5.708 F(Equi) -8.208 E -.25(va)-.25 G 3.208(lent to).25 F F2(zfs)5.708 E(load-key)131 -252 Q F0 -.55('s)C F24.716 E F0(option.)2.5 E F1(ENVIR)72 268.8 Q -1.666(ONMENT V)-.3 F(ARIABLES)-1.35 E F4(TZPFMS_PASSPHRASE_HELPER)108 -280.8 Q F0 .046(By def)133 292.8 R .045(ault, passphrases are prompted \ -for and read in on the standard output and input streams.)-.1 F(If)5.045 -E F4(TZPFMS_PASSPHRASE_HELPER)133 304.8 Q F0 1.595(is set and nonempty) -4.095 F 4.096(,i)-.65 G 4.096(tw)-4.096 G 1.596(ill be run via)-4.096 F -F4(/bin/)4.096 E F2 3.262(sh \255c)B F0(to)4.096 E(pro)133 316.8 Q -(vide each passphrase, instead.)-.15 E .643 +(as set.)-.1 E(See)108 211.2 Q F0(zfs-tpm1x-c)2.5 E(hang)-.15 E(e-k)-.1 +E -.3(ey)-.1 G F1(\(8\) for a detailed description.).3 E F2(OPTIONS)72 +228 Q F4109.666 240 Q F1 3.208(Do a no-op/dry run, can be used e) +131 240 R -.15(ve)-.25 G 5.708(ni).15 G 5.708(ft)-5.708 G 3.208(he k) +-5.708 F 3.508 -.15(ey i)-.1 H 5.708(sa).15 G 3.208(lready loaded.) +-5.708 F(Equi)8.208 E -.25(va)-.25 G 3.208(lent to).25 F F3(zfs)5.708 E +F4(load-key)131 252 Q F1 -.55('s)C F44.716 E F1(option.)2.5 E F2 +(ENVIR)72 268.8 Q 1.666(ONMENT V)-.3 F(ARIABLES)-1.35 E F4 +(TZPFMS_PASSPHRASE_HELPER)108 280.8 Q F1 .046(By def)133 292.8 R .045(a\ +ult, passphrases are prompted for and read in on the standard output an\ +d input streams.)-.1 F(If)5.045 E F4(TZPFMS_PASSPHRASE_HELPER)133 304.8 +Q F1 .896(is set and nonempty)3.396 F 3.396(,i)-.65 G 3.396(tw)-3.396 G +.896(ill be run via)-3.396 F F0(/bin/)3.396 E F3(sh)A F48.562 E F1 +.897(to pro-)3.396 F(vide each passphrase, instead.)133 316.8 Q .643 (The standard output stream of the helper is tied to an anon)133 333.6 R .643(ymous \214le and used in its entirety as)-.15 F(the passphrase, e) 133 345.6 Q(xcept for a trailing ne)-.15 E(w-line, if an)-.25 E 3.8 -.65 -(y. T)-.15 H(he ar).65 E(guments are:)-.18 E F4($1)143 357.6 Q F0 +(y. T)-.15 H(he ar).65 E(guments are:)-.18 E F4($1)143 357.6 Q F1 (Pre-formatted noun phrase with all the information belo)160 357.6 Q 1.3 --.65(w, f)-.25 H(or use as a prompt).65 E F4($2)143 369.6 Q F0 +-.65(w, f)-.25 H(or use as a prompt).65 E F4($2)143 369.6 Q F1 (Either the dataset name or the element of the TPM hierarch)160 369.6 Q -2.5(yb)-.05 G(eing prompted for)-2.5 E F4($3)143 381.6 Q F0("ne)160 +2.5(yb)-.05 G(eing prompted for)-2.5 E F4($3)143 381.6 Q F1("ne)160 381.6 Q(w" if this is for a ne)-.25 E 2.5(wp)-.25 G -(assphrase, otherwise blank)-2.5 E F4($4)143 393.6 Q F0("ag)160 393.6 Q +(assphrase, otherwise blank)-2.5 E F4($4)143 393.6 Q F1("ag)160 393.6 Q (ain" if it')-.05 E 2.5(st)-.55 G (he second prompt for that passphrase, otherwise blank)-2.5 E .177 (If the helper doesn')133 410.4 R 2.677(te)-.18 G .177 -(xist \(the shell e)-2.827 F .177(xits with)-.15 F F1(127)2.677 E F0 +(xist \(the shell e)-2.827 F .177(xits with)-.15 F F2(127)2.677 E F1 .178(\), a diagnostic is issued and the normal prompt)B(is used as f)133 422.4 Q 2.5(all-back. If)-.1 F(it f)2.5 E(ails for an)-.1 E 2.5(yo)-.15 -G(ther reason, the prompting is aborted.)-2.5 E F1 1.666 +G(ther reason, the prompting is aborted.)-2.5 E F2 1.666 (TPM1.X back-end con\214guration)72 439.2 R .625(TPM selection)87 451.2 -R F0(The)108 463.2 Q F2(tzpfms)2.73 E F0 .23(suite connects to a local) -2.73 F F4(tcsd)2.73 E F0 .23(\(8\) process \(at)B F4(localhost:30003) -2.729 E F0 2.729(\)b)C 2.729(yd)-2.729 G(ef)-2.729 E 2.729(ault. Use)-.1 -F(the)2.729 E(en)108 475.2 Q(vironment v)-.4 E(ariable)-.25 E F4 -(TZPFMS_TPM1X)2.5 E F0(to specify a remote TCS hostname.)2.5 E .11 -(The T)108 492 R(rouSerS)-.35 E F4(tcsd)2.61 E F0 .11 -(\(8\) daemon will try)B F4(/dev/tpm0)2.61 E F0 2.61(,t)C(hen)-2.61 E F4 -(/udev/tpm0)2.611 E F0 2.611(,t)C(hen)-2.611 E F4(/dev/tpm)2.611 E F0 -2.611(;b)C 2.611(yo)-2.611 G(ccu-)-2.611 E -.1(py)108 504 S -(ing one of the earlier ones with, for e).1 E -(xample, shell redirection, a later one can be selected.)-.15 E F1 .625 -(See also)87 520.8 R F0(The T)108 532.8 Q +R F1(The)108 463.2 Q F3(tzpfms)2.509 E F1 .009 +(suite connects to a local)2.509 F F0(tcsd)2.508 E F1 .008 +(\(8\) process \(at)B F0(localhost:30003)2.508 E F1 2.508(\)b)C 2.508 +(yd)-2.508 G(ef)-2.508 E 2.508(ault. Use)-.1 F .008(the en)2.508 F +(viron-)-.4 E(ment v)108 475.2 Q(ariable)-.25 E F4(TZPFMS_TPM1X)2.5 E F1 +(to specify a remote TCS hostname.)2.5 E .444(The T)108 492 R(rouSerS) +-.35 E F0(tcsd)2.944 E F1 .444(\(8\) daemon will try)B F0(/de)2.945 E +(v/tpm0)-.15 E F1 2.945(,t)C(hen)-2.945 E F0(/ude)2.945 E(v/tpm0)-.15 E +F1 2.945(,t)C(hen)-2.945 E F0(/de)2.945 E(v/tpm)-.15 E F1 2.945(;b)C +2.945(yo)-2.945 G(ccup)-2.945 E .445(ying one of)-.1 F +(the earlier ones with, for e)108 504 Q +(xample, shell redirection, a later one can be selected.)-.15 E F2 .625 +(See also)87 520.8 R F1(The T)108 532.8 Q (rouSerS project page at https://sourcefor)-.35 E (ge.net/projects/trousers.)-.18 E 4.415 (The TPM 1.2 main speci\214cation inde)108 549.6 R 6.915(xa)-.15 G 6.915 (th)-6.915 G(ttps://trustedcomputinggroup.or)-6.915 E -(g/resource/tpm-main-)-.18 E(speci\214cation.)108 561.6 Q F1 1.666 -(SPECIAL THANKS)72 578.4 R F0 1.6 -.8(To a)108 590.4 T +(g/resource/tpm-main-)-.18 E(speci\214cation.)108 561.6 Q F2 1.666 +(SPECIAL THANKS)72 578.4 R F1 1.6 -.8(To a)108 590.4 T (ll who support further de).8 E -.15(ve)-.25 G(lopment, in particular:) -.15 E F1<83>128 602.4 Q F0(ThePhD)7.5 E F1<83>128 614.4 Q F0 -(Embark Studios)7.5 E F1<83>128 626.4 Q F0(Jasper Bekk)7.5 E(ers)-.1 E -F1<83>128 638.4 Q F0(EvModder)7.5 E F1(REPOR)72 655.2 Q 1.666(TING B)-.4 -F(UGS)-.1 E F0(https://todo.sr)108 667.2 Q(.ht/\001nabijaczle)-.55 E -(weli/tzpfms)-.25 E F4(\001nabijaczleweli/tzpfms@lists.sr.ht)108 684 Q -F0 83.762(,a)C(rchi)-83.762 E -.15(ve)-.25 G 83.763(da).15 G(t)-83.763 E -(https://lists.sr)108 696 Q(.ht/\001nabijaczle)-.55 E(weli/tzpfms.)-.25 -E(tzpfms 0.3.4-14-gf5996ad)72 817.889 Q(December 4, 2022)84.693 E(1) -183.842 E 0 Cg EP +.15 E F2<83>128 602.4 Q F1(ThePhD)7.5 E F2<83>128 614.4 Q F1 +(Embark Studios)7.5 E F2<83>128 626.4 Q F1(Jasper Bekk)7.5 E(ers)-.1 E +F2<83>128 638.4 Q F1(EvModder)7.5 E F2(REPOR)72 655.2 Q 1.666(TING B)-.4 +F(UGS)-.1 E F1(https://todo.sr)108 667.2 Q(.ht/\001nabijaczle)-.55 E +(weli/tzpfms)-.25 E F0(\001nabijaczle)108 684 Q(weli/tzpfms@lists.sr) +-.15 E(.ht)-1.11 E F1 2.5(,a)C(rchi)-2.5 E -.15(ve)-.25 G 2.5(da).15 G +2.5(th)-2.5 G(ttps://lists.sr)-2.5 E(.ht/\001nabijaczle)-.55 E +(weli/tzpfms.)-.25 E(tzpfms 0.3.4-14-gf5996ad)72 817.889 Q +(December 4, 2022)84.693 E(1)183.842 E 0 Cg EP %%Page: 1 12 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF 44.133(ZFS-TPM2-CHANGE-KEY\(8\) System)72 48 R -(Manager')2.5 E 2.5(sM)-.55 G 41.632(anual ZFS-TPM2-CHANGE-KEY\(8\))-2.5 -F/F1 10/Times-Bold@0 SF -.2(NA)72 84 S(ME).2 E/F2 10/Courier-Bold@0 SF -(zfs-tpm2-change-key)108 96 Q F0 2.5<8a63>2.5 G(hange ZFS dataset k)-2.5 -E .3 -.15(ey t)-.1 H 2.5(oo).15 G(ne stored on the TPM)-2.5 E F1 -(SYNOPSIS)72 112.8 Q F2(zfs-fido2-add-backup)108 124.8 Q F0([)2.5 E F2 -1.666 E/F3 10/Courier-Oblique@0 SF(backup-file)6 E F0 2.5(][)C F2 --.834 E F3(algorithm)6 E F2(:)A F3(PCR)A F0([)A F2(,)A F3(PCR)A F0 -1.666(]...)C([)234 136.8 Q F2(+)A F3(algorithm)A F2(:)A F3(PCR)A F0([)A -F2(,)A F3(PCR)A F0 1.666(]...)C -3.332 1.666(]... [)-1.666 H F2A -F0(]])A F3(dataset)2.5 E F1(DESCRIPTION)72 153.6 Q F0 4.32 -.8(To n)108 -165.6 T(ormalise).8 E F3(dataset)5.22 E F0(,)A F2(zfs-fido2-add-backup) -5.22 E F0 2.719(will open its encryption root in its stead.)5.22 F F2 -(zfs-fido2-add-backup)108 177.6 Q F0(will)14.654 E/F4 10/Times-Italic@0 -SF(ne)14.654 E(ver)-.15 E F0 12.154(create or destro)14.654 F 14.655(ye) --.1 G 12.155(ncryption roots; use)-14.655 F/F5 10/Courier@0 SF -(zfs-change-key)108 189.6 Q F0(\(8\) for that.)A -(First, a connection is made to the TPM, which)108 206.4 Q F4(must)2.5 E -F0(be TPM-2.0-compatible.)2.5 E(If)108 223.2 Q F3(dataset)3.055 E F0 -.1 -(wa)3.055 G 3.055(sp).1 G(re)-3.055 E .555(viously encrypted with)-.25 F -F2(tzpfms)3.055 E F0 .555(and the)3.055 F F1(TPM2)3.055 E F0 .554 -(back-end w)3.054 F .554(as used, the pre)-.1 F(vious)-.25 E -.1(ke)108 -235.2 S 3.059(yw)-.05 G .559(ill be freed from the TPM.)-3.059 F .56 -(Otherwise, or in case of an error)5.56 F 3.06(,d)-.4 G .56 -(ata required for manual interv)-3.06 F(en-)-.15 E +/F0 10/Times-Italic@0 SF(ZFS-TPM2-CHANGE-KEY)72 48 Q/F1 10/Times-Roman@0 +SF 49.123(\(8\) System)B(Manager')2.5 E 2.5(sM)-.55 G(anual)-2.5 E F0 +(ZFS-TPM2-CHANGE-KEY)49.122 E F1(\(8\))A/F2 10/Times-Bold@0 SF -.2(NA)72 +84 S(ME).2 E F1(zfs-tpm2-change-k)108 96 Q .3 -.15(ey \212 c)-.1 H +(hange ZFS dataset k).15 E .3 -.15(ey t)-.1 H 2.5(oo).15 G +(ne stored on the TPM)-2.5 E F2(SYNOPSIS)72 112.8 Q/F3 10/Courier-Bold@0 +SF(zfs-fido2-add-backup)108 124.8 Q F1([)2.5 E/F4 10/Courier@0 SF +1.666 E/F5 10/Courier-Oblique@0 SF(backup-file)6 E F1 2.5(][)C F4 +-.834 E F5(algorithm)6 E F4(:)A F5(PCR)A F1([)A F4(,)A F5(PCR)A F1 1.666 +(]...)C([)234 136.8 Q F4(+)A F5(algorithm)A F4(:)A F5(PCR)A F1([)A F4(,) +A F5(PCR)A F1 1.666(]...)C -3.332 1.666(]... [)-1.666 H F4A F1(]]) +A F5(dataset)2.5 E F2(DESCRIPTION)72 153.6 Q F1 4.319 -.8(To n)108 165.6 +T(ormalise).8 E F5(dataset)5.219 E F1(,)A F3(zfs-fido2-add-backup)5.219 +E F1 2.72(will open its encryption root in its stead.)5.219 F F3 +(zfs-fido2-add-backup)108 177.6 Q F1(will)3.515 E F0(ne)3.515 E(ver)-.15 +E F1 1.015(create or destro)3.515 F 3.514(ye)-.1 G 1.014 +(ncryption roots; use)-3.514 F F0(zfs-c)3.514 E(hang)-.15 E(e-k)-.1 E +-.3(ey)-.1 G F1 1.014(\(8\) for).3 F(that.)108 189.6 Q +(First, a connection is made to the TPM, which)108 206.4 Q F0(must)2.5 E +F1(be TPM-2.0-compatible.)2.5 E(If)108 223.2 Q F5(dataset)3.054 E F1 -.1 +(wa)3.054 G 3.054(sp).1 G(re)-3.054 E .554(viously encrypted with)-.25 F +F3(tzpfms)3.055 E F1 .555(and the)3.055 F F2(TPM2)3.055 E F1 .555 +(back-end w)3.055 F .555(as used, the pre)-.1 F(vious)-.25 E -.1(ke)108 +235.2 S 3.06(yw)-.05 G .56(ill be freed from the TPM.)-3.06 F .56 +(Otherwise, or in case of an error)5.56 F 3.059(,d)-.4 G .559 +(ata required for manual interv)-3.059 F(en-)-.15 E (tion will be written to the standard error stream.)108 247.2 Q(Ne)108 -264 Q .295(xt, a ne)-.15 F 2.794(ww)-.25 G .294(rapping k)-2.794 F .594 --.15(ey i)-.1 H 2.794(sg).15 G .294 -(enerated on the TPM, optionally back)-2.794 F .294(ed up \(see)-.1 F F1 -(OPTIONS)2.794 E F0 .294(\), and sealed)B .588 -(to a persistent object on the TPM under the o)108 276 R .589 -(wner hierarch)-.25 F .589(y; if there is a passphrase set on the o)-.05 -F(wner)-.25 E(hierarch)108 288 Q 1.603 -.65(y, t)-.05 H .302 -(he user is prompted for it; the user is al).65 F -.1(wa)-.1 G .302 -(ys prompted for an optional passphrase to protect).1 F -(the sealed object with.)108 300 Q(The follo)108 316.8 Q -(wing properties are set on)-.25 E F3(dataset)2.5 E F0(:)A F1<83>128 -328.8 Q F5(xyz.nabijaczleweli:tzpfms.backend)7.5 E F0(=)A F1(TPM2)A<83> -128 340.8 Q F5(xyz.nabijaczleweli:tzpfms.key)7.5 E F0(=)A F3 -(persistent-object-ID)A F0([)139 352.8 Q F2(;)A F3(algorithm)A F2(:)A F3 -(PCR)A F0([)A F2(,)A F3(PCR)A F0 1.666(]...)C([)-1.666 E F2(+)A F3 -(algorithm)A F2(:)A F3(PCR)A F0([)A F2(,)A F3(PCR)A F0 1.666(]...)C -1.666(]...)-1.666 G(])-1.666 E F5(tzpfms.backend)108 369.6 Q F0 1.263 -(identi\214es this dataset for w)3.763 F 1.264(ork with)-.1 F F1(TPM2) -3.764 E F0(-back-ended)A F2(tzpfms)3.764 E F0 1.264(tools \(namely)3.764 -F F5(zfs-tpm2-change-key)108 381.6 Q F0(\(8\),)A F5(zfs-tpm2-load-key) -2.5 E F0(\(8\), and)A F5(zfs-tpm2-clear-key)2.5 E F0(\(8\)\).)A F5 -(tzpfms.key)108 398.4 Q F0 1.509(is an inte)4.009 F 1.509 +264 Q 1.74(xt, a ne)-.15 F 4.24(ww)-.25 G 1.74(rapping k)-4.24 F 2.04 +-.15(ey i)-.1 H 4.24(sg).15 G 1.74(enerated on the TPM, optionally back) +-4.24 F 1.741(ed up \(see \231OPTIONS\232\), and)-.1 F .576 +(sealed to a persistent object on the TPM under the o)108 276 R .575 +(wner hierarch)-.25 F .575(y; if there is a passphrase set on the)-.05 F +-.25(ow)108 288 S .48(ner hierarch).25 F 1.78 -.65(y, t)-.05 H .48 +(he user is prompted for it; the user is al).65 F -.1(wa)-.1 G .481 +(ys prompted for an optional passphrase to).1 F +(protect the sealed object with.)108 300 Q(The follo)108 316.8 Q +(wing properties are set on)-.25 E F5(dataset)2.5 E F1(:)A F2<83>128 +328.8 Q F4(xyz.nabijaczleweli:tzpfms.backend)7.5 E F1(=)A F2(TPM2)A<83> +128 340.8 Q F4(xyz.nabijaczleweli:tzpfms.key)7.5 E F1(=)A F5 +(persistent-object-ID)A F1([)139 352.8 Q F4(;)A F5(algorithm)A F4(:)A F5 +(PCR)A F1([)A F4(,)A F5(PCR)A F1 1.666(]...)C([)-1.666 E F4(+)A F5 +(algorithm)A F4(:)A F5(PCR)A F1([)A F4(,)A F5(PCR)A F1 1.666(]...)C +1.666(]...)-1.666 G(])-1.666 E F4(tzpfms.backend)108 369.6 Q F1 1.264 +(identi\214es this dataset for w)3.764 F 1.263(ork with)-.1 F F2(TPM2) +3.763 E F1(-back-ended)A F3(tzpfms)3.763 E F1 1.263(tools \(namely)3.763 +F F0(zfs-tpm2-c)108 381.6 Q(hang)-.15 E(e-k)-.1 E -.3(ey)-.1 G F1 +(\(8\),).3 E F0(zfs-tpm2-load-k)2.5 E -.3(ey)-.1 G F1(\(8\), and).3 E F0 +(zfs-tpm2-clear)2.5 E(-k)-.2 E -.3(ey)-.1 G F1(\(8\)\).).3 E F4 +(tzpfms.key)108 398.4 Q F1 1.508(is an inte)4.008 F 1.509 (ger representing the sealed object, optionally follo)-.15 F 1.509 -(wed by a semicolon and)-.25 F .822(PCR list as speci\214ed with)108 -410.4 R F24.988 E F0 3.322(,n)C .822(ormalised to be)-3.322 F F2 -(tpm-tools)3.322 E F0 .823(-toolchain-compatible; if needed, it can)B -.866(be passed to)108 422.4 R F2 2.532(tpm2_unseal \255c)3.366 F F5 -(${tzpfms.key)6.866 E F2(%%)A F5(;)A/F6 10/Symbol SF(*)A F5(})A F0(with) -3.366 E F25.032 E F0(")6.866 E F5(str:${passphrase})A F0 3.365("o) -C(r)-3.365 E F2109.666 434.4 Q F0(")6.727 E F5(pcr:${tzpfms.key)A -F2(#)A F6(*)A F5(;})A F0 .727(", as the case may be, or equi)B -.25(va) --.25 G .728(lent, for back-up \(see).25 F F1(OPTIONS)3.228 E F0(\).)A -.448(If you ha)108 446.4 R .748 -.15(ve a s)-.2 H .448(ealed k).15 F -.748 -.15(ey y)-.1 H .448(ou can access with that or equi).15 F -.25(va) --.25 G .447(lent tool and set both of these properties, it).25 F -(will funxion seamlessly)108 458.4 Q(.)-.65 E(Finally)108 475.2 Q 12.005 -(,t)-.65 G 9.505(he equi)-12.005 F -.25(va)-.25 G 9.505(lent of).25 F F2 -9.505(zfs change-key)12.005 F17.172 E F5(keylocation=prompt)15.506 -E F217.172 E F5(keyformat=raw)108 487.2 Q F3(dataset)6.107 E F0 -.107(is performed with the ne)2.607 F 2.606(wk)-.25 G -.15(ey)-2.706 G -5.106(.I)-.5 G 2.606(fa)-5.106 G 2.606(ne)-2.606 G .106 -(rror occurred, best ef)-2.606 F .106(fort is made)-.25 F .289(to clean\ +(wed by a semicolon and)-.25 F .823(PCR list as speci\214ed with)108 +410.4 R F44.988 E F1 3.322(,n)C .822(ormalised to be)-3.322 F F3 +(tpm-tools)3.322 E F1 .822(-toolchain-compatible; if needed, it can)B +.865(be passed to)108 422.4 R F3(tpm2_unseal)3.366 E F4 .866 +(\255c ${tzpfms.key%%;)8.532 F/F6 10/Symbol SF(*)A F4(})A F1(with)3.366 +E F45.032 E F1(")6.866 E F4(str:${passphrase})A F1 3.366("o)C(r) +-3.366 E F4109.666 434.4 Q F1(")6.22 E F4(pcr:${tzpfms.key#)A F6 +(*)A F4(;})A F1 .22(", as the case may be, or equi)B -.25(va)-.25 G .22 +(lent, for back-up \(see \231OPTIONS\232\).).25 F .447(If you ha)108 +446.4 R .747 -.15(ve a s)-.2 H .447(ealed k).15 F .748 -.15(ey y)-.1 H +.448(ou can access with that or equi).15 F -.25(va)-.25 G .448 +(lent tool and set both of these properties, it).25 F +(will funxion seamlessly)108 458.4 Q(.)-.65 E(Finally)108 475.2 Q 12.006 +(,t)-.65 G 9.506(he equi)-12.006 F -.25(va)-.25 G 9.506(lent of).25 F F3 +(zfs)12.005 E F4 11.171(change-key \255o)15.505 F 11.171 +(keylocation=prompt \255o)15.505 F(keyformat=raw)108 487.2 Q F5(dataset) +6.106 E F1 .106(is performed with the ne)2.606 F 2.606(wk)-.25 G -.15 +(ey)-2.706 G 5.106(.I)-.5 G 2.606(fa)-5.106 G 2.606(ne)-2.606 G .107 +(rror occurred, best ef)-2.606 F .107(fort is made)-.25 F .289(to clean\ up the persistent object and properties, or to issue a note for manual\ - interv)108 499.2 R .29(ention into the stan-)-.15 F(dard error stream.) -108 511.2 Q 2.625<418c>108 528 S .125(nal v)-2.625 F .125 -(eri\214cation should be made by running)-.15 F F2 1.79 -(zfs-tpm2-load-key \255n)2.624 F F3(dataset)6.124 E F0 5.124(.I)C 2.624 -(ft)-5.124 G .124(hat com-)-2.624 F .506(mand succeeds, all is well, b) -108 540 R .506(ut otherwise the dataset can be manually rolled back to \ -a passphrase with)-.2 F F2(zfs-tpm2-clear-key)108 552 Q F3(dataset) -11.539 E F0(\(or)8.039 E 8.039(,i)-.4 G 8.039(ft)-8.039 G 5.539(hat f) --8.039 F 5.539(ails to w)-.1 F(ork,)-.1 E F2 5.539(zfs change-key)8.039 -F13.204 E F5(keyformat=passphrase)108 564 Q F3(dataset)6 E F0 + interv)108 499.2 R .289(ention into the stan-)-.15 F +(dard error stream.)108 511.2 Q 2.624<418c>108 528 S .124(nal v)-2.624 F +.124(eri\214cation should be made by running)-.15 F F3 +(zfs-tpm2-load-key)2.625 E F47.791 E F5(dataset)6.125 E F1 5.125 +(.I)C 2.625(ft)-5.125 G .125(hat com-)-2.625 F .507 +(mand succeeds, all is well, b)108 540 R .506(ut otherwise the dataset \ +can be manually rolled back to a passphrase with)-.2 F F3 +(zfs-tpm2-clear-key)108 552 Q F5(dataset)11.538 E F1(\(or)8.039 E 8.039 +(,i)-.4 G 8.039(ft)-8.039 G 5.539(hat f)-8.039 F 5.539(ails to w)-.1 F +(ork,)-.1 E F3(zfs)8.039 E F4 7.205(change-key \255o)11.539 F +(keyformat=passphrase)108 564 Q F5(dataset)6 E F1 (\), and you are hereby ask)A(ed to report a b)-.1 E(ug, please.)-.2 E -F2(zfs-tpm2-clear-key)108 580.8 Q F3(dataset)6.029 E F0 .029 +F3(zfs-tpm2-clear-key)108 580.8 Q F5(dataset)6.029 E F1 .029 (can be used to free the TPM persistent object and go back to us-)2.529 -F(ing a passphrase.)108 592.8 Q F1(OPTIONS)72 609.6 Q F2109.666 -621.6 Q F3(backup-file)6 E F0(Sa)203 621.6 Q .353 -.15(ve a b)-.2 H .052 -(ack-up of the k).15 F .352 -.15(ey t)-.1 H(o).15 E F3(backup-file)2.552 -E F0 2.552(,w)C .052(hich must not e)-2.552 F .052(xist beforehand.)-.15 -F .693(This back-up)203 633.6 R F4(must)3.193 E F0 .694 -(be stored securely)3.193 F 3.194(,o)-.65 G -.25(ff)-3.194 G 3.194 -(-site. In).25 F .694(case of a catastrophic e)3.194 F -.15(ve)-.25 G +F(ing a passphrase.)108 592.8 Q F2(OPTIONS)72 609.6 Q F4109.666 +621.6 Q F5(backup-file)6 E F1(Sa)203 621.6 Q .352 -.15(ve a b)-.2 H .052 +(ack-up of the k).15 F .352 -.15(ey t)-.1 H(o).15 E F5(backup-file)2.552 +E F1 2.552(,w)C .052(hich must not e)-2.552 F .053(xist beforehand.)-.15 +F .694(This back-up)203 633.6 R F0(must)3.194 E F1 .694 +(be stored securely)3.194 F 3.194(,o)-.65 G -.25(ff)-3.194 G 3.194 +(-site. In).25 F .693(case of a catastrophic e)3.194 F -.15(ve)-.25 G (nt,).15 E(the k)203 645.6 Q .3 -.15(ey c)-.1 H(an be loaded by running) -.15 E F2(zfs load-key)233 657.6 Q F3(dataset)6 E F5(<)6 E F3 -(backup-file)6 E F2109.666 674.4 Q F3(algorithm)6 E F2(:)A F3(PCR) -A F0([)A F2(,)A F3(PCR)A F0 1.666(]...)C([)-1.666 E F2(+)A F3(algorithm) -A F2(:)A F3(PCR)A F0([)A F2(,)A F3(PCR)A F0 1.666(]...)C 1.666(]...) --1.666 G 1.425(Bind the k)203 686.4 R 1.725 -.15(ey t)-.1 H 3.925(os).15 -G 1.425(pace- or comma-separated)-3.925 F F3(PCR)3.924 E F0 3.924(sw)C -1.424(ithin their corresponding)-3.924 F(hashing)203 698.4 Q F3 -(algorithm)2.523 E F0 2.523<8a69>2.523 G 2.523(ft)-2.523 G(he)-2.523 E +.15 E F3(zfs)233 657.6 Q F4(load-key)6 E F5(dataset)6 E F4(<)6 E F5 +(backup-file)6 E F4109.666 674.4 Q F5(algorithm)6 E F4(:)A F5(PCR) +A F1([)A F4(,)A F5(PCR)A F1 1.666(]...)C([)-1.666 E F4(+)A F5(algorithm) +A F4(:)A F5(PCR)A F1([)A F4(,)A F5(PCR)A F1 1.666(]...)C 1.666(]...) +-1.666 G 1.424(Bind the k)203 686.4 R 1.724 -.15(ey t)-.1 H 3.924(os).15 +G 1.424(pace- or comma-separated)-3.924 F F5(PCR)3.925 E F1 3.925(sw)C +1.425(ithin their corresponding)-3.925 F(hashing)203 698.4 Q F5 +(algorithm)2.524 E F1 2.524<8a69>2.524 G 2.523(ft)-2.524 G(he)-2.523 E 2.523(yc)-.15 G .023(hange, the wrapping k)-2.523 F .323 -.15(ey w)-.1 H -.024(ill not be able to be).15 F 2.5(unsealed. There)203 710.4 R(are)2.5 -E F1(24)2.5 E F0(PCRs, numbered [)2.5 E F1(0)A F0(,)A F1(23)2.5 E F0(].) -A F3(algorithm)203 727.2 Q F0 2.968(may be an)5.469 F 5.468(yo)-.15 G -5.468(fc)-5.468 G(ase-insensiti)-5.468 E 3.268 -.15(ve ")-.25 H F1(sha1) -.15 E F0 2.968(", ")B F1(sha256)A F0 2.968(", ")B F1(sha384)A F0(",)A(") -203 739.2 Q F1(sha512)A F0 4.983(", ")B F1(sm3_256)A F0 4.983(", ")B F1 -(sm3-256)A F0 4.983(", ")B F1(sha3_256)A F0 4.983(", ")B F1(sha3-256)A -F0 4.983(", ")B F1(sha3_384)A F0(",)A(")203 751.2 Q F1(sha3-384)A F0 -(", ")A F1(sha3_512)A F0(", or ")A F1(sha3-512)A F0 +.023(ill not be able to be).15 F 2.5(unsealed. There)203 710.4 R(are)2.5 +E F2(24)2.5 E F1(PCRs, numbered [)2.5 E F2(0)A F1(,)A F2(23)2.5 E F1(].) +A F5(algorithm)203 727.2 Q F1 2.968(may be an)5.468 F 5.468(yo)-.15 G +5.468(fc)-5.468 G(ase-insensiti)-5.468 E 3.268 -.15(ve ")-.25 H F2(sha1) +.15 E F1 2.968(", ")B F2(sha256)A F1 2.969(", ")B F2(sha384)A F1(",)A(") +203 739.2 Q F2(sha512)A F1 4.983(", ")B F2(sm3_256)A F1 4.983(", ")B F2 +(sm3-256)A F1 4.983(", ")B F2(sha3_256)A F1 4.983(", ")B F2(sha3-256)A +F1 4.983(", ")B F2(sha3_384)A F1(",)A(")203 751.2 Q F2(sha3-384)A F1 +(", ")A F2(sha3_512)A F1(", or ")A F2(sha3-512)A F1 (", and must be supported by the TPM.)A(tzpfms 0.3.4-14-gf5996ad)72 817.889 Q(February 28, 2024)84.688 E(1)183.837 E 0 Cg EP %%Page: 2 13 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF 44.133(ZFS-TPM2-CHANGE-KEY\(8\) System)72 48 R -(Manager')2.5 E 2.5(sM)-.55 G 41.632(anual ZFS-TPM2-CHANGE-KEY\(8\))-2.5 -F/F1 10/Courier-Bold@0 SF109.666 84 Q F0 -.4(Wi)203 84 S(th).4 E -F14.589 E F0 2.923(,a)C .422(lso prompt for a passphrase.)-2.923 F -.422(This is skipped by def)5.422 F .422(ault because the)-.1 F .675 -(passphrase is)203 96 R/F2 10/Times-Italic@0 SF(OR)3.175 E F0 .675 -(ed with the PCR polic)B 3.175(y\212t)-.15 G .675(he wrapping k)-3.175 F -.975 -.15(ey c)-.1 H .675(an be unsealed).15 F F2(either)203 108 Q F0 -1.39(passphraseless with the right PCRs)3.89 F F2(or)3.89 E F0 1.389 -(with the passphrase, and this is)3.89 F(usually not the intent.)203 120 -Q/F3 10/Times-Bold@0 SF(ENVIR)72 136.8 Q 1.666(ONMENT V)-.3 F(ARIABLES) --1.35 E/F4 10/Courier@0 SF(TZPFMS_PASSPHRASE_HELPER)108 148.8 Q F0 .045 +/F0 10/Times-Italic@0 SF(ZFS-TPM2-CHANGE-KEY)72 48 Q/F1 10/Times-Roman@0 +SF 49.123(\(8\) System)B(Manager')2.5 E 2.5(sM)-.55 G(anual)-2.5 E F0 +(ZFS-TPM2-CHANGE-KEY)49.122 E F1(\(8\))A/F2 10/Courier@0 SF109.666 +84 Q F1 -.4(Wi)203 84 S(th).4 E F24.588 E F1 2.922(,a)C .422 +(lso prompt for a passphrase.)-2.922 F .422(This is skipped by def)5.422 +F .423(ault because the)-.1 F .675(passphrase is)203 96 R F0(OR)3.175 E +F1 .675(ed with the PCR polic)B 3.175(y\212t)-.15 G .675(he wrapping k) +-3.175 F .975 -.15(ey c)-.1 H .675(an be unsealed).15 F F0(either)203 +108 Q F1 1.389(passphraseless with the right PCRs)3.889 F F0(or)3.89 E +F1 1.39(with the passphrase, and this is)3.89 F(usually not the intent.) +203 120 Q/F3 10/Times-Bold@0 SF(ENVIR)72 136.8 Q 1.666(ONMENT V)-.3 F +(ARIABLES)-1.35 E F2(TZPFMS_PASSPHRASE_HELPER)108 148.8 Q F1 .046 (By def)133 160.8 R .045(ault, passphrases are prompted for and read in\ - on the standard output and input streams.)-.1 F(If)5.046 E F4 -(TZPFMS_PASSPHRASE_HELPER)133 172.8 Q F0 1.596(is set and nonempty)4.096 -F 4.096(,i)-.65 G 4.096(tw)-4.096 G 1.596(ill be run via)-4.096 F F4 -(/bin/)4.095 E F1 3.261(sh \255c)B F0(to)4.095 E(pro)133 184.8 Q -(vide each passphrase, instead.)-.15 E .643 + on the standard output and input streams.)-.1 F(If)5.045 E F2 +(TZPFMS_PASSPHRASE_HELPER)133 172.8 Q F1 .896(is set and nonempty)3.396 +F 3.396(,i)-.65 G 3.396(tw)-3.396 G .896(ill be run via)-3.396 F F0 +(/bin/)3.396 E/F4 10/Courier-Bold@0 SF(sh)A F28.562 E F1 .897 +(to pro-)3.396 F(vide each passphrase, instead.)133 184.8 Q .643 (The standard output stream of the helper is tied to an anon)133 201.6 R .643(ymous \214le and used in its entirety as)-.15 F(the passphrase, e) 133 213.6 Q(xcept for a trailing ne)-.15 E(w-line, if an)-.25 E 3.8 -.65 -(y. T)-.15 H(he ar).65 E(guments are:)-.18 E F4($1)143 225.6 Q F0 +(y. T)-.15 H(he ar).65 E(guments are:)-.18 E F2($1)143 225.6 Q F1 (Pre-formatted noun phrase with all the information belo)160 225.6 Q 1.3 --.65(w, f)-.25 H(or use as a prompt).65 E F4($2)143 237.6 Q F0 +-.65(w, f)-.25 H(or use as a prompt).65 E F2($2)143 237.6 Q F1 (Either the dataset name or the element of the TPM hierarch)160 237.6 Q -2.5(yb)-.05 G(eing prompted for)-2.5 E F4($3)143 249.6 Q F0("ne)160 +2.5(yb)-.05 G(eing prompted for)-2.5 E F2($3)143 249.6 Q F1("ne)160 249.6 Q(w" if this is for a ne)-.25 E 2.5(wp)-.25 G -(assphrase, otherwise blank)-2.5 E F4($4)143 261.6 Q F0("ag)160 261.6 Q +(assphrase, otherwise blank)-2.5 E F2($4)143 261.6 Q F1("ag)160 261.6 Q (ain" if it')-.05 E 2.5(st)-.55 G -(he second prompt for that passphrase, otherwise blank)-2.5 E .178 -(If the helper doesn')133 278.4 R 2.678(te)-.18 G .178 -(xist \(the shell e)-2.828 F .177(xits with)-.15 F F3(127)2.677 E F0 -.177(\), a diagnostic is issued and the normal prompt)B(is used as f)133 +(he second prompt for that passphrase, otherwise blank)-2.5 E .177 +(If the helper doesn')133 278.4 R 2.677(te)-.18 G .177 +(xist \(the shell e)-2.827 F .177(xits with)-.15 F F3(127)2.677 E F1 +.178(\), a diagnostic is issued and the normal prompt)B(is used as f)133 290.4 Q 2.5(all-back. If)-.1 F(it f)2.5 E(ails for an)-.1 E 2.5(yo)-.15 G(ther reason, the prompting is aborted.)-2.5 E F3 1.666 (TPM2 back-end con\214guration)72 307.2 R(En)87 319.2 Q(vir)-.4 E .625 -(onment v)-.18 F(ariables)-.1 E F4(TSS2_LOG)108 331.2 Q F0(An)161 331.2 -Q 2.5(yo)-.15 G(f:)-2.5 E F3(NONE)2.5 E F0(,)A F3(ERR)2.5 E(OR)-.3 E F0 -(,)A F3 -1.2(WA)2.5 G(RNING)1.2 E F0(,)A F3(INFO)2.5 E F0(,)A F3(DEB)2.5 -E(UG)-.1 E F0(,)A F3(TRA)2.5 E(CE)-.55 E F0 5(.D)C(ef)-5 E(ault:)-.1 E -F3 -1.2(WA)2.5 G(RNING)1.2 E F0(.)A F3 .625(TPM selection)87 348 R F0 -.621(The library)108 360 R F1(libtss2-tcti-default.so)3.121 E F0 .621 -(can be link)3.121 F .621(ed to an)-.1 F 3.122(yo)-.15 G 3.122(ft)-3.122 -G(he)-3.122 E F4(libtss2-tcti-)3.122 E/F5 10/Symbol SF(*)A F4(.so)A F0 -(li-)3.122 E .781(braries to select the def)108 372 R .781 -(ault, otherwise)-.1 F F4(/dev/tpmrm0)3.28 E F0 3.28(,t)C(hen)-3.28 E F4 -(/dev/tpm0)3.28 E F0 3.28(,t)C(hen)-3.28 E F4(localhost:2321)3.28 E F0 -(will be tried, in order \(see)108 384 Q F4(ESYS_CONTEXT)2.5 E F0 -(\(3\)\).)A F3 .625(See also)87 400.8 R F0 2.247 -(The tpm2-tss git repository at https://github)108 412.8 R +(onment v)-.18 F(ariables)-.1 E F2(TSS2_LOG)108 331.2 Q F1(An)161 331.2 +Q 2.5(yo)-.15 G(f:)-2.5 E F3(NONE)2.5 E F1(,)A F3(ERR)2.5 E(OR)-.3 E F1 +(,)A F3 -1.2(WA)2.5 G(RNING)1.2 E F1(,)A F3(INFO)2.5 E F1(,)A F3(DEB)2.5 +E(UG)-.1 E F1(,)A F3(TRA)2.5 E(CE)-.55 E F1 5(.D)C(ef)-5 E(ault:)-.1 E +F3 -1.2(WA)2.5 G(RNING)1.2 E F1(.)A F3 .625(TPM selection)87 348 R F1 +.978(The library)108 360 R F4(libtss2-tcti-default.so)3.477 E F1 .977 +(can be link)3.477 F .977(ed to an)-.1 F 3.477(yo)-.15 G 3.477(ft)-3.477 +G(he)-3.477 E F0(libtss2-tcti-)3.477 E/F5 10/Symbol SF(*)A F0(.so)A F1 +.977(libraries to)3.477 F 1.145(select the def)108 372 R 1.145 +(ault, otherwise)-.1 F F0(/de)3.646 E(v/tpmrm0)-.15 E F1 3.646(,t)C(hen) +-3.646 E F0(/de)3.646 E(v/tpm0)-.15 E F1 3.646(,t)C(hen)-3.646 E F0 +(localhost:2321)3.646 E F1 1.146(will be tried, in order)3.646 F(\(see) +108 384 Q F0(ESYS_CONTEXT)2.5 E F1(\(3\)\).)A F3 .625(See also)87 400.8 +R F1 2.247(The tpm2-tss git repository at https://github)108 412.8 R (.com/tpm2-softw)-.4 E 2.247(are/tpm2-tss and the documentation at)-.1 F (https://tpm2-tss.readthedocs.io.)108 424.8 Q 5.774(The TPM 2.0 speci\ \214cations, mainly at https://trustedcomputinggroup.or)108 441.6 R @@ -1190,182 +1211,184 @@ G(he)-3.122 E F4(libtss2-tcti-)3.122 E/F5 10/Symbol SF(*)A F4(.so)A F0 (speci\214cation/, https://trustedcomputinggroup.or)108 453.6 R (g/wp-content/uploads/TPM-)-.18 E(Re)108 465.6 Q(v-2.0-P)-.25 E (art-1-Architecture-01.38.pdf, and related pages.)-.15 E F3 1.666 -(SPECIAL THANKS)72 482.4 R F0 1.6 -.8(To a)108 494.4 T +(SPECIAL THANKS)72 482.4 R F1 1.6 -.8(To a)108 494.4 T (ll who support further de).8 E -.15(ve)-.25 G(lopment, in particular:) -.15 E F3<83>128 506.4 Q F0(ThePhD)7.5 E F3<83>128 518.4 Q F0 -(Embark Studios)7.5 E F3<83>128 530.4 Q F0(Jasper Bekk)7.5 E(ers)-.1 E -F3<83>128 542.4 Q F0(EvModder)7.5 E F3(REPOR)72 559.2 Q 1.666(TING B)-.4 -F(UGS)-.1 E F0(https://todo.sr)108 571.2 Q(.ht/\001nabijaczle)-.55 E -(weli/tzpfms)-.25 E F4(\001nabijaczleweli/tzpfms@lists.sr.ht)108 588 Q -F0 83.763(,a)C(rchi)-83.763 E -.15(ve)-.25 G 83.762(da).15 G(t)-83.762 E -(https://lists.sr)108 600 Q(.ht/\001nabijaczle)-.55 E(weli/tzpfms.)-.25 -E F3 1.666(SEE ALSO)72 616.8 R F4(tpm2_unseal)108 628.8 Q F0(\(1\))A -(PCR allocations: https://wiki.archlinux.or)108 645.6 Q(g/title/T)-.18 E -(rusted_Platform_Module#Accessing_PCR_re)-.35 E(gisters)-.15 E -(and https://trustedcomputinggroup.or)108 657.6 Q +.15 E F3<83>128 506.4 Q F1(ThePhD)7.5 E F3<83>128 518.4 Q F1 +(Embark Studios)7.5 E F3<83>128 530.4 Q F1(Jasper Bekk)7.5 E(ers)-.1 E +F3<83>128 542.4 Q F1(EvModder)7.5 E F3(REPOR)72 559.2 Q 1.666(TING B)-.4 +F(UGS)-.1 E F1(https://todo.sr)108 571.2 Q(.ht/\001nabijaczle)-.55 E +(weli/tzpfms)-.25 E F0(\001nabijaczle)108 588 Q(weli/tzpfms@lists.sr) +-.15 E(.ht)-1.11 E F1 2.5(,a)C(rchi)-2.5 E -.15(ve)-.25 G 2.5(da).15 G +2.5(th)-2.5 G(ttps://lists.sr)-2.5 E(.ht/\001nabijaczle)-.55 E +(weli/tzpfms.)-.25 E F3 1.666(SEE ALSO)72 604.8 R F0(tpm2_unseal)108 +616.8 Q F1(\(1\))A(PCR allocations: https://wiki.archlinux.or)108 633.6 +Q(g/title/T)-.18 E(rusted_Platform_Module#Accessing_PCR_re)-.35 E +(gisters)-.15 E(and https://trustedcomputinggroup.or)108 645.6 Q (g/wp-content/uploads/PC-)-.18 E(ClientSpeci\214c_Platform_Pro\214le_fo\ -r_TPM_2p0_Systems_v51.pdf, Section 2.3.4 "PCR Usage", T)108 669.6 Q -(able)-.8 E(1.)108 681.6 Q(tzpfms 0.3.4-14-gf5996ad)72 817.889 Q +r_TPM_2p0_Systems_v51.pdf, Section 2.3.4 "PCR Usage", T)108 657.6 Q +(able)-.8 E(1.)108 669.6 Q(tzpfms 0.3.4-14-gf5996ad)72 817.889 Q (February 28, 2024)84.688 E(2)183.837 E 0 Cg EP %%Page: 1 14 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF 53.013(ZFS-TPM2-CLEAR-KEY\(8\) System)72 48 R -(Manager')2.5 E 2.5(sM)-.55 G 50.512(anual ZFS-TPM2-CLEAR-KEY\(8\))-2.5 -F/F1 10/Times-Bold@0 SF -.2(NA)72 84 S(ME).2 E/F2 10/Courier-Bold@0 SF -(zfs-tpm2-clear-key)108 96 Q F0 2.5<8a72>2.5 G -.25(ew)-2.5 G -(rap ZFS dataset k).25 E .3 -.15(ey i)-.1 H 2.5(np).15 G(asssw)-2.5 E -(ord and clear tzpfms TPM2 metadata)-.1 E F1(SYNOPSIS)72 112.8 Q F2 -(zfs-fido2-add-backup)108 124.8 Q/F3 10/Courier-Oblique@0 SF(dataset)2.5 -E F1(DESCRIPTION)72 141.6 Q F0(After v)108 153.6 Q(erifying)-.15 E F3 -(dataset)2.5 E F0 -.1(wa)2.5 G 2.5(se).1 G(ncrypted with)-2.5 E F2 -(tzpfms)2.5 E F0(back)2.5 E(end)-.1 E F1(TPM2)2.5 E F0(:)A 5 -(1. performs)118 165.6 R 5.641(the equi)8.141 F -.25(va)-.25 G 5.641 -(lent of).25 F F2 5.642(zfs change-key)8.142 F13.308 E/F4 10 -/Courier@0 SF(keylocation=prompt)11.642 E F213.308 E F4 -(keyformat=passphrase)133 177.6 Q F3(dataset)6 E F0(,)A 5(2. frees)118 +/F0 10/Times-Italic@0 SF(ZFS-TPM2-CLEAR-KEY)72 48 Q/F1 10/Times-Roman@0 +SF 58.563(\(8\) System)B(Manager')2.5 E 2.5(sM)-.55 G(anual)-2.5 E F0 +(ZFS-TPM2-CLEAR-KEY)58.562 E F1(\(8\))A/F2 10/Times-Bold@0 SF -.2(NA)72 +84 S(ME).2 E F1(zfs-tpm2-clear)108 96 Q(-k)-.2 E .3 -.15(ey \212 r)-.1 H +-.25(ew).15 G(rap ZFS dataset k).25 E .3 -.15(ey i)-.1 H 2.5(np).15 G +(asssw)-2.5 E(ord and clear tzpfms TPM2 metadata)-.1 E F2(SYNOPSIS)72 +112.8 Q/F3 10/Courier-Bold@0 SF(zfs-fido2-add-backup)108 124.8 Q/F4 10 +/Courier-Oblique@0 SF(dataset)2.5 E F2(DESCRIPTION)72 141.6 Q F1 +(After v)108 153.6 Q(erifying)-.15 E F4(dataset)2.5 E F1 -.1(wa)2.5 G +2.5(se).1 G(ncrypted with)-2.5 E F3(tzpfms)2.5 E F1(back)2.5 E(end)-.1 E +F2(TPM2)2.5 E F1(:)A 5(1. performs)118 165.6 R 5.641(the equi)8.141 F +-.25(va)-.25 G 5.641(lent of).25 F F3(zfs)8.142 E/F5 10/Courier@0 SF +7.308(change-key \255o)11.642 F 7.308(keylocation=prompt \255o)11.642 F +(keyformat=passphrase)133 177.6 Q F4(dataset)6 E F1(,)A 5(2. frees)118 189.6 R(the sealed k)2.5 E .3 -.15(ey p)-.1 H(re).15 E -(viously used to encrypt)-.25 E F3(dataset)2.5 E F0(,)A 5(3. remo)118 -201.6 R -.15(ve)-.15 G 10.689(st).15 G(he)-10.689 E F4 -(xyz.nabijaczleweli:tzpfms.)10.689 E F0({)A F4(backend)A F0(,)A F4(key) -14.189 E F0 10.689(}p)C 8.189(roperties from)-10.689 F F3(dataset)133 -213.6 Q F0(.)A(See)108 230.4 Q F4(zfs-tpm2-change-key)2.5 E F0 -(\(8\) for a detailed description.)A F1(ENVIR)72 247.2 Q 1.666(ONMENT V) --.3 F(ARIABLES)-1.35 E F4(TZPFMS_PASSPHRASE_HELPER)108 259.2 Q F0 .045 -(By def)133 271.2 R .045(ault, passphrases are prompted for and read in\ - on the standard output and input streams.)-.1 F(If)5.046 E F4 -(TZPFMS_PASSPHRASE_HELPER)133 283.2 Q F0 1.596(is set and nonempty)4.096 -F 4.096(,i)-.65 G 4.096(tw)-4.096 G 1.596(ill be run via)-4.096 F F4 -(/bin/)4.095 E F2 3.261(sh \255c)B F0(to)4.095 E(pro)133 295.2 Q -(vide each passphrase, instead.)-.15 E .643 +(viously used to encrypt)-.25 E F4(dataset)2.5 E F1(,)A 5(3. remo)118 +201.6 R -.15(ve)-.15 G 10.689(st).15 G(he)-10.689 E F5 +(xyz.nabijaczleweli:tzpfms.)10.689 E F1({)A F5(backend)A F1(,)A F5(key) +14.189 E F1 10.689(}p)C 8.189(roperties from)-10.689 F F4(dataset)133 +213.6 Q F1(.)A(See)108 230.4 Q F0(zfs-tpm2-c)2.5 E(hang)-.15 E(e-k)-.1 E +-.3(ey)-.1 G F1(\(8\) for a detailed description.).3 E F2(ENVIR)72 247.2 +Q 1.666(ONMENT V)-.3 F(ARIABLES)-1.35 E F5(TZPFMS_PASSPHRASE_HELPER)108 +259.2 Q F1 .045(By def)133 271.2 R .045(ault, passphrases are prompted \ +for and read in on the standard output and input streams.)-.1 F(If)5.046 +E F5(TZPFMS_PASSPHRASE_HELPER)133 283.2 Q F1 .896(is set and nonempty) +3.397 F 3.396(,i)-.65 G 3.396(tw)-3.396 G .896(ill be run via)-3.396 F +F0(/bin/)3.396 E F3(sh)A F58.562 E F1 .896(to pro-)3.396 F +(vide each passphrase, instead.)133 295.2 Q .643 (The standard output stream of the helper is tied to an anon)133 312 R .643(ymous \214le and used in its entirety as)-.15 F(the passphrase, e) 133 324 Q(xcept for a trailing ne)-.15 E(w-line, if an)-.25 E 3.8 -.65 -(y. T)-.15 H(he ar).65 E(guments are:)-.18 E F4($1)143 336 Q F0 +(y. T)-.15 H(he ar).65 E(guments are:)-.18 E F5($1)143 336 Q F1 (Pre-formatted noun phrase with all the information belo)160 336 Q 1.3 --.65(w, f)-.25 H(or use as a prompt).65 E F4($2)143 348 Q F0 +-.65(w, f)-.25 H(or use as a prompt).65 E F5($2)143 348 Q F1 (Either the dataset name or the element of the TPM hierarch)160 348 Q -2.5(yb)-.05 G(eing prompted for)-2.5 E F4($3)143 360 Q F0("ne)160 360 Q +2.5(yb)-.05 G(eing prompted for)-2.5 E F5($3)143 360 Q F1("ne)160 360 Q (w" if this is for a ne)-.25 E 2.5(wp)-.25 G(assphrase, otherwise blank) --2.5 E F4($4)143 372 Q F0("ag)160 372 Q(ain" if it')-.05 E 2.5(st)-.55 G +-2.5 E F5($4)143 372 Q F1("ag)160 372 Q(ain" if it')-.05 E 2.5(st)-.55 G (he second prompt for that passphrase, otherwise blank)-2.5 E .178 (If the helper doesn')133 388.8 R 2.678(te)-.18 G .178 -(xist \(the shell e)-2.828 F .177(xits with)-.15 F F1(127)2.677 E F0 +(xist \(the shell e)-2.828 F .177(xits with)-.15 F F2(127)2.677 E F1 .177(\), a diagnostic is issued and the normal prompt)B(is used as f)133 400.8 Q 2.5(all-back. If)-.1 F(it f)2.5 E(ails for an)-.1 E 2.5(yo)-.15 -G(ther reason, the prompting is aborted.)-2.5 E F1 1.666 +G(ther reason, the prompting is aborted.)-2.5 E F2 1.666 (TPM2 back-end con\214guration)72 417.6 R(En)87 429.6 Q(vir)-.4 E .625 -(onment v)-.18 F(ariables)-.1 E F4(TSS2_LOG)108 441.6 Q F0(An)161 441.6 -Q 2.5(yo)-.15 G(f:)-2.5 E F1(NONE)2.5 E F0(,)A F1(ERR)2.5 E(OR)-.3 E F0 -(,)A F1 -1.2(WA)2.5 G(RNING)1.2 E F0(,)A F1(INFO)2.5 E F0(,)A F1(DEB)2.5 -E(UG)-.1 E F0(,)A F1(TRA)2.5 E(CE)-.55 E F0 5(.D)C(ef)-5 E(ault:)-.1 E -F1 -1.2(WA)2.5 G(RNING)1.2 E F0(.)A F1 .625(TPM selection)87 458.4 R F0 -.621(The library)108 470.4 R F2(libtss2-tcti-default.so)3.121 E F0 .621 -(can be link)3.121 F .621(ed to an)-.1 F 3.122(yo)-.15 G 3.122(ft)-3.122 -G(he)-3.122 E F4(libtss2-tcti-)3.122 E/F5 10/Symbol SF(*)A F4(.so)A F0 -(li-)3.122 E .781(braries to select the def)108 482.4 R .781 -(ault, otherwise)-.1 F F4(/dev/tpmrm0)3.28 E F0 3.28(,t)C(hen)-3.28 E F4 -(/dev/tpm0)3.28 E F0 3.28(,t)C(hen)-3.28 E F4(localhost:2321)3.28 E F0 -(will be tried, in order \(see)108 494.4 Q F4(ESYS_CONTEXT)2.5 E F0 -(\(3\)\).)A F1 .625(See also)87 511.2 R F0 2.247 -(The tpm2-tss git repository at https://github)108 523.2 R -(.com/tpm2-softw)-.4 E 2.247(are/tpm2-tss and the documentation at)-.1 F -(https://tpm2-tss.readthedocs.io.)108 535.2 Q 5.774(The TPM 2.0 speci\ +(onment v)-.18 F(ariables)-.1 E F5(TSS2_LOG)108 441.6 Q F1(An)161 441.6 +Q 2.5(yo)-.15 G(f:)-2.5 E F2(NONE)2.5 E F1(,)A F2(ERR)2.5 E(OR)-.3 E F1 +(,)A F2 -1.2(WA)2.5 G(RNING)1.2 E F1(,)A F2(INFO)2.5 E F1(,)A F2(DEB)2.5 +E(UG)-.1 E F1(,)A F2(TRA)2.5 E(CE)-.55 E F1 5(.D)C(ef)-5 E(ault:)-.1 E +F2 -1.2(WA)2.5 G(RNING)1.2 E F1(.)A F2 .625(TPM selection)87 458.4 R F1 +.977(The library)108 470.4 R F3(libtss2-tcti-default.so)3.477 E F1 .977 +(can be link)3.477 F .977(ed to an)-.1 F 3.477(yo)-.15 G 3.477(ft)-3.477 +G(he)-3.477 E F0(libtss2-tcti-)3.477 E/F6 10/Symbol SF(*)A F0(.so)A F1 +.978(libraries to)3.477 F 1.146(select the def)108 482.4 R 1.146 +(ault, otherwise)-.1 F F0(/de)3.646 E(v/tpmrm0)-.15 E F1 3.646(,t)C(hen) +-3.646 E F0(/de)3.646 E(v/tpm0)-.15 E F1 3.646(,t)C(hen)-3.646 E F0 +(localhost:2321)3.646 E F1 1.145(will be tried, in order)3.646 F(\(see) +108 494.4 Q F0(ESYS_CONTEXT)2.5 E F1(\(3\)\).)A F2 .625(See also)87 +511.2 R F1 2.247(The tpm2-tss git repository at https://github)108 523.2 +R(.com/tpm2-softw)-.4 E 2.247(are/tpm2-tss and the documentation at)-.1 +F(https://tpm2-tss.readthedocs.io.)108 535.2 Q 5.774(The TPM 2.0 speci\ \214cations, mainly at https://trustedcomputinggroup.or)108 552 R (g/resource/tpm-library-)-.18 E 111.845 (speci\214cation/, https://trustedcomputinggroup.or)108 564 R (g/wp-content/uploads/TPM-)-.18 E(Re)108 576 Q(v-2.0-P)-.25 E -(art-1-Architecture-01.38.pdf, and related pages.)-.15 E F1 1.666 -(SPECIAL THANKS)72 592.8 R F0 1.6 -.8(To a)108 604.8 T +(art-1-Architecture-01.38.pdf, and related pages.)-.15 E F2 1.666 +(SPECIAL THANKS)72 592.8 R F1 1.6 -.8(To a)108 604.8 T (ll who support further de).8 E -.15(ve)-.25 G(lopment, in particular:) -.15 E F1<83>128 616.8 Q F0(ThePhD)7.5 E F1<83>128 628.8 Q F0 -(Embark Studios)7.5 E F1<83>128 640.8 Q F0(Jasper Bekk)7.5 E(ers)-.1 E -F1<83>128 652.8 Q F0(EvModder)7.5 E F1(REPOR)72 669.6 Q 1.666(TING B)-.4 -F(UGS)-.1 E F0(https://todo.sr)108 681.6 Q(.ht/\001nabijaczle)-.55 E -(weli/tzpfms)-.25 E F4(\001nabijaczleweli/tzpfms@lists.sr.ht)108 698.4 Q -F0 83.763(,a)C(rchi)-83.763 E -.15(ve)-.25 G 83.762(da).15 G(t)-83.762 E -(https://lists.sr)108 710.4 Q(.ht/\001nabijaczle)-.55 E(weli/tzpfms.) --.25 E(tzpfms 0.3.4-14-gf5996ad)72 817.889 Q(December 4, 2022)84.693 E -(1)183.842 E 0 Cg EP +.15 E F2<83>128 616.8 Q F1(ThePhD)7.5 E F2<83>128 628.8 Q F1 +(Embark Studios)7.5 E F2<83>128 640.8 Q F1(Jasper Bekk)7.5 E(ers)-.1 E +F2<83>128 652.8 Q F1(EvModder)7.5 E F2(REPOR)72 669.6 Q 1.666(TING B)-.4 +F(UGS)-.1 E F1(https://todo.sr)108 681.6 Q(.ht/\001nabijaczle)-.55 E +(weli/tzpfms)-.25 E F0(\001nabijaczle)108 698.4 Q(weli/tzpfms@lists.sr) +-.15 E(.ht)-1.11 E F1 2.5(,a)C(rchi)-2.5 E -.15(ve)-.25 G 2.5(da).15 G +2.5(th)-2.5 G(ttps://lists.sr)-2.5 E(.ht/\001nabijaczle)-.55 E +(weli/tzpfms.)-.25 E(tzpfms 0.3.4-14-gf5996ad)72 817.889 Q +(December 4, 2022)84.693 E(1)183.842 E 0 Cg EP %%Page: 1 15 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(ZFS-TPM2-LO)72 48 Q 58.373(AD-KEY\(8\) System) --.35 F(Manager')2.5 E 2.5(sM)-.55 G 55.872(anual ZFS-TPM2-LO)-2.5 F -(AD-KEY\(8\))-.35 E/F1 10/Times-Bold@0 SF -.2(NA)72 84 S(ME).2 E/F2 10 -/Courier-Bold@0 SF(zfs-tpm2-load-key)108 96 Q F0 2.5<8a6c>2.5 G -(oad TPM2-encrypted ZFS dataset k)-2.5 E -.15(ey)-.1 G F1(SYNOPSIS)72 -112.8 Q F2(zfs-fido2-add-backup)108 124.8 Q F0([)2.5 E F21.666 E -F0(])A/F3 10/Courier-Oblique@0 SF(dataset)2.5 E F1(DESCRIPTION)72 141.6 -Q F0 .864(After v)108 153.6 R(erifying)-.15 E F3(dataset)3.364 E F0 -.1 -(wa)3.364 G 3.364(se).1 G .864(ncrypted with)-3.364 F F2(tzpfms)3.365 E -F0(back)3.365 E(end)-.1 E F1(TPM2)3.365 E F0 3.365(,u)C .865 -(nseals the k)-3.365 F 1.165 -.15(ey a)-.1 H .865(nd loads it).15 F -(into)108 165.6 Q F3(dataset)2.5 E F0(.)A(The user is prompted for the \ -additional passphrase, set when creating the k)108 182.4 Q -.15(ey)-.1 G -2.5(,i)-.5 G 2.5(fo)-2.5 G(ne w)-2.5 E(as set.)-.1 E(See)108 199.2 Q/F4 -10/Courier@0 SF(zfs-tpm2-change-key)2.5 E F0 -(\(8\) for a detailed description.)A F1(OPTIONS)72 216 Q F2109.666 -228 Q F0 3.208(Do a no-op/dry run, can be used e)131 228 R -.15(ve)-.25 -G 5.708(ni).15 G 5.708(ft)-5.708 G 3.208(he k)-5.708 F 3.508 -.15(ey i) --.1 H 5.708(sa).15 G 3.208(lready loaded.)-5.708 F(Equi)8.207 E -.25(va) --.25 G 3.207(lent to).25 F F2(zfs)5.707 E(load-key)131 240 Q F0 -.55('s) -C F24.716 E F0(option.)2.5 E F1(ENVIR)72 256.8 Q 1.666(ONMENT V) --.3 F(ARIABLES)-1.35 E F4(TZPFMS_PASSPHRASE_HELPER)108 268.8 Q F0 .045 -(By def)133 280.8 R .045(ault, passphrases are prompted for and read in\ - on the standard output and input streams.)-.1 F(If)5.046 E F4 -(TZPFMS_PASSPHRASE_HELPER)133 292.8 Q F0 1.596(is set and nonempty)4.096 -F 4.096(,i)-.65 G 4.096(tw)-4.096 G 1.596(ill be run via)-4.096 F F4 -(/bin/)4.095 E F2 3.261(sh \255c)B F0(to)4.095 E(pro)133 304.8 Q -(vide each passphrase, instead.)-.15 E .643 +/F0 10/Times-Italic@0 SF(ZFS-TPM2-LO)72 48 Q(AD-KEY)-.55 E/F1 10 +/Times-Roman@0 SF 63.563(\(8\) System)B(Manager')2.5 E 2.5(sM)-.55 G +(anual)-2.5 E F0(ZFS-TPM2-LO)63.562 E(AD-KEY)-.55 E F1(\(8\))A/F2 10 +/Times-Bold@0 SF -.2(NA)72 84 S(ME).2 E F1(zfs-tpm2-load-k)108 96 Q .3 +-.15(ey \212 l)-.1 H(oad TPM2-encrypted ZFS dataset k).15 E -.15(ey)-.1 +G F2(SYNOPSIS)72 112.8 Q/F3 10/Courier-Bold@0 SF(zfs-fido2-add-backup) +108 124.8 Q F1([)2.5 E/F4 10/Courier@0 SF1.666 E F1(])A/F5 10 +/Courier-Oblique@0 SF(dataset)2.5 E F2(DESCRIPTION)72 141.6 Q F1 .865 +(After v)108 153.6 R(erifying)-.15 E F5(dataset)3.365 E F1 -.1(wa)3.365 +G 3.365(se).1 G .865(ncrypted with)-3.365 F F3(tzpfms)3.365 E F1(back) +3.365 E(end)-.1 E F2(TPM2)3.365 E F1 3.365(,u)C .864(nseals the k)-3.365 +F 1.164 -.15(ey a)-.1 H .864(nd loads it).15 F(into)108 165.6 Q F5 +(dataset)2.5 E F1(.)A(The user is prompted for the additional passphras\ +e, set when creating the k)108 182.4 Q -.15(ey)-.1 G 2.5(,i)-.5 G 2.5 +(fo)-2.5 G(ne w)-2.5 E(as set.)-.1 E(See)108 199.2 Q F0(zfs-tpm2-c)2.5 E +(hang)-.15 E(e-k)-.1 E -.3(ey)-.1 G F1 +(\(8\) for a detailed description.).3 E F2(OPTIONS)72 216 Q F4 +109.666 228 Q F1 3.208(Do a no-op/dry run, can be used e)131 228 R -.15 +(ve)-.25 G 5.708(ni).15 G 5.708(ft)-5.708 G 3.208(he k)-5.708 F 3.508 +-.15(ey i)-.1 H 5.708(sa).15 G 3.208(lready loaded.)-5.708 F(Equi)8.208 +E -.25(va)-.25 G 3.208(lent to).25 F F3(zfs)5.708 E F4(load-key)131 240 +Q F1 -.55('s)C F44.716 E F1(option.)2.5 E F2(ENVIR)72 256.8 Q +1.666(ONMENT V)-.3 F(ARIABLES)-1.35 E F4(TZPFMS_PASSPHRASE_HELPER)108 +268.8 Q F1 .046(By def)133 280.8 R .045(ault, passphrases are prompted \ +for and read in on the standard output and input streams.)-.1 F(If)5.045 +E F4(TZPFMS_PASSPHRASE_HELPER)133 292.8 Q F1 .896(is set and nonempty) +3.396 F 3.396(,i)-.65 G 3.396(tw)-3.396 G .896(ill be run via)-3.396 F +F0(/bin/)3.396 E F3(sh)A F48.562 E F1 .897(to pro-)3.396 F +(vide each passphrase, instead.)133 304.8 Q .643 (The standard output stream of the helper is tied to an anon)133 321.6 R .643(ymous \214le and used in its entirety as)-.15 F(the passphrase, e) 133 333.6 Q(xcept for a trailing ne)-.15 E(w-line, if an)-.25 E 3.8 -.65 -(y. T)-.15 H(he ar).65 E(guments are:)-.18 E F4($1)143 345.6 Q F0 +(y. T)-.15 H(he ar).65 E(guments are:)-.18 E F4($1)143 345.6 Q F1 (Pre-formatted noun phrase with all the information belo)160 345.6 Q 1.3 --.65(w, f)-.25 H(or use as a prompt).65 E F4($2)143 357.6 Q F0 +-.65(w, f)-.25 H(or use as a prompt).65 E F4($2)143 357.6 Q F1 (Either the dataset name or the element of the TPM hierarch)160 357.6 Q -2.5(yb)-.05 G(eing prompted for)-2.5 E F4($3)143 369.6 Q F0("ne)160 +2.5(yb)-.05 G(eing prompted for)-2.5 E F4($3)143 369.6 Q F1("ne)160 369.6 Q(w" if this is for a ne)-.25 E 2.5(wp)-.25 G -(assphrase, otherwise blank)-2.5 E F4($4)143 381.6 Q F0("ag)160 381.6 Q +(assphrase, otherwise blank)-2.5 E F4($4)143 381.6 Q F1("ag)160 381.6 Q (ain" if it')-.05 E 2.5(st)-.55 G -(he second prompt for that passphrase, otherwise blank)-2.5 E .178 -(If the helper doesn')133 398.4 R 2.678(te)-.18 G .178 -(xist \(the shell e)-2.828 F .177(xits with)-.15 F F1(127)2.677 E F0 -.177(\), a diagnostic is issued and the normal prompt)B(is used as f)133 +(he second prompt for that passphrase, otherwise blank)-2.5 E .177 +(If the helper doesn')133 398.4 R 2.677(te)-.18 G .177 +(xist \(the shell e)-2.827 F .177(xits with)-.15 F F2(127)2.677 E F1 +.178(\), a diagnostic is issued and the normal prompt)B(is used as f)133 410.4 Q 2.5(all-back. If)-.1 F(it f)2.5 E(ails for an)-.1 E 2.5(yo)-.15 -G(ther reason, the prompting is aborted.)-2.5 E F1 1.666 +G(ther reason, the prompting is aborted.)-2.5 E F2 1.666 (TPM1.X back-end con\214guration)72 427.2 R .625(TPM selection)87 439.2 -R F0(The)108 451.2 Q F2(tzpfms)2.729 E F0 .229 -(suite connects to a local)2.729 F F4(tcsd)2.73 E F0 .23 -(\(8\) process \(at)B F4(localhost:30003)2.73 E F0 2.73(\)b)C 2.73(yd) --2.73 G(ef)-2.73 E 2.73(ault. Use)-.1 F(the)2.73 E(en)108 463.2 Q -(vironment v)-.4 E(ariable)-.25 E F4(TZPFMS_TPM1X)2.5 E F0 -(to specify a remote TCS hostname.)2.5 E .111(The T)108 480 R(rouSerS) --.35 E F4(tcsd)2.611 E F0 .111(\(8\) daemon will try)B F4(/dev/tpm0)2.61 -E F0 2.61(,t)C(hen)-2.61 E F4(/udev/tpm0)2.61 E F0 2.61(,t)C(hen)-2.61 E -F4(/dev/tpm)2.61 E F0 2.61(;b)C 2.61(yo)-2.61 G(ccu-)-2.61 E -.1(py)108 -492 S(ing one of the earlier ones with, for e).1 E -(xample, shell redirection, a later one can be selected.)-.15 E F1 .625 -(See also)87 508.8 R F0(The T)108 520.8 Q +R F1(The)108 451.2 Q F3(tzpfms)2.509 E F1 .009 +(suite connects to a local)2.509 F F0(tcsd)2.508 E F1 .008 +(\(8\) process \(at)B F0(localhost:30003)2.508 E F1 2.508(\)b)C 2.508 +(yd)-2.508 G(ef)-2.508 E 2.508(ault. Use)-.1 F .008(the en)2.508 F +(viron-)-.4 E(ment v)108 463.2 Q(ariable)-.25 E F4(TZPFMS_TPM1X)2.5 E F1 +(to specify a remote TCS hostname.)2.5 E .444(The T)108 480 R(rouSerS) +-.35 E F0(tcsd)2.944 E F1 .444(\(8\) daemon will try)B F0(/de)2.945 E +(v/tpm0)-.15 E F1 2.945(,t)C(hen)-2.945 E F0(/ude)2.945 E(v/tpm0)-.15 E +F1 2.945(,t)C(hen)-2.945 E F0(/de)2.945 E(v/tpm)-.15 E F1 2.945(;b)C +2.945(yo)-2.945 G(ccup)-2.945 E .445(ying one of)-.1 F +(the earlier ones with, for e)108 492 Q +(xample, shell redirection, a later one can be selected.)-.15 E F2 .625 +(See also)87 508.8 R F1(The T)108 520.8 Q (rouSerS project page at https://sourcefor)-.35 E (ge.net/projects/trousers.)-.18 E 4.415 (The TPM 1.2 main speci\214cation inde)108 537.6 R 6.915(xa)-.15 G 6.915 (th)-6.915 G(ttps://trustedcomputinggroup.or)-6.915 E -(g/resource/tpm-main-)-.18 E(speci\214cation.)108 549.6 Q F1 1.666 -(SPECIAL THANKS)72 566.4 R F0 1.6 -.8(To a)108 578.4 T +(g/resource/tpm-main-)-.18 E(speci\214cation.)108 549.6 Q F2 1.666 +(SPECIAL THANKS)72 566.4 R F1 1.6 -.8(To a)108 578.4 T (ll who support further de).8 E -.15(ve)-.25 G(lopment, in particular:) -.15 E F1<83>128 590.4 Q F0(ThePhD)7.5 E F1<83>128 602.4 Q F0 -(Embark Studios)7.5 E F1<83>128 614.4 Q F0(Jasper Bekk)7.5 E(ers)-.1 E -F1<83>128 626.4 Q F0(EvModder)7.5 E F1(REPOR)72 643.2 Q 1.666(TING B)-.4 -F(UGS)-.1 E F0(https://todo.sr)108 655.2 Q(.ht/\001nabijaczle)-.55 E -(weli/tzpfms)-.25 E F4(\001nabijaczleweli/tzpfms@lists.sr.ht)108 672 Q -F0 83.763(,a)C(rchi)-83.763 E -.15(ve)-.25 G 83.762(da).15 G(t)-83.762 E -(https://lists.sr)108 684 Q(.ht/\001nabijaczle)-.55 E(weli/tzpfms.)-.25 -E(tzpfms 0.3.4-14-gf5996ad)72 817.889 Q(December 4, 2022)84.693 E(1) -183.842 E 0 Cg EP +.15 E F2<83>128 590.4 Q F1(ThePhD)7.5 E F2<83>128 602.4 Q F1 +(Embark Studios)7.5 E F2<83>128 614.4 Q F1(Jasper Bekk)7.5 E(ers)-.1 E +F2<83>128 626.4 Q F1(EvModder)7.5 E F2(REPOR)72 643.2 Q 1.666(TING B)-.4 +F(UGS)-.1 E F1(https://todo.sr)108 655.2 Q(.ht/\001nabijaczle)-.55 E +(weli/tzpfms)-.25 E F0(\001nabijaczle)108 672 Q(weli/tzpfms@lists.sr) +-.15 E(.ht)-1.11 E F1 2.5(,a)C(rchi)-2.5 E -.15(ve)-.25 G 2.5(da).15 G +2.5(th)-2.5 G(ttps://lists.sr)-2.5 E(.ht/\001nabijaczle)-.55 E +(weli/tzpfms.)-.25 E(tzpfms 0.3.4-14-gf5996ad)72 817.889 Q +(December 4, 2022)84.693 E(1)183.842 E 0 Cg EP %%Trailer end %%EOF