From 7ddb58d807f5a5b0915ffe1ea72fb4202e1f7f62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1=20autouploader?= Date: Fri, 17 Jun 2022 21:04:02 +0000 Subject: [PATCH] Manpage update by job 782530 --- tzpfms.pdf | Bin 70005 -> 70218 bytes tzpfms.ps | 1149 ++++++++++++++++++----------------- zfs-tpm-list.8 | 4 +- zfs-tpm-list.8.html | 4 +- zfs-tpm1x-change-key.8 | 4 +- zfs-tpm1x-change-key.8.html | 4 +- zfs-tpm1x-clear-key.8 | 4 +- zfs-tpm1x-clear-key.8.html | 4 +- zfs-tpm1x-load-key.8 | 4 +- zfs-tpm1x-load-key.8.html | 4 +- zfs-tpm2-change-key.8 | 4 +- zfs-tpm2-change-key.8.html | 4 +- zfs-tpm2-clear-key.8 | 4 +- zfs-tpm2-clear-key.8.html | 4 +- zfs-tpm2-load-key.8 | 4 +- zfs-tpm2-load-key.8.html | 4 +- 16 files changed, 608 insertions(+), 597 deletions(-) diff --git a/tzpfms.pdf b/tzpfms.pdf index ed3259fb9ce551d4ad1a2b7f83d0c7519bc2982b..4b49436f2efec4a7401976edd48b21f28f52a82b 100644 GIT binary patch delta 30937 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.834 E F0(|)A F21.666 E/F3 10/Courier-Oblique@0 SF(depth) 6 E F0 3.333(][).833 G F2-.834 E F0(|)A F21.666 E F3 (back-end)6 E F0 3.333(][).833 G F2-.834 E F0(|)A F21.666 E -F0 2.5(][).833 G F3(filesystem)-2.5 E F0(|)A F3(volume)A F0 1.666(]...)C -F1(DESCRIPTION)72 168 Q F0(Lists the follo)102 180 Q +F0(]).833 E([)180 156 Q F3(filesystem)A F0(|)A F3(volume)A F0 1.666 +(]...)C F1(DESCRIPTION)72 180 Q F0(Lists the follo)102 192 Q (wing properties on encryption roots:)-.25 E/F4 10/Courier@0 SF(name)132 -192 Q(back-end)132 204 Q F0(the)191 204 Q F2(tzpfms)4.153 E F0 3.318 -(back-end \()4.153 F(e.g.)1.666 E F1(TPM2)4.152 E F0(for)4.152 E F4 -(zfs-tpm2-change-key)4.152 E F0 1.652(\(8\) or)B F1(TPM1.X)4.152 E F0 -(for)191 216 Q F4(zfs-tpm1x-change-key)2.5 E F0 -.834(\(8\) \) ,)B(or ") -2.5 E F1(-)A F0 2.5("i)C 2.5(fn)-2.5 G(one is con\214gured)-2.5 E F4 -(keystatus)132 228 Q F1 -2.1 -.25(av a)191 228 T(ilable).25 E F0(or)2.5 -E F1(una)2.5 E -.1(va)-.25 G(ilable).1 E F4(coherent)132 240 Q F1 -.1 -(ye)191 240 S(s).1 E F0 12.834(if either both)15.334 F F4 -(xyz.nabijaczleweli:tzpfms.backend)15.334 E F0(and)15.334 E F4 -(xyz.nabijaczleweli:tzpfms.key)191 252 Q F0(are present or missing,)2.5 -E F1(no)2.5 E F0(otherwise)2.5 E 11.268(Incoherent datasets require imm\ -ediate operator attention, with either the appropriate)102 270 R F2 -(zfs-tpm)102 282 Q/F5 10/Symbol SF(*)A F2(-clear-key)A F0 .462 -(program or)2.962 F F2 .462(zfs change-key)2.962 F F0(and)2.962 E F2 -.462(zfs inherit)2.962 F F0 2.962<8a69>2.962 G 2.963(ft)-2.962 G .463 -(he k)-2.963 F .763 -.15(ey b)-.1 H .463(ecomes un-).15 F .145 -(loaded, the)102 294 R 2.645(yw)-.15 G .145 -(ill require restoration from back-up.)-2.645 F(Ho)5.144 E(we)-.25 E --.15(ve)-.25 G .944 -.4(r, t).15 H .144(his should ne).4 F -.15(ve)-.25 -G 2.644(ro).15 G(ccur)-2.644 E 2.644(,u)-.4 G .144(nless something went) --2.644 F(horribly wrong with the dataset properties.)102 306 Q 2.386(If\ - no datasets are speci\214ed, all matching encryption roots are listed \ -\212 by def)102 324 R 2.386(ault, those managed by)-.1 F F2(tzpfms)102 -336 Q F0(.)A F1(OPTIONS)72 360 Q F2103.666 372 Q F0 .447 -(Scripting mode \212 remo)173 372 R .747 -.15(ve h)-.15 H .446 -(eaders and separate \214elds by a single tab instead of columnat-).15 F -(ing them with spaces.)173 384 Q F2103.666 402 Q F0 -(Recurse into all descendants of speci\214ed datasets.)173 402 Q F2 -103.666 414 Q F3(depth)6 E F0(Recurse at most)173 414 Q F3(depth) +204 Q(back-end)132 216 Q F0(the)191 216 Q F2(tzpfms)7.633 E F0 6.799 +(back-end \()7.633 F(e.g.)1.666 E F1(TPM2)7.633 E F0(for)7.633 E F4 +(zfs-tpm2-change-key)7.634 E F0 5.134(\(8\) or)B F1(TPM1.X)191 228 Q F0 +(for)2.5 E F4(zfs-tpm1x-change-key)2.5 E F0 -.834(\(8\) \) ,)B(or ")2.5 +E F1(-)A F0 2.5("i)C 2.5(fn)-2.5 G(one is con\214gured)-2.5 E F4 +(keystatus)132 240 Q F1 -2.1 -.25(av a)191 240 T(ilable).25 E F0(or)2.5 +E F1(una)2.5 E -.1(va)-.25 G(ilable).1 E F4(coherent)132 252 Q F1 -.1 +(ye)191 252 S(s).1 E F0 9.489(if either both)11.989 F F4 +(xyz.nabijaczleweli:tzpfms.backend)11.989 E F0(and)11.989 E F4 +(xyz.nabijaczleweli:tzpfms.key)191 264 Q F0(are present or missing,)2.5 +E F1(no)2.5 E F0(otherwise)2.5 E 9.409(Incoherent datasets require imme\ +diate operator attention, with either the appropriate)102 282 R F2 +(zfs-tpm)102 294 Q/F5 10/Symbol SF(*)A F2(-clear-key)A F0 .427 +(program or)2.927 F F2 .426(zfs change-key)2.927 F F0(and)2.926 E F2 +.426(zfs inherit)2.926 F F0 2.926<8a69>2.926 G 2.926(ft)-2.926 G .426 +(he k)-2.926 F .726 -.15(ey b)-.1 H(ecomes).15 E 1.112(unloaded, the)102 +306 R 3.612(yw)-.15 G 1.112(ill require restoration from back-up.)-3.612 +F(Ho)6.113 E(we)-.25 E -.15(ve)-.25 G 1.913 -.4(r, t).15 H 1.113 +(his should ne).4 F -.15(ve)-.25 G 3.613(ro).15 G(ccur)-3.613 E 3.613 +(,u)-.4 G 1.113(nless some-)-3.613 F +(thing went horribly wrong with the dataset properties.)102 318 Q 1.34(\ +If no datasets are speci\214ed, all matching encryption roots are liste\ +d \212 by def)102 336 R 1.34(ault, those managed by)-.1 F F2(tzpfms)102 +348 Q F0(.)A F1(OPTIONS)72 372 Q F2103.666 384 Q F0 .124 +(Scripting mode \212 remo)173 384 R .424 -.15(ve h)-.15 H .125 +(eaders and separate \214elds by a single tab instead of colum-).15 F +(nating them with spaces.)173 396 Q F2103.666 414 Q F0 +(Recurse into all descendants of speci\214ed datasets.)173 414 Q F2 +103.666 426 Q F3(depth)6 E F0(Recurse at most)173 426 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 F2 -103.666 432 Q F0(List all encryption roots, e)173 432 Q -.15(ve) +103.666 444 Q F0(List all encryption roots, e)173 444 Q -.15(ve) -.25 G 2.5(no).15 G(nes not managed by)-2.5 E F2(tzpfms)2.5 E F0(.)A F2 -103.666 444 Q F3(back-end)6 E F0 -(List only encryption roots with the speci\214ed)173 456 Q F2(tzpfms)2.5 -E F3(back-end)2.5 E F0(.)A F2103.666 474 Q F0 -(List only encryption roots whose k)173 474 Q -.15(ey)-.1 G 2.5(sa).15 G -(re una)-2.5 E -.25(va)-.2 G(ilable.).25 E F2103.666 486 Q F0 +103.666 456 Q F3(back-end)6 E F0 +(List only encryption roots with the speci\214ed)173 468 Q F2(tzpfms)2.5 +E F3(back-end)2.5 E F0(.)A F2103.666 486 Q F0 (List only encryption roots whose k)173 486 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 510 Q F4($)102 -522 Q F2(zfs-tpm-list)6 E F4 72(NAME BACK-END)102 534 R 18 -(KEYSTATUS COHERENT)12 F 36(tarta-zoot TPM1.X)102 546 R 18 -(available yes)24 F 6(tarta-zoot/home TPM2)102 558 R 6(unavailable yes) -36 F($)102 582 Q F2 1.666(zfs-tpm-list \255ad0)6 F F4 24(NAME BACK-END) -102 594 R 6(KEYSTATUS COHERENT)12 F 6(filling -)102 606 R 6 -(available yes)54 F($)102 630 Q F2 1.666(zfs-tpm-list \255b)6 F F1(TPM2) -6 E F4 72(NAME BACK-END)102 642 R 18(KEYSTATUS COHERENT)12 F 6 -(tarta-zoot/home TPM2)102 654 R 6(unavailable yes)36 F($)102 678 Q F2 +(re una)-2.5 E -.25(va)-.2 G(ilable.).25 E F2103.666 498 Q F0 +(List only encryption roots whose k)173 498 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 522 Q F4($)102 +534 Q F2(zfs-tpm-list)6 E F4 72(NAME BACK-END)102 546 R 18 +(KEYSTATUS COHERENT)12 F 36(tarta-zoot TPM1.X)102 558 R 18 +(available yes)24 F 6(tarta-zoot/home TPM2)102 570 R 6(unavailable yes) +36 F($)102 594 Q F2 1.666(zfs-tpm-list \255ad0)6 F F4 24(NAME BACK-END) +102 606 R 6(KEYSTATUS COHERENT)12 F 6(filling -)102 618 R 6 +(available yes)54 F($)102 642 Q F2 1.666(zfs-tpm-list \255b)6 F F1(TPM2) +6 E F4 72(NAME BACK-END)102 654 R 18(KEYSTATUS COHERENT)12 F 6 +(tarta-zoot/home TPM2)102 666 R 6(unavailable yes)36 F($)102 690 Q F2 1.666(zfs-tpm-list \255ra)6 F F3(tarta-zoot)6 E F4 72(NAME BACK-END)102 -690 R 18(KEYSTATUS COHERENT)12 F 36(tarta-zoot TPM1.X)102 702 R 18 -(available yes)24 F F0(tzpfms 0.3.0)72 750 Q(December 20, 2021)144.985 E -(1)189.705 E 0 Cg EP +702 R 18(KEYSTATUS COHERENT)12 F 36(tarta-zoot TPM1.X)102 714 R 18 +(available yes)24 F 6(tarta-zoot/home TPM2)102 726 R 6(unavailable yes) +36 F 12(tarta-zoot/bkp -)102 738 R 18(available yes)54 F 18 +(tarta-zoot/vm -)102 750 R 18(available yes)54 F F0(tzpfms 0.3.0-1-g)72 +799.889 Q 105.605(a4cfe40 June)-.05 F(17, 2022)2.5 E(1)201.085 E 0 Cg EP %%Page: 2 2 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.834(ZFS-TPM-LIST \(8\))72 48 R (System Manager')102.759 E 2.5(sM)-.55 G 97.759(anual ZFS-TPM-LIST)-2.5 -F(\(8\))1.666 E/F1 10/Courier@0 SF 6(tarta-zoot/home TPM2)102 96 R 6 -(unavailable yes)36 F 12(tarta-zoot/bkp -)102 108 R 18(available yes)54 -F 18(tarta-zoot/vm -)102 120 R 18(available yes)54 F($)102 144 Q/F2 10 -/Courier-Bold@0 SF 1.666(zfs-tpm-list \255al)6 F F1 72(NAME BACK-END)102 -156 R 6(KEYSTATUS COHERENT)12 F 54(filling -)102 168 R 6(available yes) -54 F 36(tarta-zoot TPM1.X)102 180 R 6(available yes)24 F 12 -(tarta-zoot/bkp -)102 192 R 6(available yes)54 F 18(tarta-zoot/vm -)102 -204 R 6(available yes)54 F/F3 10/Times-Bold@0 SF 1.666(SPECIAL THANKS)72 -228 R F0 1.6 -.8(To a)102 240 T(ll who support further de).8 E -.15(ve) --.25 G(lopment, in particular:).15 E F3<83>122 252 Q F0(ThePhD)2.5 E F3 -<83>122 264 Q F0(Embark Studios)2.5 E F3<83>122 276 Q F0(Jasper Bekk)2.5 -E(ers)-.1 E F3(REPOR)72 300 Q 1.666(TING B)-.4 F(UGS)-.1 E -(https://todo.sr)102 312 Q(.ht/~nabijaczleweli/tzpfms)-1 E F1 -(~nabijaczleweli/tzpfms@lists.sr.ht)102 330 Q F0 2.5(,a)C(rchi)-2.5 E --.15(ve)-.25 G 2.5(da).15 G(t)-2.5 E F3(https://lists.sr)2.5 E -(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A(tzpfms 0.3.0)72 750 Q -(December 20, 2021)144.985 E(2)189.705 E 0 Cg EP +F(\(8\))1.666 E/F1 10/Courier@0 SF($)102 96 Q/F2 10/Courier-Bold@0 SF +1.666(zfs-tpm-list \255al)6 F F1 72(NAME BACK-END)102 108 R 6 +(KEYSTATUS COHERENT)12 F 54(filling -)102 120 R 6(available yes)54 F 36 +(tarta-zoot TPM1.X)102 132 R 6(available yes)24 F 12(tarta-zoot/bkp -) +102 144 R 6(available yes)54 F 18(tarta-zoot/vm -)102 156 R 6 +(available yes)54 F/F3 10/Times-Bold@0 SF 1.666(SPECIAL THANKS)72 180 R +F0 1.6 -.8(To a)102 192 T(ll who support further de).8 E -.15(ve)-.25 G +(lopment, in particular:).15 E F3<83>122 204 Q F0(ThePhD)2.5 E F3<83>122 +216 Q F0(Embark Studios)2.5 E F3<83>122 228 Q F0(Jasper Bekk)2.5 E(ers) +-.1 E F3(REPOR)72 252 Q 1.666(TING B)-.4 F(UGS)-.1 E(https://todo.sr)102 +264 Q(.ht/~nabijaczleweli/tzpfms)-1 E F1 +(~nabijaczleweli/tzpfms@lists.sr.ht)102 282 Q F0 86.763(,a)C(rchi) +-86.763 E -.15(ve)-.25 G 86.762(da).15 G(t)-86.762 E F3 +(https://lists.sr)102 294 Q(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A +(tzpfms 0.3.0-1-g)72 799.889 Q 105.605(a4cfe40 June)-.05 F(17, 2022)2.5 +E(2)201.085 E 0 Cg EP %%Page: 3 3 %%BeginPageSetup BP @@ -344,156 +345,159 @@ BP (zfs-tpm1x-change-key)102 144 Q F0([)3.333 E F22.499 E/F3 10 /Courier-Oblique@0 SF(backup-file)6 E F0 3.333(][).833 G F2-.834 E F3(PCR)6 E F0([)A F2(,)A F3(PCR)A F0 1.666(]...)C(])-.833 E F3(dataset) -2.5 E F1(DESCRIPTION)72 168 Q F0 4.76 -.8(To n)102 180 T 3.16 -(ormalise the).8 F F3(dataset)5.66 E F0(,)A F2(zfs-tpm1x-change-key)5.66 -E F0 3.16(will open its encryption root in its stead.)5.66 F F2 -(zfs-tpm1x-change-key)102 192 Q F0(will)3.264 E/F4 10/Times-Italic@0 SF -(ne)3.264 E(ver)-.15 E F0 .764(create or destro)3.264 F 3.264(ye)-.1 G -.764(ncryption roots; use)-3.264 F/F5 10/Courier@0 SF(zfs-change-key) -3.264 E F0 .764(\(8\) for)B(that.)102 204 Q +2.5 E F1(DESCRIPTION)72 168 Q F0 3.366 -.8(To n)102 180 T 1.766 +(ormalise the).8 F F3(dataset)4.266 E F0(,)A F2(zfs-tpm1x-change-key) +4.266 E F0 1.766(will open its encryption root in its stead.)4.266 F F2 +(zfs-tpm1x-change-key)102 192 Q F0(will)3.064 E/F4 10/Times-Italic@0 SF +(ne)3.064 E(ver)-.15 E F0 .564(create or destro)3.064 F 3.064(ye)-.1 G +.564(ncryption roots; use)-3.064 F/F5 10/Courier@0 SF(zfs-change-key) +3.063 E F0(\(8\))A(for that.)102 204 Q (First, a connection is made to the TPM, which)102 222 Q F4(must)2.5 E -F0(be TPM-1.X-compatible.)2.5 E(If)102 240 Q F3(dataset)2.553 E F0 -.1 -(wa)2.553 G 2.553(sp).1 G(re)-2.553 E .053(viously encrypted with)-.25 F -F2(tzpfms)2.553 E F0 .053(and the)2.553 F F1(TPM1.X)2.553 E F0 .054 -(back-end w)2.553 F .054(as used, the metadata will)-.1 F .203 -(be silently cleared.)102 252 R .203(Otherwise, or in case of an error) -5.203 F 2.703(,d)-.4 G .203(ata required for manual interv)-2.703 F .202 -(ention will be printed to)-.15 F(the standard error stream.)102 264 Q -(Ne)102 282 Q .486(xt, a ne)-.15 F 2.986(ww)-.25 G .486(rapping k)-2.986 -F .786 -.15(ey i)-.1 H 2.986(sg).15 G .486 -(enerated on the TPM, optionally back)-2.986 F .486(ed up)-.1 F 1.666 -(\(s)4.652 G(ee)-1.666 E F1(OPTIONS)2.987 E F0 -2.845 1.666(\), a)1.666 -H .487(nd sealed on)-1.666 F 2.575(the TPM; the user is prompted for an\ - optional passphrase to protect the k)102 294 R 2.875 -.15(ey w)-.1 H -2.575(ith, and for the SRK).15 F(passphrase, set when taking o)102 306 Q -(wnership, if not "well-kno)-.25 E(wn" \(all zeroes\).)-.25 E(The follo) -102 324 Q(wing properties are set on)-.25 E F3(dataset)2.5 E F0(:)A F1 -<83>122 336 Q F5(xyz.nabijaczleweli:tzpfms.backend)7.5 E F0(=)A F1 -(TPM1.X)A<83>122 348 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)102 -366 Q F0 2.231(identi\214es this dataset for w)4.73 F 2.231(ork with)-.1 -F F1(TPM1.X)4.731 E F0(-back-ended)A F2(tzpfms)4.731 E F0 3.897 -(tools \()4.731 F(namely)1.666 E F5(zfs-tpm1x-change-key)102 378 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 -.834(\(8\) \) .)B F5(tzpfms.key)102 396 Q -F0 .334(is a colon-separated pair of he)2.834 F .333 -(xadecimal-string \(i.e. "4F7730" for "Ow0"\) blobs; the \214rst one) --.15 F .362(represents the RSA k)102 408 R .662 -.15(ey p)-.1 H .362(ro\ +F0(be TPM-1.X-compatible.)2.5 E(If)102 240 Q F3(dataset)2.652 E F0 -.1 +(wa)2.652 G 2.652(sp).1 G(re)-2.652 E .152(viously encrypted with)-.25 F +F2(tzpfms)2.652 E F0 .153(and the)2.652 F F1(TPM1.X)2.653 E F0 .153 +(back-end w)2.653 F .153(as used, the metadata)-.1 F .587 +(will be silently cleared.)102 252 R .587 +(Otherwise, or in case of an error)5.587 F 3.087(,d)-.4 G .587 +(ata required for manual interv)-3.087 F .586(ention will be)-.15 F +(printed to the standard error stream.)102 264 Q(Ne)102 282 Q .252 +(xt, a ne)-.15 F 2.752(ww)-.25 G .252(rapping k)-2.752 F .552 -.15(ey i) +-.1 H 2.752(sg).15 G .253(enerated on the TPM, optionally back)-2.752 F +.253(ed up)-.1 F 1.666(\(s)4.419 G(ee)-1.666 E F1(OPTIONS)2.753 E F0 +-3.079 1.666(\), a)1.666 H .253(nd sealed)-1.666 F .901(on the TPM; the\ + user is prompted for an optional passphrase to protect the k)102 294 R +1.201 -.15(ey w)-.1 H .901(ith, and for the SRK).15 F +(passphrase, set when taking o)102 306 Q(wnership, if not "well-kno)-.25 +E(wn" \(all zeroes\).)-.25 E(The follo)102 324 Q +(wing properties are set on)-.25 E F3(dataset)2.5 E F0(:)A F1<83>122 336 +Q F5(xyz.nabijaczleweli:tzpfms.backend)7.5 E F0(=)A F1(TPM1.X)A<83>122 +348 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)102 366 Q F0 .558 +(identi\214es this dataset for w)3.058 F .558(ork with)-.1 F F1(TPM1.X) +3.058 E F0(-back-ended)A F2(tzpfms)3.059 E F0 2.225(tools \()3.059 F +(namely)1.666 E F5(zfs-tpm1x-change-key)102 378 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 -.834(\(8\) \) .)B F5(tzpfms.key)102 396 Q F0 .376 +(is a colon-separated pair of he)2.876 F .376 +(xadecimal-string \(i.e. "4F7730" for "Ow0"\) blobs; the \214rst)-.15 F +1.155(one represents the RSA k)102 408 R 1.455 -.15(ey p)-.1 H 1.156(ro\ tecting the blob, and it is protected with either the passphrase, if pr\ -o).15 F .363(vided, or the)-.15 F .236(SHA1 constant)102 420 R F5 -(CE4CF677875B5EB8993591D5A9AF1ED24A3A8736)2.736 E F0 2.736(;t)C .236 -(he second represents the sealed)-2.736 F 11.923 -(object containing the wrapping k)102 432 R -.15(ey)-.1 G 14.424(,a)-.5 -G 11.924(nd is protected with the SHA1 constant)-14.424 F F5 -(B9EE715DBE4B243FAA81EA04306E063710383E35)102 444 Q F0 7.438(.T)C 2.438 -(here e)-7.438 F 2.438(xists no other user)-.15 F 2.437 +o-).15 F 2.487(vided, or the SHA1 constant)102 420 R F5 +(CE4CF677875B5EB8993591D5A9AF1ED24A3A8736)4.986 E F0 4.986(;t)C 2.486 +(he second)-4.986 F 2.084 +(represents the sealed object containing the wrapping k)102 432 R -.15 +(ey)-.1 G 4.585(,a)-.5 G 2.085(nd is protected with the SHA1 constant) +-4.585 F F5(B9EE715DBE4B243FAA81EA04306E063710383E35)102 444 Q F0 5.347 +(.T)C .347(here e)-5.347 F .347(xists no other user)-.15 F .347 (-land tool for de-)-.2 F(crypting this; perhaps there should be.)102 -456 Q(Finally)102 474 Q 4.14(,t)-.65 G 1.641(he equi)-4.14 F -.25(va) --.25 G 1.641(lent of).25 F F2 1.641(zfs change-key)4.141 F9.307 E -F5(keylocation=prompt)7.641 E F29.307 E F5(keyformat=raw)7.641 E -F3(dataset)102 486 Q F0 .118(is performed with the ne)2.618 F 2.618(wk) --.25 G -.15(ey)-2.718 G 5.118(.I)-.5 G 2.617(fa)-5.118 G 2.617(ne)-2.617 -G .117(rror occurred, best ef)-2.617 F .117 -(fort is made to clean up the properties,)-.25 F -(or to issue a note for manual interv)102 498 Q -(ention into the standard error stream.)-.15 E 3.911<418c>102 516 S -1.411(nal v)-3.911 F 1.411(eri\214cation should be made by running)-.15 -F F2 3.077(zfs-tpm1x-load-key \255n)3.911 F F3(dataset)7.411 E F0 6.411 -(.I)C 3.911(ft)-6.411 G 1.412(hat com-)-3.911 F 1.843 -(mand succeeds, all is well, b)102 528 R 1.843(ut otherwise the dataset\ - can be manually rolled back to a passphrase with)-.2 F F2 -(zfs-tpm1x-clear-key)102 540 Q F3(dataset)12.878 E F0 1.666(\(o)11.044 G -7.678 -.4(r, i)-1.666 H 9.378(ft).4 G 6.878(hat f)-9.378 F 6.878 -(ails to w)-.1 F(ork,)-.1 E F2 6.879(zfs change-key)9.378 F14.545 +456 Q(Finally)102 474 Q 12.755(,t)-.65 G 10.255(he equi)-12.755 F -.25 +(va)-.25 G 10.255(lent of).25 F F2 10.255(zfs change-key)12.755 F +17.922 E F5(keylocation=prompt)16.256 E F217.922 E F5 +(keyformat=raw)102 486 Q F3(dataset)6.507 E F0 .507 +(is performed with the ne)3.007 F 3.006(wk)-.25 G -.15(ey)-3.106 G 5.506 +(.I)-.5 G 3.006(fa)-5.506 G 3.006(ne)-3.006 G .506 +(rror occurred, best ef)-3.006 F .506(fort is made)-.25 F +(to clean up the properties, or to issue a note for manual interv)102 +498 Q(ention into the standard error stream.)-.15 E 2.624<418c>102 516 S +.124(nal v)-2.624 F .124(eri\214cation should be made by running)-.15 F +F2 1.791(zfs-tpm1x-load-key \255n)2.625 F F3(dataset)6.125 E F0 5.125 +(.I)C 2.625(ft)-5.125 G .125(hat com-)-2.625 F .859 +(mand succeeds, all is well, b)102 528 R .859(ut otherwise the dataset \ +can be manually rolled back to a passphrase with)-.2 F F2 +(zfs-tpm1x-clear-key)102 540 Q F3(dataset)11.205 E F0 1.666(\(o)9.371 G +6.005 -.4(r, i)-1.666 H 7.706(ft).4 G 5.206(hat f)-7.706 F 5.206 +(ails to w)-.1 F(ork,)-.1 E F2 5.206(zfs change-key)7.706 F12.872 E F5(keyformat=passphrase)102 552 Q F3(dataset)6 E F0 -3.332 1.666 (\), a)1.666 H(nd you are hereby ask)-1.666 E(ed to report a b)-.1 E -(ug, please.)-.2 E F2(zfs-tpm1x-clear-key)102 570 Q F3(dataset)9.23 E F0 -3.23(can be used to clear the properties and go back to using a)5.73 F -(passphrase.)102 582 Q F1(OPTIONS)72 606 Q F2103.666 618 Q F3 -(backup-file)6 E F0(Sa)191 630 Q .805 -.15(ve a b)-.2 H .505 -(ack-up of the k).15 F .805 -.15(ey t)-.1 H(o).15 E F3(backup-file)3.005 -E F0 3.005(,w)C .506(hich must not e)-3.005 F .506(xist beforehand.)-.15 -F(This)5.506 E(back-up)191 642 Q F4(must)3.182 E F0 .682 -(be stored securely)3.182 F 3.182(,o)-.65 G -.25(ff)-3.182 G 3.182 -(-site. In).25 F .681(case of a catastrophic e)3.181 F -.15(ve)-.25 G -.681(nt, the k).15 F .981 -.15(ey c)-.1 H(an).15 E(be loaded by running) -191 654 Q F2(zfs load-key)221 666 Q F3(dataset)6 E F5(<)6 E F3 -(backup-file)6 E F0(tzpfms 0.3.0)72 750 Q(December 20, 2021)144.985 E(3) -189.705 E 0 Cg EP +(ug, please.)-.2 E F2(zfs-tpm1x-clear-key)102 570 Q F3(dataset)8.036 E +F0 2.035(can be used to clear the properties and go back to using a) +4.536 F(passphrase.)102 582 Q F1(OPTIONS)72 606 Q F2103.666 618 Q +F3(backup-file)6 E F0(Sa)191 630 Q 1.352 -.15(ve a b)-.2 H 1.052 +(ack-up of the k).15 F 1.352 -.15(ey t)-.1 H(o).15 E F3(backup-file) +3.552 E F0 3.552(,w)C 1.052(hich must not e)-3.552 F 1.053 +(xist beforehand.)-.15 F .432(This back-up)191 642 R F4(must)2.932 E F0 +.431(be stored securely)2.931 F 2.931(,o)-.65 G -.25(ff)-2.931 G 2.931 +(-site. In).25 F .431(case of a catastrophic e)2.931 F -.15(ve)-.25 G +.431(nt, the).15 F -.1(ke)191 654 S 2.5(yc)-.05 G +(an be loaded by running)-2.5 E F2(zfs load-key)221 666 Q F3(dataset)6 E +F5(<)6 E F3(backup-file)6 E F2103.666 684 Q F3(PCR)6 E F0([)A F2 +(,)A F3(PCR)A F0 1.666(]...)C .45(Bind the k)191 684 R .75 -.15(ey t)-.1 +H 2.95(os).15 G .45(pace- or comma-separated)-2.95 F F3(PCR)2.95 E F0 +-5.449 2.95(s\212 i)D 2.951(ft)-2.95 G(he)-2.951 E 2.951(yc)-.15 G .451 +(hange, the wrapping)-2.951 F -.1(ke)191 696 S 2.59(yw)-.05 G .089 +(ill not be able to be unsealed.)-2.59 F .089 +(The minimum number of PCRs for a PC TPM)5.089 F(is)191 708 Q F1(24)2.5 +E F0 1.666(\(n)4.166 G(umbered)-1.666 E F1(0)2.5 E F0(..)A F1(23)A F0 +-.832 1.666(\). F)1.666 H(or most, this is also the maximum.)-1.816 E +(tzpfms 0.3.0-1-g)72 799.889 Q 105.605(a4cfe40 June)-.05 F(17, 2022)2.5 +E(3)201.085 E 0 Cg EP %%Page: 4 4 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.834(ZFS-TPM1X-CHANGE-KEY \(8\))72 48 R (System Manager')46.109 E 2.5(sM)-.55 G 41.109 -(anual ZFS-TPM1X-CHANGE-KEY)-2.5 F(\(8\))1.666 E/F1 10/Courier-Bold@0 SF -103.666 96 Q/F2 10/Courier-Oblique@0 SF(PCR)6 E F0([)A F1(,)A F2 -(PCR)A F0 1.666(]...)C .42(Bind the k)191 96 R .72 -.15(ey t)-.1 H 2.92 -(os).15 G .421(pace- or comma-separated)-2.92 F F2(PCR)2.921 E F0 2.921 -(s\212i)C 2.921(ft)-2.921 G(he)-2.921 E 2.921(yc)-.15 G .421 -(hange, the wrapping k)-2.921 F -.15(ey)-.1 G .775 -(will not be able to be unsealed.)191 108 R .775 -(The minimum number of PCRs for a PC TPM is)5.775 F/F3 10/Times-Bold@0 -SF(24)3.274 E F0 1.666(\(n)192.666 120 S(umbered)-1.666 E F3(0)2.5 E F0 -(..)A F3(23)A F0 -.832 1.666(\). F)1.666 H -(or most, this is also the maximum.)-1.816 E F3(ENVIR)72 144 Q 1.666 -(ONMENT V)-.3 F(ARIABLES)-1.35 E/F4 10/Courier@0 SF -(TZPFMS_PASSPHRASE_HELPER)102 156 Q F0 .465(By def)143 168 R .466(ault,\ +(anual ZFS-TPM1X-CHANGE-KEY)-2.5 F(\(8\))1.666 E/F1 10/Times-Bold@0 SF +(ENVIR)72 96 Q 1.666(ONMENT V)-.3 F(ARIABLES)-1.35 E/F2 10/Courier@0 SF +(TZPFMS_PASSPHRASE_HELPER)102 108 Q F0 .159(By def)143 120 R .159(ault,\ passphrases are prompted for and read in on the standard output and in\ -put streams.)-.1 F(If)5.466 E F4(TZPFMS_PASSPHRASE_HELPER)143 180 Q F0 -.517(is set and nonempty)3.017 F 3.017(,i)-.65 G 3.017(tw)-3.017 G .516 -(ill be run via)-3.017 F F4(/bin/)3.016 E F1 2.182(sh \255c)B F0 .516 -(to pro-)3.016 F(vide each passphrase, instead.)143 192 Q .188 -(The standard output stream of the helper is tied to an anon)143 210 R -.189(ymous \214le and used in its entirety as the)-.15 F(passphrase, e) -143 222 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)155 234 Q F0 -(Pre-formatted noun phrase with all the information belo)172 234 Q 1.3 --.65(w, f)-.25 H(or use as a prompt).65 E F4($2)155 246 Q F0 -(Either the dataset name or the element of the TPM hierarch)172 246 Q -2.5(yb)-.05 G(eing prompted for)-2.5 E F4($3)155 258 Q F0("ne)172 258 Q +put streams.)-.1 F(If)143 132 Q F2(TZPFMS_PASSPHRASE_HELPER)3.356 E F0 +.856(is set and nonempty)3.356 F 3.356(,i)-.65 G 3.356(tw)-3.356 G .856 +(ill be run via)-3.356 F F2(/bin/)3.355 E/F3 10/Courier-Bold@0 SF 2.521 +(sh \255c)B F0(to pro)143 144 Q(vide each passphrase, instead.)-.15 E +.087(The standard output stream of the helper is tied to an anon)143 162 +R .088(ymous \214le and used in its entirety as)-.15 F +(the passphrase, e)143 174 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 F2($1)155 186 Q F0 +(Pre-formatted noun phrase with all the information belo)172 186 Q 1.3 +-.65(w, f)-.25 H(or use as a prompt).65 E F2($2)155 198 Q F0 +(Either the dataset name or the element of the TPM hierarch)172 198 Q +2.5(yb)-.05 G(eing prompted for)-2.5 E F2($3)155 210 Q F0("ne)172 210 Q (w" if this is for a ne)-.25 E 2.5(wp)-.25 G(assphrase, otherwise blank) --2.5 E F4($4)155 270 Q F0("ag)172 270 Q(ain" if it')-.05 E 2.5(st)-.55 G -(he second prompt for that passphrase, otherwise blank)-2.5 E .181 -(If the helper doesn')143 288 R 2.681(te)-.18 G 1.847(xist \()-2.831 F -.181(the shell e)1.666 F .181(xits with)-.15 F F3(127)2.681 E F0 -3.151 -1.666(\), a d)1.666 H .181(iagnostic is issued and the normal prompt) --1.666 F(is used as f)143 300 Q 2.5(all-back. If)-.1 F(it f)2.5 E +-2.5 E F2($4)155 222 Q F0("ag)172 222 Q(ain" if it')-.05 E 2.5(st)-.55 G +(he second prompt for that passphrase, otherwise blank)-2.5 E 1.109 +(If the helper doesn')143 240 R 3.609(te)-.18 G 2.775(xist \()-3.759 F +1.109(the shell e)1.666 F 1.109(xits with)-.15 F F1(127)3.609 E F0 +-2.223 1.666(\), a d)1.666 H 1.108(iagnostic is issued and the normal) +-1.666 F(prompt is used as f)143 252 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(TPM1.X back-end con\214guration)72 324 R .625 -(TPM selection)84 336 R F0(The)102 348 Q F1(tzpfms)2.767 E F0 .267 -(suite connects to a local)2.767 F F4(tcsd)2.767 E F0 .267 -(\(8\) process)B 1.666(\(a)4.433 G(t)-1.666 E F4(localhost:30003)2.767 E -F0 4.433(\)b)1.666 G 2.767(yd)-4.433 G(ef)-2.767 E 2.767(ault. Use)-.1 F -.268(the en-)2.767 F(vironment v)102 360 Q(ariable)-.25 E F4 -(TZPFMS_TPM1X)2.5 E F0(to specify a remote TCS hostname.)2.5 E .392 -(The T)102 378 R(rouSerS)-.35 E F4(tcsd)2.892 E F0 .392 -(\(8\) daemon will try)B F4(/dev/tpm0)2.892 E F0 2.892(,t)C(hen)-2.892 E -F4(/udev/tpm0)2.892 E F0 2.891(,t)C(hen)-2.891 E F4(/dev/tpm)2.891 E F0 -2.891(;b)C 2.891(yo)-2.891 G(ccup)-2.891 E(ying)-.1 E -(one of the earlier ones with, for e)102 390 Q -(xample, shell redirection, a later one can be selected.)-.15 E F3 .625 -(See also)84 414 R F0(The T)102 426 Q(rouSerS project page at)-.35 E F3 +-2.5 E F1 1.666(TPM1.X back-end con\214guration)72 276 R .625 +(TPM selection)84 288 R F0(The)102 300 Q F3(tzpfms)2.682 E F0 .182 +(suite connects to a local)2.682 F F2(tcsd)2.682 E F0 .182 +(\(8\) process)B 1.666(\(a)4.348 G(t)-1.666 E F2(localhost:30003)2.682 E +F0 4.348(\)b)1.666 G 2.683(yd)-4.348 G(ef)-2.683 E 2.683(ault. Use)-.1 F +(the)2.683 E(en)102 312 Q(vironment v)-.4 E(ariable)-.25 E F2 +(TZPFMS_TPM1X)2.5 E F0(to specify a remote TCS hostname.)2.5 E .611 +(The T)102 330 R(rouSerS)-.35 E F2(tcsd)3.111 E F0 .611 +(\(8\) daemon will try)B F2(/dev/tpm0)3.11 E F0 3.11(,t)C(hen)-3.11 E F2 +(/udev/tpm0)3.11 E F0 3.11(,t)C(hen)-3.11 E F2(/dev/tpm)3.11 E F0 3.11 +(;b)C 3.11(yo)-3.11 G(ccu-)-3.11 E -.1(py)102 342 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)84 366 R F0(The T)102 378 Q(rouSerS project page at)-.35 E F1 (https://sour)2.5 E(cef)-.18 E(or)-.25 E(ge.net/pr)-.1 E(ojects/tr)-.18 -E(ousers)-.18 E F0(.)A 5.108(The TPM 1.2 main speci\214cation inde)102 -444 R 7.609(xa)-.15 G(t)-7.609 E F3(https://trustedcomputinggr)7.609 E +E(ousers)-.18 E F0(.)A 2.719(The TPM 1.2 main speci\214cation inde)102 +396 R 5.22(xa)-.15 G(t)-5.22 E F1(https://trustedcomputinggr)5.22 E (oup.or)-.18 E(g/r)-.1 E(esour)-.18 E(ce/tpm-main-)-.18 E -(speci\214cation)102 456 Q F0(.)A F3 1.666(SPECIAL THANKS)72 480 R F0 -1.6 -.8(To a)102 492 T(ll who support further de).8 E -.15(ve)-.25 G -(lopment, in particular:).15 E F3<83>122 504 Q F0(ThePhD)2.5 E F3<83>122 -516 Q F0(Embark Studios)2.5 E F3<83>122 528 Q F0(Jasper Bekk)2.5 E(ers) --.1 E F3(REPOR)72 552 Q 1.666(TING B)-.4 F(UGS)-.1 E(https://todo.sr)102 -564 Q(.ht/~nabijaczleweli/tzpfms)-1 E F4 -(~nabijaczleweli/tzpfms@lists.sr.ht)102 582 Q F0 2.5(,a)C(rchi)-2.5 E --.15(ve)-.25 G 2.5(da).15 G(t)-2.5 E F3(https://lists.sr)2.5 E -(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A F3 1.666(SEE ALSO)72 606 R F0 -(PCR allocations:)102 618 Q F3(https://wiki.ar)2.5 E(chlinux.or)-.18 E -(g/title/T)-.1 E(rusted_Platf)-.74 E(orm_Module#Accessing_PCR_r)-.25 E -(egisters)-.18 E F0(and)102 630 Q F3(https://trustedcomputinggr)2.5 E -(oup.or)-.18 E(g/wp-content/uploads/PC-)-.1 E(ClientSpeci\214c_Platf)102 -642 Q(orm_Pr)-.25 E(o\214le_f)-.18 E(or_TPM_2p0_Systems_v51.pdf)-.25 E -F0 2.5(,S)C(ection 2.3.4 "PCR Usage", T)-2.5 E(able 1.)-.8 E -(tzpfms 0.3.0)72 750 Q(December 20, 2021)144.985 E(4)189.705 E 0 Cg EP +(speci\214cation)102 408 Q F0(.)A F1 1.666(SPECIAL THANKS)72 432 R F0 +1.6 -.8(To a)102 444 T(ll who support further de).8 E -.15(ve)-.25 G +(lopment, in particular:).15 E F1<83>122 456 Q F0(ThePhD)2.5 E F1<83>122 +468 Q F0(Embark Studios)2.5 E F1<83>122 480 Q F0(Jasper Bekk)2.5 E(ers) +-.1 E F1(REPOR)72 504 Q 1.666(TING B)-.4 F(UGS)-.1 E(https://todo.sr)102 +516 Q(.ht/~nabijaczleweli/tzpfms)-1 E F2 +(~nabijaczleweli/tzpfms@lists.sr.ht)102 534 Q F0 86.763(,a)C(rchi) +-86.763 E -.15(ve)-.25 G 86.762(da).15 G(t)-86.762 E F1 +(https://lists.sr)102 546 Q(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A F1 +1.666(SEE ALSO)72 570 R F0(PCR allocations:)102 582 Q F1 +(https://wiki.ar)102 594 Q(chlinux.or)-.18 E(g/title/T)-.1 E +(rusted_Platf)-.74 E(orm_Module#Accessing_PCR_r)-.25 E(egisters)-.18 E +F0(and)2.5 E F1(https://trustedcomputinggr)102 606 Q(oup.or)-.18 E +(g/wp-content/uploads/PC-)-.1 E(ClientSpeci\214c_Platf)102 618 Q(orm_Pr) +-.25 E(o\214le_f)-.18 E(or_TPM_2p0_Systems_v51.pdf)-.25 E F0 2.5(,S)C +(ection 2.3.4 "PCR Usage", T)-2.5 E(able)-.8 E(1.)102 630 Q +(tzpfms 0.3.0-1-g)72 799.889 Q 105.605(a4cfe40 June)-.05 F(17, 2022)2.5 +E(4)201.085 E 0 Cg EP %%Page: 5 5 %%BeginPageSetup BP @@ -502,48 +506,49 @@ BP (System Manager')54.989 E 2.5(sM)-.55 G 49.989 (anual ZFS-TPM1X-CLEAR-KEY)-2.5 F(\(8\))1.666 E/F1 10/Times-Bold@0 SF -.2(NA)72 96 S(ME).2 E/F2 10/Courier-Bold@0 SF(zfs-tpm1x-clear-key)102 -108 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 TPM1.X metadata)-.1 E F1(SYNOPSIS)72 132 Q F2 -(zfs-tpm1x-clear-key)102 144 Q/F3 10/Courier-Oblique@0 SF(dataset)2.5 E -F1(DESCRIPTION)72 168 Q F0(After v)102 180 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 6.985 -(1. performs the equi)122 192 R -.25(va)-.25 G 6.984(lent of).25 F F2 -6.984(zfs change-key)9.484 F14.65 E/F4 10/Courier@0 SF -(keylocation=prompt)12.984 E F214.65 E F4(keyformat=passphrase)127 -204 Q F3(dataset)6 E F0(,)A(2. remo)122 216 Q -.15(ve)-.15 G 2.5(st).15 -G(he)-2.5 E F4(xyz.nabijaczleweli:tzpfms.)2.5 E F0({)A F4(backend)A F0 -(,)A F4(key)6 E F0 2.5(}p)C(roperties from)-2.5 E F3(dataset)2.5 E F0(.) -A(See)102 234 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 258 R .625(TPM selection)84 270 R F0 -(The)102 282 Q F2(tzpfms)2.767 E F0 .267(suite connects to a local)2.767 -F F4(tcsd)2.767 E F0 .267(\(8\) process)B 1.666(\(a)4.433 G(t)-1.666 E -F4(localhost:30003)2.767 E F0 4.433(\)b)1.666 G 2.767(yd)-4.433 G(ef) --2.767 E 2.767(ault. Use)-.1 F .268(the en-)2.767 F(vironment v)102 294 -Q(ariable)-.25 E F4(TZPFMS_TPM1X)2.5 E F0 -(to specify a remote TCS hostname.)2.5 E .392(The T)102 312 R(rouSerS) --.35 E F4(tcsd)2.892 E F0 .392(\(8\) daemon will try)B F4(/dev/tpm0) -2.892 E F0 2.892(,t)C(hen)-2.892 E F4(/udev/tpm0)2.892 E F0 2.891(,t)C -(hen)-2.891 E F4(/dev/tpm)2.891 E F0 2.891(;b)C 2.891(yo)-2.891 G(ccup) --2.891 E(ying)-.1 E(one of the earlier ones with, for e)102 324 Q +108 Q F0 3.508<8a72>3.507 G -.25(ew)-3.508 G 1.008(rap ZFS dataset k).25 +F 1.308 -.15(ey i)-.1 H 3.508(np).15 G(asssw)-3.508 E 1.008 +(ord and clear tzpfms TPM1.X meta-)-.1 F(data)102 120 Q F1(SYNOPSIS)72 +144 Q F2(zfs-tpm1x-clear-key)102 156 Q/F3 10/Courier-Oblique@0 SF +(dataset)2.5 E F1(DESCRIPTION)72 180 Q F0(After v)102 192 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.126 +(1. performs the equi)122 204 R -.25(va)-.25 G 5.126(lent of).25 F F2 +5.126(zfs change-key)7.626 F12.792 E/F4 10/Courier@0 SF +(keylocation=prompt)11.126 E F212.791 E F4(keyformat=passphrase) +127 216 Q F3(dataset)6 E F0(,)A 6.99(2. remo)122 228 R -.15(ve)-.15 G +9.491(st).15 G(he)-9.491 E F4(xyz.nabijaczleweli:tzpfms.)9.491 E F0({)A +F4(backend)A F0(,)A F4(key)12.991 E F0 9.491(}p)C 6.991(roperties from) +-9.491 F F3(dataset)127 240 Q F0(.)A(See)102 258 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 282 R .625(TPM selection)84 294 +R F0(The)102 306 Q F2(tzpfms)2.683 E F0 .182(suite connects to a local) +2.683 F F4(tcsd)2.682 E F0 .182(\(8\) process)B 1.666(\(a)4.348 G(t) +-1.666 E F4(localhost:30003)2.682 E F0 4.348(\)b)1.666 G 2.682(yd)-4.348 +G(ef)-2.682 E 2.682(ault. Use)-.1 F(the)2.682 E(en)102 318 Q +(vironment v)-.4 E(ariable)-.25 E F4(TZPFMS_TPM1X)2.5 E F0 +(to specify a remote TCS hostname.)2.5 E .61(The T)102 336 R(rouSerS) +-.35 E F4(tcsd)3.11 E F0 .61(\(8\) daemon will try)B F4(/dev/tpm0)3.11 E +F0 3.11(,t)C(hen)-3.11 E F4(/udev/tpm0)3.111 E F0 3.111(,t)C(hen)-3.111 +E F4(/dev/tpm)3.111 E F0 3.111(;b)C 3.111(yo)-3.111 G(ccu-)-3.111 E -.1 +(py)102 348 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)84 348 R F0(The T)102 360 Q(rouSerS project page at)-.35 E F1 +(See also)84 372 R F0(The T)102 384 Q(rouSerS project page at)-.35 E F1 (https://sour)2.5 E(cef)-.18 E(or)-.25 E(ge.net/pr)-.1 E(ojects/tr)-.18 -E(ousers)-.18 E F0(.)A 5.108(The TPM 1.2 main speci\214cation inde)102 -378 R 7.609(xa)-.15 G(t)-7.609 E F1(https://trustedcomputinggr)7.609 E +E(ousers)-.18 E F0(.)A 2.719(The TPM 1.2 main speci\214cation inde)102 +402 R 5.219(xa)-.15 G(t)-5.219 E F1(https://trustedcomputinggr)5.219 E (oup.or)-.18 E(g/r)-.1 E(esour)-.18 E(ce/tpm-main-)-.18 E -(speci\214cation)102 390 Q F0(.)A F1 1.666(SPECIAL THANKS)72 414 R F0 -1.6 -.8(To a)102 426 T(ll who support further de).8 E -.15(ve)-.25 G -(lopment, in particular:).15 E F1<83>122 438 Q F0(ThePhD)2.5 E F1<83>122 -450 Q F0(Embark Studios)2.5 E F1<83>122 462 Q F0(Jasper Bekk)2.5 E(ers) --.1 E F1(REPOR)72 486 Q 1.666(TING B)-.4 F(UGS)-.1 E(https://todo.sr)102 -498 Q(.ht/~nabijaczleweli/tzpfms)-1 E F4 -(~nabijaczleweli/tzpfms@lists.sr.ht)102 516 Q F0 2.5(,a)C(rchi)-2.5 E --.15(ve)-.25 G 2.5(da).15 G(t)-2.5 E F1(https://lists.sr)2.5 E -(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A(tzpfms 0.3.0)72 750 Q -(December 20, 2021)144.985 E(5)189.705 E 0 Cg EP +(speci\214cation)102 414 Q F0(.)A F1 1.666(SPECIAL THANKS)72 438 R F0 +1.6 -.8(To a)102 450 T(ll who support further de).8 E -.15(ve)-.25 G +(lopment, in particular:).15 E F1<83>122 462 Q F0(ThePhD)2.5 E F1<83>122 +474 Q F0(Embark Studios)2.5 E F1<83>122 486 Q F0(Jasper Bekk)2.5 E(ers) +-.1 E F1(REPOR)72 510 Q 1.666(TING B)-.4 F(UGS)-.1 E(https://todo.sr)102 +522 Q(.ht/~nabijaczleweli/tzpfms)-1 E F4 +(~nabijaczleweli/tzpfms@lists.sr.ht)102 540 Q F0 86.762(,a)C(rchi) +-86.762 E -.15(ve)-.25 G 86.763(da).15 G(t)-86.763 E F1 +(https://lists.sr)102 552 Q(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A +(tzpfms 0.3.0-1-g)72 799.889 Q 105.605(a4cfe40 June)-.05 F(17, 2022)2.5 +E(5)201.085 E 0 Cg EP %%Page: 6 6 %%BeginPageSetup BP @@ -555,31 +560,31 @@ BP (oad TPM1.X-encrypted ZFS dataset k)-2.5 E -.15(ey)-.1 G F1(SYNOPSIS)72 132 Q F2(zfs-tpm1x-load-key)102 144 Q F0([)3.333 E F22.499 E F0(]) .833 E/F3 10/Courier-Oblique@0 SF(dataset)2.5 E F1(DESCRIPTION)72 168 Q -F0 1.156(After v)102 180 R(erifying)-.15 E F3(dataset)3.656 E F0 -.1(wa) -3.656 G 3.656(se).1 G 1.156(ncrypted with)-3.656 F F2(tzpfms)3.655 E F0 -(back)3.655 E(end)-.1 E F1(TPM1.X)3.655 E F0 1.155(will unseal the k) -3.655 F 1.455 -.15(ey a)-.1 H 1.155(nd load it).15 F(into)102 192 Q F3 -(dataset)2.5 E F0(.)A .693 +F0 .041(After v)102 180 R(erifying)-.15 E F3(dataset)2.541 E F0 -.1(wa) +2.541 G 2.541(se).1 G .041(ncrypted with)-2.541 F F2(tzpfms)2.54 E F0 +(back)2.54 E(end)-.1 E F1(TPM1.X)2.54 E F0 .04(will unseal the k)2.54 F +.34 -.15(ey a)-.1 H .04(nd load it).15 F(into)102 192 Q F3(dataset)2.5 E +F0(.)A .611 (The user is \214rst prompted for the SRK passphrase, set when taking o) -102 210 R .694(wnership, if not "well-kno)-.25 F .694(wn" \(all ze-)-.25 -F(roes\); then for the additional passphrase, set when creating the k) +102 210 R .611(wnership, if not "well-kno)-.25 F .611(wn" \(all)-.25 F +(zeroes\); then for the additional passphrase, set when creating the k) 102 222 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)102 240 Q/F4 10/Courier@0 SF(zfs-tpm1x-change-key)2.5 E F0 (\(8\) for a detailed description.)A F1(OPTIONS)72 264 Q F2103.666 -276 Q F0 .179(Do a no-op/dry run, can be used e)119 288 R -.15(ve)-.25 G -2.679(ni).15 G 2.679(ft)-2.679 G .179(he k)-2.679 F .478 -.15(ey i)-.1 H -2.678(sa).15 G .178(lready loaded.)-2.678 F(Equi)5.178 E -.25(va)-.25 G -.178(lent to).25 F F2 .178(zfs load-key)2.678 F F0 -.55('s)C F2 -4.894 E F0(option.)119 300 Q F1(ENVIR)72 324 Q 1.666(ONMENT V)-.3 F -(ARIABLES)-1.35 E F4(TZPFMS_PASSPHRASE_HELPER)102 336 Q F0 .465(By def) -143 348 R .466(ault, passphrases are prompted for and read in on the st\ -andard output and input streams.)-.1 F(If)5.466 E F4 -(TZPFMS_PASSPHRASE_HELPER)143 360 Q F0 .517(is set and nonempty)3.017 F -3.017(,i)-.65 G 3.017(tw)-3.017 G .516(ill be run via)-3.017 F F4(/bin/) -3.016 E F2 2.182(sh \255c)B F0 .516(to pro-)3.016 F -(vide each passphrase, instead.)143 372 Q .188 +276 Q F0 .156(Do a no-op/dry run, can be used e)119 288 R -.15(ve)-.25 G +2.656(ni).15 G 2.656(ft)-2.656 G .156(he k)-2.656 F .456 -.15(ey i)-.1 H +2.656(sa).15 G .156(lready loaded.)-2.656 F(Equi)5.156 E -.25(va)-.25 G +.156(lent to).25 F F2 .156(zfs load-key)2.656 F F0 -.55('s)C F2 +120.666 300 Q F0(option.)2.5 E F1(ENVIR)72 324 Q 1.666(ONMENT V)-.3 F +(ARIABLES)-1.35 E F4(TZPFMS_PASSPHRASE_HELPER)102 336 Q F0 .159(By def) +143 348 R .159(ault, passphrases are prompted for and read in on the st\ +andard output and input streams.)-.1 F(If)143 360 Q F4 +(TZPFMS_PASSPHRASE_HELPER)3.356 E F0 .856(is set and nonempty)3.356 F +3.356(,i)-.65 G 3.356(tw)-3.356 G .856(ill be run via)-3.356 F F4(/bin/) +3.355 E F2 2.521(sh \255c)B F0(to pro)143 372 Q +(vide each passphrase, instead.)-.15 E .087 (The standard output stream of the helper is tied to an anon)143 390 R -.189(ymous \214le and used in its entirety as the)-.15 F(passphrase, e) +.088(ymous \214le and used in its entirety as)-.15 F(the passphrase, e) 143 402 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)155 414 Q F0 (Pre-formatted noun phrase with all the information belo)172 414 Q 1.3 @@ -588,48 +593,50 @@ andard output and input streams.)-.1 F(If)5.466 E F4 2.5(yb)-.05 G(eing prompted for)-2.5 E F4($3)155 438 Q F0("ne)172 438 Q (w" if this is for a ne)-.25 E 2.5(wp)-.25 G(assphrase, otherwise blank) -2.5 E F4($4)155 450 Q F0("ag)172 450 Q(ain" if it')-.05 E 2.5(st)-.55 G -(he second prompt for that passphrase, otherwise blank)-2.5 E .181 -(If the helper doesn')143 468 R 2.681(te)-.18 G 1.847(xist \()-2.831 F -.181(the shell e)1.666 F .181(xits with)-.15 F F1(127)2.681 E F0 -3.151 -1.666(\), a d)1.666 H .181(iagnostic is issued and the normal prompt) --1.666 F(is used as f)143 480 Q 2.5(all-back. If)-.1 F(it f)2.5 E +(he second prompt for that passphrase, otherwise blank)-2.5 E 1.109 +(If the helper doesn')143 468 R 3.609(te)-.18 G 2.775(xist \()-3.759 F +1.109(the shell e)1.666 F 1.109(xits with)-.15 F F1(127)3.609 E F0 +-2.223 1.666(\), a d)1.666 H 1.108(iagnostic is issued and the normal) +-1.666 F(prompt is used as f)143 480 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(TPM1.X back-end con\214guration)72 504 R .625 -(TPM selection)84 516 R F0(The)102 528 Q F2(tzpfms)2.767 E F0 .267 -(suite connects to a local)2.767 F F4(tcsd)2.767 E F0 .267 -(\(8\) process)B 1.666(\(a)4.433 G(t)-1.666 E F4(localhost:30003)2.767 E -F0 4.433(\)b)1.666 G 2.767(yd)-4.433 G(ef)-2.767 E 2.767(ault. Use)-.1 F -.268(the en-)2.767 F(vironment v)102 540 Q(ariable)-.25 E F4 -(TZPFMS_TPM1X)2.5 E F0(to specify a remote TCS hostname.)2.5 E .392 -(The T)102 558 R(rouSerS)-.35 E F4(tcsd)2.892 E F0 .392 -(\(8\) daemon will try)B F4(/dev/tpm0)2.892 E F0 2.892(,t)C(hen)-2.892 E -F4(/udev/tpm0)2.892 E F0 2.891(,t)C(hen)-2.891 E F4(/dev/tpm)2.891 E F0 -2.891(;b)C 2.891(yo)-2.891 G(ccup)-2.891 E(ying)-.1 E -(one of the earlier ones with, for e)102 570 Q +(TPM selection)84 516 R F0(The)102 528 Q F2(tzpfms)2.682 E F0 .182 +(suite connects to a local)2.682 F F4(tcsd)2.682 E F0 .182 +(\(8\) process)B 1.666(\(a)4.348 G(t)-1.666 E F4(localhost:30003)2.682 E +F0 4.348(\)b)1.666 G 2.683(yd)-4.348 G(ef)-2.683 E 2.683(ault. Use)-.1 F +(the)2.683 E(en)102 540 Q(vironment v)-.4 E(ariable)-.25 E F4 +(TZPFMS_TPM1X)2.5 E F0(to specify a remote TCS hostname.)2.5 E .611 +(The T)102 558 R(rouSerS)-.35 E F4(tcsd)3.111 E F0 .611 +(\(8\) daemon will try)B F4(/dev/tpm0)3.11 E F0 3.11(,t)C(hen)-3.11 E F4 +(/udev/tpm0)3.11 E F0 3.11(,t)C(hen)-3.11 E F4(/dev/tpm)3.11 E F0 3.11 +(;b)C 3.11(yo)-3.11 G(ccu-)-3.11 E -.1(py)102 570 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)84 594 R F0(The T)102 606 Q(rouSerS project page at)-.35 E F1 (https://sour)2.5 E(cef)-.18 E(or)-.25 E(ge.net/pr)-.1 E(ojects/tr)-.18 -E(ousers)-.18 E F0(.)A 5.108(The TPM 1.2 main speci\214cation inde)102 -624 R 7.609(xa)-.15 G(t)-7.609 E F1(https://trustedcomputinggr)7.609 E +E(ousers)-.18 E F0(.)A 2.719(The TPM 1.2 main speci\214cation inde)102 +624 R 5.22(xa)-.15 G(t)-5.22 E F1(https://trustedcomputinggr)5.22 E (oup.or)-.18 E(g/r)-.1 E(esour)-.18 E(ce/tpm-main-)-.18 E (speci\214cation)102 636 Q F0(.)A F1 1.666(SPECIAL THANKS)72 660 R F0 1.6 -.8(To a)102 672 T(ll who support further de).8 E -.15(ve)-.25 G -(lopment, in particular:).15 E(tzpfms 0.3.0)72 750 Q(December 20, 2021) -144.985 E(6)189.705 E 0 Cg EP +(lopment, in particular:).15 E F1<83>122 684 Q F0(ThePhD)2.5 E F1<83>122 +696 Q F0(Embark Studios)2.5 E F1<83>122 708 Q F0(Jasper Bekk)2.5 E(ers) +-.1 E(tzpfms 0.3.0-1-g)72 799.889 Q 105.605(a4cfe40 June)-.05 F +(17, 2022)2.5 E(6)201.085 E 0 Cg EP %%Page: 7 7 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(ZFS-TPM1X-LO)72 48 Q -.834(AD-KEY \(8\))-.35 F (System Manager')60.349 E 2.5(sM)-.55 G 55.349(anual ZFS-TPM1X-LO)-2.5 F --.834(AD-KEY \(8\))-.35 F/F1 10/Times-Bold@0 SF<83>122 96 Q F0(ThePhD) -2.5 E F1<83>122 108 Q F0(Embark Studios)2.5 E F1<83>122 120 Q F0 -(Jasper Bekk)2.5 E(ers)-.1 E F1(REPOR)72 144 Q 1.666(TING B)-.4 F(UGS) --.1 E(https://todo.sr)102 156 Q(.ht/~nabijaczleweli/tzpfms)-1 E/F2 10 -/Courier@0 SF(~nabijaczleweli/tzpfms@lists.sr.ht)102 174 Q F0 2.5(,a)C -(rchi)-2.5 E -.15(ve)-.25 G 2.5(da).15 G(t)-2.5 E F1(https://lists.sr) -2.5 E(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A(tzpfms 0.3.0)72 750 Q -(December 20, 2021)144.985 E(7)189.705 E 0 Cg EP +-.834(AD-KEY \(8\))-.35 F/F1 10/Times-Bold@0 SF(REPOR)72 96 Q 1.666 +(TING B)-.4 F(UGS)-.1 E(https://todo.sr)102 108 Q +(.ht/~nabijaczleweli/tzpfms)-1 E/F2 10/Courier@0 SF +(~nabijaczleweli/tzpfms@lists.sr.ht)102 126 Q F0 86.763(,a)C(rchi) +-86.763 E -.15(ve)-.25 G 86.762(da).15 G(t)-86.762 E F1 +(https://lists.sr)102 138 Q(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A +(tzpfms 0.3.0-1-g)72 799.889 Q 105.605(a4cfe40 June)-.05 F(17, 2022)2.5 +E(7)201.085 E 0 Cg EP %%Page: 8 8 %%BeginPageSetup BP @@ -645,93 +652,92 @@ BP F3(algorithm)222 156 Q 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 -2.499 1.666(]... [)-1.666 H F2.833 E F0 -(]]).833 E F3(dataset)222 168 Q F1(DESCRIPTION)72 192 Q F0 6.931 -.8 -(To n)102 204 T(ormalise).8 E F3(dataset)7.831 E F0(,)A F2 -(zfs-tpm2-change-key)7.831 E F0 5.331 -(will open its encryption root in its stead.)7.831 F F2 -(zfs-tpm2-change-key)102 216 Q F0(will)3.864 E/F4 10/Times-Italic@0 SF -(ne)3.864 E(ver)-.15 E F0 1.364(create or destro)3.864 F 3.864(ye)-.1 G -1.364(ncryption roots; use)-3.864 F/F5 10/Courier@0 SF(zfs-change-key) -3.864 E F0 1.364(\(8\) for)B(that.)102 228 Q +(]]).833 E F3(dataset)222 168 Q F1(DESCRIPTION)72 192 Q F0 5.41 -.8 +(To n)102 204 T(ormalise).8 E F3(dataset)6.31 E F0(,)A F2 +(zfs-tpm2-change-key)6.31 E F0 3.811 +(will open its encryption root in its stead.)6.31 F F2 +(zfs-tpm2-change-key)102 216 Q F0(will)3.731 E/F4 10/Times-Italic@0 SF +(ne)3.731 E(ver)-.15 E F0 1.231(create or destro)3.731 F 3.73(ye)-.1 G +1.23(ncryption roots; use)-3.73 F/F5 10/Courier@0 SF(zfs-change-key)3.73 +E F0(\(8\))A(for that.)102 228 Q (First, a connection is made to the TPM, which)102 246 Q F4(must)2.5 E -F0(be TPM-2.0-compatible.)2.5 E(If)102 264 Q F3(dataset)3.42 E F0 -.1 -(wa)3.42 G 3.42(sp).1 G(re)-3.42 E .92(viously encrypted with)-.25 F F2 -(tzpfms)3.42 E F0 .92(and the)3.42 F F1(TPM2)3.42 E F0 .92(back-end w) -3.42 F .92(as used, the pre)-.1 F .92(vious k)-.25 F -.15(ey)-.1 G .382 -(will be freed from the TPM.)102 276 R .382 -(Otherwise, or in case of an error)5.382 F 2.882(,d)-.4 G .382 -(ata required for manual interv)-2.882 F .383(ention will be)-.15 F -(printed to the standard error stream.)102 288 Q(Ne)102 306 Q .197 -(xt, a ne)-.15 F 2.697(ww)-.25 G .197(rapping k)-2.697 F .497 -.15(ey i) --.1 H 2.697(sg).15 G .197(enerated on the TPM, optionally back)-2.697 F -.197(ed up)-.1 F 1.666(\(s)4.363 G(ee)-1.666 E F1(OPTIONS)2.697 E F0 --3.135 1.666(\), a)1.666 H .197(nd sealed to a)-1.666 F .504 -(persistent object on the TPM under the o)102 318 R .504(wner hierarch) --.25 F .504(y; if there is a passphrase set on the o)-.05 F .504 -(wner hierarch)-.25 F -.65(y,)-.05 G .041 -(the user is prompted for it; the user is al)102 330 R -.1(wa)-.1 G .04 -(ys prompted for an optional passphrase to protect the sealed object).1 -F(with.)102 342 Q(The follo)102 360 Q(wing properties are set on)-.25 E -F3(dataset)2.5 E F0(:)A F1<83>122 372 Q F5 -(xyz.nabijaczleweli:tzpfms.backend)7.5 E F0(=)A F1(TPM2)A<83>122 384 Q -F5(xyz.nabijaczleweli:tzpfms.key)7.5 E F0(=)A F3(persistent-object-ID)A -F0([).833 E F2(;).833 E F3(algorithm)133 396 Q 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(]) --.833 E F5(tzpfms.backend)102 414 Q F0 3.203 -(identi\214es this dataset for w)5.703 F 3.203(ork with)-.1 F F1(TPM2) -5.703 E F0(-back-ended)A F2(tzpfms)5.703 E F0 4.868(tools \()5.702 F -(namely)1.666 E F5(zfs-tpm2-change-key)102 426 Q F0(\(8\),)A F5 +F0(be TPM-2.0-compatible.)2.5 E(If)102 264 Q F3(dataset)3.483 E F0 -.1 +(wa)3.483 G 3.483(sp).1 G(re)-3.483 E .983(viously encrypted with)-.25 F +F2(tzpfms)3.483 E F0 .983(and the)3.483 F F1(TPM2)3.483 E F0 .983 +(back-end w)3.483 F .984(as used, the pre)-.1 F(vious)-.25 E -.1(ke)102 +276 S 2.714(yw)-.05 G .214(ill be freed from the TPM.)-2.714 F .214 +(Otherwise, or in case of an error)5.214 F 2.713(,d)-.4 G .213 +(ata required for manual interv)-2.713 F(ention)-.15 E +(will be printed to the standard error stream.)102 288 Q(Ne)102 306 Q +.252(xt, a ne)-.15 F 2.752(ww)-.25 G .252(rapping k)-2.752 F .552 -.15 +(ey i)-.1 H 2.752(sg).15 G .253(enerated on the TPM, optionally back) +-2.752 F .253(ed up)-.1 F 1.666(\(s)4.419 G(ee)-1.666 E F1(OPTIONS)2.753 +E F0 -3.079 1.666(\), a)1.666 H .253(nd sealed)-1.666 F .179 +(to a persistent object on the TPM under the o)102 318 R .179 +(wner hierarch)-.25 F .179(y; if there is a passphrase set on the o)-.05 +F .178(wner hi-)-.25 F(erarch)102 330 Q 1.533 -.65(y, t)-.05 H .233 +(he user is prompted for it; the user is al).65 F -.1(wa)-.1 G .233 +(ys prompted for an optional passphrase to protect the).1 F +(sealed object with.)102 342 Q(The follo)102 360 Q +(wing properties are set on)-.25 E F3(dataset)2.5 E F0(:)A F1<83>122 372 +Q F5(xyz.nabijaczleweli:tzpfms.backend)7.5 E F0(=)A F1(TPM2)A<83>122 384 +Q F5(xyz.nabijaczleweli:tzpfms.key)7.5 E F0(=)A F3(persistent-object-ID) +A F0([).833 E F2(;).833 E F3(algorithm)133 396 Q 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(]) +-.833 E F5(tzpfms.backend)102 414 Q F0 1.53 +(identi\214es this dataset for w)4.03 F 1.53(ork with)-.1 F F1(TPM2)4.03 +E F0(-back-ended)A F2(tzpfms)4.031 E F0 3.197(tools \()4.031 F(namely) +1.666 E F5(zfs-tpm2-change-key)102 426 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 --.834(\(8\) \) .)B F5(tzpfms.key)102 444 Q F0 .414(is an inte)2.914 F -.414(ger representing the sealed object, optionally follo)-.15 F .414 -(wed by a semicolon and PCR list)-.25 F 1.298(as speci\214ed with)102 -456 R F25.464 E F0 3.798(,n)C 1.298(ormalised to be)-3.798 F F2 -(tpm-tools)3.797 E F0 1.297 -(-toolchain-compatible; if needed, it can be passed to)B F2 11.056 -(tpm2_unseal \255c)102 468 R F5(${tzpfms.key)15.39 E F2(%%)A F5(;)A/F6 -10/Symbol SF(*)A F5(})A F0(with)11.89 E F213.556 E F0(")15.39 E F5 -(str:${passphrase})A F0 11.891("o)C(r)-11.891 E F213.557 E F0(") -102 480 Q F5(pcr:${tzpfms.key)A F2(#)A F6(*)A F5(;})A F0 1.177 -(", as the case may be, or equi)B -.25(va)-.25 G 1.177 -(lent, for back-up).25 F 1.666(\(s)5.342 G(ee)-1.666 E F1(OPTIONS)3.676 -E F0 .344 1.666(\). I)1.666 H 3.676(fy)-1.666 G(ou)-3.676 E(ha)102 492 Q -.633 -.15(ve a s)-.2 H .333(ealed k).15 F .633 -.15(ey y)-.1 H .333 -(ou can access with that or equi).15 F -.25(va)-.25 G .334 -(lent tool and set both of these properties, it will funxion).25 F -(seamlessly)102 504 Q(.)-.65 E(Finally)102 522 Q 4.141(,t)-.65 G 1.641 -(he equi)-4.141 F -.25(va)-.25 G 1.641(lent of).25 F F2 1.641 -(zfs change-key)4.141 F9.307 E F5(keylocation=prompt)7.641 E F2 -9.307 E F5(keyformat=raw)7.64 E F3(dataset)102 534 Q F0 .336 -(is performed with the ne)2.836 F 2.836(wk)-.25 G -.15(ey)-2.936 G 5.336 -(.I)-.5 G 2.836(fa)-5.336 G 2.836(ne)-2.836 G .336 -(rror occurred, best ef)-2.836 F .337 -(fort is made to clean up the persistent)-.25 F -(object and properties, or to issue a note for manual interv)102 546 Q -(ention into the standard error stream.)-.15 E 2.92<418c>102 564 S .42 -(nal v)-2.92 F .42(eri\214cation should be made by running)-.15 F F2 -2.085(zfs-tpm2-load-key \255n)2.919 F F3(dataset)6.419 E F0 5.419(.I)C -2.919(ft)-5.419 G .419(hat command)-2.919 F 3.503 -(succeeds, all is well, b)102 576 R 3.503(ut otherwise the dataset can \ -be manually rolled back to a passphrase with)-.2 F F2 -(zfs-tpm2-clear-key)102 588 Q F3(dataset)13.479 E F0 1.666(\(o)11.645 G -8.278 -.4(r, i)-1.666 H 9.978(ft).4 G 7.478(hat f)-9.978 F 7.478 -(ails to w)-.1 F(ork,)-.1 E F2 7.478(zfs change-key)9.978 F15.144 -E F5(keyformat=passphrase)102 600 Q F3(dataset)6 E F0 -3.332 1.666 -(\), a)1.666 H(nd you are hereby ask)-1.666 E(ed to report a b)-.1 E -(ug, please.)-.2 E F2(zfs-tpm2-clear-key)102 618 Q F3(dataset)6.423 E F0 -.423 -(can be used to free the TPM persistent object and go back to using a) -2.923 F(passphrase.)102 630 Q F1(OPTIONS)72 654 Q F2103.666 666 Q -F3(backup-file)6 E F0(Sa)191 678 Q .806 -.15(ve a b)-.2 H .506 -(ack-up of the k).15 F .805 -.15(ey t)-.1 H(o).15 E F3(backup-file)3.005 -E F0 3.005(,w)C .505(hich must not e)-3.005 F .505(xist beforehand.)-.15 -F(This)5.505 E(back-up)191 690 Q F4(must)3.181 E F0 .681 -(be stored securely)3.181 F 3.181(,o)-.65 G -.25(ff)-3.181 G 3.181 -(-site. In).25 F .682(case of a catastrophic e)3.181 F -.15(ve)-.25 G -.682(nt, the k).15 F .982 -.15(ey c)-.1 H(an).15 E(be loaded by running) -191 702 Q(tzpfms 0.3.0)72 750 Q(December 20, 2021)144.985 E(8)189.705 E -0 Cg EP +-.834(\(8\) \) .)B F5(tzpfms.key)102 444 Q F0 .301(is an inte)2.802 F +.301(ger representing the sealed object, optionally follo)-.15 F .301 +(wed by a semicolon and PCR)-.25 F 2.011(list as speci\214ed with)102 +456 R F26.177 E F0 4.511(,n)C 2.011(ormalised to be)-4.511 F F2 +(tpm-tools)4.512 E F0 2.012(-toolchain-compatible; if needed, it can be) +B 1.063(passed to)102 468 R F2 2.729(tpm2_unseal \255c)3.563 F F5 +(${tzpfms.key)7.063 E F2(%%)A F5(;)A/F6 10/Symbol SF(*)A F5(})A F0(with) +3.563 E F25.229 E F0(")7.063 E F5(str:${passphrase})A F0 3.563("o) +C(r)-3.563 E F25.229 E F0(")102 480 Q F5(pcr:${tzpfms.key)A F2(#)A +F6(*)A F5(;})A F0 1.339(", as the case may be, or equi)B -.25(va)-.25 G +1.339(lent, for back-up).25 F 1.666(\(s)5.506 G(ee)-1.666 E F1(OPTIONS) +3.84 E F0 .508 1.666(\). I)1.666 H(f)-1.666 E .303(you ha)102 492 R .603 +-.15(ve a s)-.2 H .303(ealed k).15 F .603 -.15(ey y)-.1 H .303 +(ou can access with that or equi).15 F -.25(va)-.25 G .302 +(lent tool and set both of these properties, it will).25 F +(funxion seamlessly)102 504 Q(.)-.65 E(Finally)102 522 Q 12.755(,t)-.65 +G 10.255(he equi)-12.755 F -.25(va)-.25 G 10.255(lent of).25 F F2 10.255 +(zfs change-key)12.755 F17.922 E F5(keylocation=prompt)16.256 E F2 +17.922 E F5(keyformat=raw)102 534 Q F3(dataset)6.507 E F0 .507 +(is performed with the ne)3.007 F 3.006(wk)-.25 G -.15(ey)-3.106 G 5.506 +(.I)-.5 G 3.006(fa)-5.506 G 3.006(ne)-3.006 G .506 +(rror occurred, best ef)-3.006 F .506(fort is made)-.25 F .622(to clean\ + up the persistent object and properties, or to issue a note for manual\ + interv)102 546 R .623(ention into the stan-)-.15 F(dard error stream.) +102 558 Q 3.087<418c>102 576 S .586(nal v)-3.087 F .586 +(eri\214cation should be made by running)-.15 F F2 2.252 +(zfs-tpm2-load-key \255n)3.086 F F3(dataset)6.586 E F0 5.586(.I)C 3.086 +(ft)-5.586 G .586(hat com-)-3.086 F .859(mand succeeds, all is well, b) +102 588 R .859(ut otherwise the dataset can be manually rolled back to \ +a passphrase with)-.2 F F2(zfs-tpm2-clear-key)102 600 Q F3(dataset) +11.806 E F0 1.666(\(o)9.972 G 6.606 -.4(r, i)-1.666 H 8.306(ft).4 G +5.806(hat f)-8.306 F 5.806(ails to w)-.1 F(ork,)-.1 E F2 5.805 +(zfs change-key)8.305 F13.471 E F5(keyformat=passphrase)102 612 Q +F3(dataset)6 E F0 -3.332 1.666(\), a)1.666 H(nd you are hereby ask) +-1.666 E(ed to report a b)-.1 E(ug, please.)-.2 E F2(zfs-tpm2-clear-key) +102 630 Q F3(dataset)6.429 E F0 .429 +(can be used to free the TPM persistent object and go back to us-)2.929 +F(ing a passphrase.)102 642 Q F1(OPTIONS)72 666 Q F2103.666 678 Q +F3(backup-file)6 E F0(Sa)191 690 Q 1.353 -.15(ve a b)-.2 H 1.052 +(ack-up of the k).15 F 1.352 -.15(ey t)-.1 H(o).15 E F3(backup-file) +3.552 E F0 3.552(,w)C 1.052(hich must not e)-3.552 F 1.052 +(xist beforehand.)-.15 F .431(This back-up)191 702 R F4(must)2.931 E F0 +.431(be stored securely)2.931 F 2.931(,o)-.65 G -.25(ff)-2.931 G 2.931 +(-site. In).25 F .431(case of a catastrophic e)2.931 F -.15(ve)-.25 G +.432(nt, the).15 F -.1(ke)191 714 S 2.5(yc)-.05 G +(an be loaded by running)-2.5 E F2(zfs load-key)221 726 Q F3(dataset)6 E +F5(<)6 E F3(backup-file)6 E F0(tzpfms 0.3.0-1-g)72 799.889 Q 105.605 +(a4cfe40 June)-.05 F(17, 2022)2.5 E(8)201.085 E 0 Cg EP %%Page: 9 9 %%BeginPageSetup BP @@ -739,84 +745,90 @@ BP /F0 10/Times-Roman@0 SF -.834(ZFS-TPM2-CHANGE-KEY \(8\))72 48 R (System Manager')53.329 E 2.5(sM)-.55 G 48.329 (anual ZFS-TPM2-CHANGE-KEY)-2.5 F(\(8\))1.666 E/F1 10/Courier-Bold@0 SF -(zfs load-key)221 96 Q/F2 10/Courier-Oblique@0 SF(dataset)6 E/F3 10 -/Courier@0 SF(<)6 E F2(backup-file)6 E F1103.666 114 Q F2 -(algorithm)6 E F1(:)A F2(PCR)A F0([)A F1(,)A F2(PCR)A F0 1.666(]...)C([) --1.666 E F1(+)A F2(algorithm)A F1(:)A F2(PCR)A F0([)A F1(,)A F2(PCR)A F0 -1.666(]...)C 1.666(]...)-1.666 G .851(Bind the k)191 126 R 1.151 -.15 -(ey t)-.1 H 3.351(os).15 G .851(pace- or comma-separated)-3.351 F F2 -(PCR)3.351 E F0 3.351(sw)C .851(ithin their corresponding hashing)-3.351 -F F2(algorithm)191 138 Q F0 4.119<8a69>4.119 G 4.119(ft)-4.119 G(he) --4.119 E 4.119(yc)-.15 G 1.619(hange, the wrapping k)-4.119 F 1.919 -.15 -(ey w)-.1 H 1.62(ill not be able to be unsealed.).15 F(There are)191 150 -Q/F4 10/Times-Bold@0 SF(24)2.5 E F0(PCRs, numbered)2.5 E F4(0)2.5 E F0 -(..)A F4(23)A F0(.)A F2(algorithm)191 168 Q F0 1.096(may be an)3.596 F -3.596(yo)-.15 G 3.596(fc)-3.596 G(ase-insensiti)-3.596 E 1.395 -.15 -(ve ")-.25 H F4(sha1).15 E F0 1.095(", ")B F4(sha256)A F0 1.095(", ")B -F4(sha384)A F0 1.095(", ")B F4(sha512)A F0(",)A(")191 180 Q F4(sm3_256)A -F0 9.062(", ")B F4(sm3-256)A F0 9.062(", ")B F4(sha3_256)A F0 9.062 -(", ")B F4(sha3-256)A F0 9.062(", ")B F4(sha3_384)A F0 9.062(", ")B F4 -(sha3-384)A F0(",)A(")191 192 Q F4(sha3_512)A F0(", or ")A F4(sha3-512)A -F0(", and must be supported by the TPM.)A F1103.666 210 Q F0 -.4 -(Wi)191 210 S(th).4 E F16.798 E F0 5.132(,a)C 2.632 -(lso prompt for a passphrase.)-5.132 F 2.632(This is skipped by def) -7.632 F 2.631(ault because the)-.1 F .833(passphrase is)191 222 R/F5 10 -/Times-Italic@0 SF(OR)3.333 E F0 .833(ed with the PCR polic)B 3.334 -(y\212t)-.15 G .834(he wrapping k)-3.334 F 1.134 -.15(ey c)-.1 H .834 -(an be unsealed).15 F F5(either)3.334 E F0 .703 -(passphraseless with the right PCRs)191 234 R F5(or)3.203 E F0 .703 -(with the passphrase, and this is usually not the)3.203 F(intent.)191 -246 Q F4(ENVIR)72 270 Q 1.666(ONMENT V)-.3 F(ARIABLES)-1.35 E F3 -(TZPFMS_PASSPHRASE_HELPER)102 282 Q F0 .465(By def)143 294 R .466(ault,\ - passphrases are prompted for and read in on the standard output and in\ -put streams.)-.1 F(If)5.466 E F3(TZPFMS_PASSPHRASE_HELPER)143 306 Q F0 -.517(is set and nonempty)3.017 F 3.017(,i)-.65 G 3.017(tw)-3.017 G .516 -(ill be run via)-3.017 F F3(/bin/)3.016 E F1 2.182(sh \255c)B F0 .516 -(to pro-)3.016 F(vide each passphrase, instead.)143 318 Q .188 -(The standard output stream of the helper is tied to an anon)143 336 R -.189(ymous \214le and used in its entirety as the)-.15 F(passphrase, e) -143 348 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 F3($1)155 360 Q F0 -(Pre-formatted noun phrase with all the information belo)172 360 Q 1.3 --.65(w, f)-.25 H(or use as a prompt).65 E F3($2)155 372 Q F0 -(Either the dataset name or the element of the TPM hierarch)172 372 Q -2.5(yb)-.05 G(eing prompted for)-2.5 E F3($3)155 384 Q F0("ne)172 384 Q +103.666 96 Q/F2 10/Courier-Oblique@0 SF(algorithm)6 E F1(:)A F2 +(PCR)A F0([)A F1(,)A F2(PCR)A F0 1.666(]...)C([)-1.666 E F1(+)A F2 +(algorithm)A F1(:)A F2(PCR)A F0([)A F1(,)A F2(PCR)A F0 1.666(]...)C +1.666(]...)-1.666 G .19(Bind the k)191 108 R .49 -.15(ey t)-.1 H 2.69 +(os).15 G .19(pace- or comma-separated)-2.69 F F2(PCR)2.689 E F0 2.689 +(sw)C .189(ithin their corresponding hash-)-2.689 F(ing)191 120 Q F2 +(algorithm)3.488 E F0 3.488<8a69>3.488 G 3.488(ft)-3.488 G(he)-3.488 E +3.488(yc)-.15 G .988(hange, the wrapping k)-3.488 F 1.288 -.15(ey w)-.1 +H .989(ill not be able to be un-).15 F 2.5(sealed. There)191 132 R(are) +2.5 E/F3 10/Times-Bold@0 SF(24)2.5 E F0(PCRs, numbered)2.5 E F3(0)2.5 E +F0(..)A F3(23)A F0(.)A F2(algorithm)191 150 Q F0 4.468(may be an)6.969 F +6.968(yo)-.15 G 6.968(fc)-6.968 G(ase-insensiti)-6.968 E 4.768 -.15 +(ve ")-.25 H F3(sha1).15 E F0 4.468(", ")B F3(sha256)A F0 4.468(", ")B +F3(sha384)A F0(",)A(")191 162 Q F3(sha512)A F0 7.383(", ")B F3(sm3_256)A +F0 7.383(", ")B F3(sm3-256)A F0 7.383(", ")B F3(sha3_256)A F0 7.383 +(", ")B F3(sha3-256)A F0 7.383(", ")B F3(sha3_384)A F0(",)A(")191 174 Q +F3(sha3-384)A F0(", ")A F3(sha3_512)A F0(", or ")A F3(sha3-512)A F0 +(", and must be supported by the TPM.)A F1103.666 192 Q F0 -.4(Wi) +191 192 S(th).4 E F15.512 E F0 3.846(,a)C 1.346 +(lso prompt for a passphrase.)-3.846 F 1.345(This is skipped by def) +6.345 F 1.345(ault because the)-.1 F 1.598(passphrase is)191 204 R/F4 10 +/Times-Italic@0 SF(OR)4.098 E F0 1.598(ed with the PCR polic)B 4.098 +(y\212t)-.15 G 1.598(he wrapping k)-4.098 F 1.898 -.15(ey c)-.1 H 1.598 +(an be unsealed).15 F F4(either)191 216 Q F0 .689 +(passphraseless with the right PCRs)3.189 F F4(or)3.189 E F0 .689 +(with the passphrase, and this is usu-)3.189 F(ally not the intent.)191 +228 Q F3(ENVIR)72 252 Q 1.666(ONMENT V)-.3 F(ARIABLES)-1.35 E/F5 10 +/Courier@0 SF(TZPFMS_PASSPHRASE_HELPER)102 264 Q F0 .159(By def)143 276 +R .159(ault, passphrases are prompted for and read in on the standard o\ +utput and input streams.)-.1 F(If)143 288 Q F5(TZPFMS_PASSPHRASE_HELPER) +3.356 E F0 .856(is set and nonempty)3.356 F 3.356(,i)-.65 G 3.356(tw) +-3.356 G .856(ill be run via)-3.356 F F5(/bin/)3.355 E F1 2.521 +(sh \255c)B F0(to pro)143 300 Q(vide each passphrase, instead.)-.15 E +.087(The standard output stream of the helper is tied to an anon)143 318 +R .088(ymous \214le and used in its entirety as)-.15 F +(the passphrase, e)143 330 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)155 342 Q F0 +(Pre-formatted noun phrase with all the information belo)172 342 Q 1.3 +-.65(w, f)-.25 H(or use as a prompt).65 E F5($2)155 354 Q F0 +(Either the dataset name or the element of the TPM hierarch)172 354 Q +2.5(yb)-.05 G(eing prompted for)-2.5 E F5($3)155 366 Q F0("ne)172 366 Q (w" if this is for a ne)-.25 E 2.5(wp)-.25 G(assphrase, otherwise blank) --2.5 E F3($4)155 396 Q F0("ag)172 396 Q(ain" if it')-.05 E 2.5(st)-.55 G -(he second prompt for that passphrase, otherwise blank)-2.5 E .181 -(If the helper doesn')143 414 R 2.681(te)-.18 G 1.847(xist \()-2.831 F -.181(the shell e)1.666 F .181(xits with)-.15 F F4(127)2.681 E F0 -3.151 -1.666(\), a d)1.666 H .181(iagnostic is issued and the normal prompt) --1.666 F(is used as f)143 426 Q 2.5(all-back. If)-.1 F(it f)2.5 E +-2.5 E F5($4)155 378 Q F0("ag)172 378 Q(ain" if it')-.05 E 2.5(st)-.55 G +(he second prompt for that passphrase, otherwise blank)-2.5 E 1.109 +(If the helper doesn')143 396 R 3.609(te)-.18 G 2.775(xist \()-3.759 F +1.109(the shell e)1.666 F 1.109(xits with)-.15 F F3(127)3.609 E F0 +-2.223 1.666(\), a d)1.666 H 1.108(iagnostic is issued and the normal) +-1.666 F(prompt is used as f)143 408 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 F4 1.666(TPM2 back-end con\214guration)72 450 R(En)84 462 Q(vir) --.4 E .625(onment v)-.18 F(ariables)-.1 E F3(TSS2_LOG)102 474 Q F0(An) -155 474 Q 2.5(yo)-.15 G(f:)-2.5 E F4(NONE)2.5 E F0(,)A F4(ERR)2.5 E(OR) --.3 E F0(,)A F4 -1.2(WA)2.5 G(RNING)1.2 E F0(,)A F4(INFO)2.5 E F0(,)A F4 -(DEB)2.5 E(UG)-.1 E F0(,)A F4(TRA)2.5 E(CE)-.55 E F0 5(.D)C(ef)-5 E -(ault:)-.1 E F4 -1.2(WA)2.5 G(RNING)1.2 E F0(.)A F4 .625(TPM selection) -84 498 R F0 .516(The library)102 510 R F1(libtss2-tcti-default.so)3.016 -E F0 .516(can be link)3.016 F .516(ed to an)-.1 F 3.017(yo)-.15 G 3.017 -(ft)-3.017 G(he)-3.017 E F3(libtss2-tcti-)3.017 E/F6 10/Symbol SF(*)A F3 -(.so)A F0(libraries)3.017 E .576(to select the def)102 522 R .576 -(ault, otherwise)-.1 F F3(/dev/tpmrm0)3.076 E F0 3.076(,t)C(hen)-3.076 E -F3(/dev/tpm0)3.076 E F0 3.076(,t)C(hen)-3.076 E F3(localhost:2321)3.076 -E F0 .575(will be tried,)3.076 F(in order)102 534 Q 1.666(\(s)4.166 G -(ee)-1.666 E F3(ESYS_CONTEXT)2.5 E F0 -.834(\(3\) \) .)B F4 .625 -(See also)84 558 R F0 3.487(The tpm2-tss git repository at)102 570 R F4 -(https://github)5.988 E(.com/tpm2-softwar)-.4 E(e/tpm2-tss)-.18 E F0 -3.488(and the documentation at)5.988 F F4(https://tpm2-tss.r)102 582 Q -(eadthedocs.io)-.18 E F0(.)A 6.305 -(The TPM 2.0 speci\214cations, mainly at)102 600 R F4 -(https://trustedcomputinggr)8.805 E(oup.or)-.18 E(g/r)-.1 E(esour)-.18 E -(ce/tpm-library-)-.18 E(speci\214cation/)102 612 Q F0(,)A F4 -(https://trustedcomputinggr)116.04 E(oup.or)-.18 E -(g/wp-content/uploads/TPM-)-.1 E(Re)102 624 Q(v-2.0-P)-.15 E(art-1-Ar) +-2.5 E F3 1.666(TPM2 back-end con\214guration)72 432 R(En)84 444 Q(vir) +-.4 E .625(onment v)-.18 F(ariables)-.1 E F5(TSS2_LOG)102 456 Q F0(An) +155 456 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) +84 480 R F0 1.166(The library)102 492 R F1(libtss2-tcti-default.so)3.666 +E F0 1.167(can be link)3.667 F 1.167(ed to an)-.1 F 3.667(yo)-.15 G +3.667(ft)-3.667 G(he)-3.667 E F5(libtss2-tcti-)3.667 E/F6 10/Symbol SF +(*)A F5(.so)A F0(li-)3.667 E 1.381(braries to select the def)102 504 R +1.381(ault, otherwise)-.1 F F5(/dev/tpmrm0)3.88 E F0 3.88(,t)C(hen)-3.88 +E F5(/dev/tpm0)3.88 E F0 3.88(,t)C(hen)-3.88 E F5(localhost:2321)3.88 E +F0(will be tried, in order)102 516 Q 1.666(\(s)4.166 G(ee)-1.666 E F5 +(ESYS_CONTEXT)2.5 E F0 -.834(\(3\) \) .)B F3 .625(See also)84 540 R F0 +1.629(The tpm2-tss git repository at)102 552 R F3(https://github)4.129 E +(.com/tpm2-softwar)-.4 E(e/tpm2-tss)-.18 E F0 1.63 +(and the documentation at)4.13 F F3(https://tpm2-tss.r)102 564 Q +(eadthedocs.io)-.18 E F0(.)A 3.518 +(The TPM 2.0 speci\214cations, mainly at)102 582 R F3 +(https://trustedcomputinggr)6.017 E(oup.or)-.18 E(g/r)-.1 E(esour)-.18 E +(ce/tpm-library-)-.18 E(speci\214cation/)102 594 Q F0(,)A F3 +(https://trustedcomputinggr)99.315 E(oup.or)-.18 E +(g/wp-content/uploads/TPM-)-.1 E(Re)102 606 Q(v-2.0-P)-.15 E(art-1-Ar) -.1 E(chitectur)-.18 E(e-01.38.pdf)-.18 E F0 2.5(,a)C(nd related pages.) --2.5 E F4 1.666(SPECIAL THANKS)72 648 R F0 1.6 -.8(To a)102 660 T +-2.5 E F3 1.666(SPECIAL THANKS)72 630 R F0 1.6 -.8(To a)102 642 T (ll who support further de).8 E -.15(ve)-.25 G(lopment, in particular:) -.15 E F4<83>122 672 Q F0(ThePhD)2.5 E(tzpfms 0.3.0)72 750 Q -(December 20, 2021)144.985 E(9)189.705 E 0 Cg EP +.15 E F3<83>122 654 Q F0(ThePhD)2.5 E F3<83>122 666 Q F0(Embark Studios) +2.5 E F3<83>122 678 Q F0(Jasper Bekk)2.5 E(ers)-.1 E F3(REPOR)72 702 Q +1.666(TING B)-.4 F(UGS)-.1 E(https://todo.sr)102 714 Q +(.ht/~nabijaczleweli/tzpfms)-1 E F5(~nabijaczleweli/tzpfms@lists.sr.ht) +102 732 Q F0 86.763(,a)C(rchi)-86.763 E -.15(ve)-.25 G 86.762(da).15 G +(t)-86.762 E F3(https://lists.sr)102 744 Q(.ht/~nabijaczleweli/tzpfms)-1 +E F0(.)A(tzpfms 0.3.0-1-g)72 799.889 Q 105.605(a4cfe40 June)-.05 F +(17, 2022)2.5 E(9)201.085 E 0 Cg EP %%Page: 10 10 %%BeginPageSetup BP @@ -824,20 +836,16 @@ BP /F0 10/Times-Roman@0 SF -.834(ZFS-TPM2-CHANGE-KEY \(8\))72 48 R (System Manager')53.329 E 2.5(sM)-.55 G 48.329 (anual ZFS-TPM2-CHANGE-KEY)-2.5 F(\(8\))1.666 E/F1 10/Times-Bold@0 SF -<83>122 96 Q F0(Embark Studios)2.5 E F1<83>122 108 Q F0(Jasper Bekk)2.5 -E(ers)-.1 E F1(REPOR)72 132 Q 1.666(TING B)-.4 F(UGS)-.1 E -(https://todo.sr)102 144 Q(.ht/~nabijaczleweli/tzpfms)-1 E/F2 10 -/Courier@0 SF(~nabijaczleweli/tzpfms@lists.sr.ht)102 162 Q F0 2.5(,a)C -(rchi)-2.5 E -.15(ve)-.25 G 2.5(da).15 G(t)-2.5 E F1(https://lists.sr) -2.5 E(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A F1 1.666(SEE ALSO)72 186 R -F2(tpm2_unseal)102 198 Q F0(\(1\))A(PCR allocations:)102 216 Q F1 -(https://wiki.ar)2.5 E(chlinux.or)-.18 E(g/title/T)-.1 E(rusted_Platf) --.74 E(orm_Module#Accessing_PCR_r)-.25 E(egisters)-.18 E F0(and)102 228 -Q F1(https://trustedcomputinggr)2.5 E(oup.or)-.18 E -(g/wp-content/uploads/PC-)-.1 E(ClientSpeci\214c_Platf)102 240 Q(orm_Pr) +1.666(SEE ALSO)72 96 R/F2 10/Courier@0 SF(tpm2_unseal)102 108 Q F0 +(\(1\))A(PCR allocations:)102 126 Q F1(https://wiki.ar)102 138 Q +(chlinux.or)-.18 E(g/title/T)-.1 E(rusted_Platf)-.74 E +(orm_Module#Accessing_PCR_r)-.25 E(egisters)-.18 E F0(and)2.5 E F1 +(https://trustedcomputinggr)102 150 Q(oup.or)-.18 E +(g/wp-content/uploads/PC-)-.1 E(ClientSpeci\214c_Platf)102 162 Q(orm_Pr) -.25 E(o\214le_f)-.18 E(or_TPM_2p0_Systems_v51.pdf)-.25 E F0 2.5(,S)C -(ection 2.3.4 "PCR Usage", T)-2.5 E(able 1.)-.8 E(tzpfms 0.3.0)72 750 Q -(December 20, 2021)144.985 E(10)184.705 E 0 Cg EP +(ection 2.3.4 "PCR Usage", T)-2.5 E(able)-.8 E(1.)102 174 Q +(tzpfms 0.3.0-1-g)72 799.889 Q 105.605(a4cfe40 June)-.05 F(17, 2022)2.5 +E(10)196.085 E 0 Cg EP %%Page: 11 11 %%BeginPageSetup BP @@ -851,81 +859,83 @@ BP 132 Q F2(zfs-tpm2-clear-key)102 144 Q/F3 10/Courier-Oblique@0 SF (dataset)2.5 E F1(DESCRIPTION)72 168 Q F0(After v)102 180 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 6.985 -(1. performs the equi)122 192 R -.25(va)-.25 G 6.984(lent of).25 F F2 -6.984(zfs change-key)9.484 F14.65 E/F4 10/Courier@0 SF -(keylocation=prompt)12.984 E F214.65 E F4(keyformat=passphrase)127 -204 Q F3(dataset)6 E F0(,)A(2. frees the sealed k)122 216 Q .3 -.15 +F2(tzpfms)2.5 E F0(back)2.5 E(end)-.1 E F1(TPM2)2.5 E F0(:)A 5.126 +(1. performs the equi)122 192 R -.25(va)-.25 G 5.126(lent of).25 F F2 +5.126(zfs change-key)7.626 F12.792 E/F4 10/Courier@0 SF +(keylocation=prompt)11.126 E F212.792 E F4(keyformat=passphrase) +127 204 Q F3(dataset)6 E F0(,)A(2. frees the sealed k)122 216 Q .3 -.15 (ey p)-.1 H(re).15 E(viously used to encrypt)-.25 E F3(dataset)2.5 E F0 -(,)A(3. remo)122 228 Q -.15(ve)-.15 G 2.5(st).15 G(he)-2.5 E F4 -(xyz.nabijaczleweli:tzpfms.)2.5 E F0({)A F4(backend)A F0(,)A F4(key)6 E -F0 2.5(}p)C(roperties from)-2.5 E F3(dataset)2.5 E F0(.)A(See)102 246 Q -F4(zfs-tpm2-change-key)2.5 E F0(\(8\) for a detailed description.)A F1 -(ENVIR)72 270 Q 1.666(ONMENT V)-.3 F(ARIABLES)-1.35 E F4 -(TZPFMS_PASSPHRASE_HELPER)102 282 Q F0 .465(By def)143 294 R .466(ault,\ - passphrases are prompted for and read in on the standard output and in\ -put streams.)-.1 F(If)5.466 E F4(TZPFMS_PASSPHRASE_HELPER)143 306 Q F0 -.517(is set and nonempty)3.017 F 3.017(,i)-.65 G 3.017(tw)-3.017 G .516 -(ill be run via)-3.017 F F4(/bin/)3.016 E F2 2.182(sh \255c)B F0 .516 -(to pro-)3.016 F(vide each passphrase, instead.)143 318 Q .188 -(The standard output stream of the helper is tied to an anon)143 336 R -.189(ymous \214le and used in its entirety as the)-.15 F(passphrase, e) -143 348 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)155 360 Q F0 -(Pre-formatted noun phrase with all the information belo)172 360 Q 1.3 --.65(w, f)-.25 H(or use as a prompt).65 E F4($2)155 372 Q F0 -(Either the dataset name or the element of the TPM hierarch)172 372 Q -2.5(yb)-.05 G(eing prompted for)-2.5 E F4($3)155 384 Q F0("ne)172 384 Q +(,)A 6.991(3. remo)122 228 R -.15(ve)-.15 G 9.491(st).15 G(he)-9.491 E +F4(xyz.nabijaczleweli:tzpfms.)9.491 E F0({)A F4(backend)A F0(,)A F4(key) +12.991 E F0 9.491(}p)C 6.99(roperties from)-9.491 F F3(dataset)127 240 Q +F0(.)A(See)102 258 Q F4(zfs-tpm2-change-key)2.5 E F0 +(\(8\) for a detailed description.)A F1(ENVIR)72 282 Q 1.666(ONMENT V) +-.3 F(ARIABLES)-1.35 E F4(TZPFMS_PASSPHRASE_HELPER)102 294 Q F0 .159 +(By def)143 306 R .159(ault, passphrases are prompted for and read in o\ +n the standard output and input streams.)-.1 F(If)143 318 Q F4 +(TZPFMS_PASSPHRASE_HELPER)3.356 E F0 .856(is set and nonempty)3.356 F +3.356(,i)-.65 G 3.356(tw)-3.356 G .856(ill be run via)-3.356 F F4(/bin/) +3.355 E F2 2.521(sh \255c)B F0(to pro)143 330 Q +(vide each passphrase, instead.)-.15 E .087 +(The standard output stream of the helper is tied to an anon)143 348 R +.088(ymous \214le and used in its entirety as)-.15 F(the passphrase, e) +143 360 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)155 372 Q F0 +(Pre-formatted noun phrase with all the information belo)172 372 Q 1.3 +-.65(w, f)-.25 H(or use as a prompt).65 E F4($2)155 384 Q F0 +(Either the dataset name or the element of the TPM hierarch)172 384 Q +2.5(yb)-.05 G(eing prompted for)-2.5 E F4($3)155 396 Q F0("ne)172 396 Q (w" if this is for a ne)-.25 E 2.5(wp)-.25 G(assphrase, otherwise blank) --2.5 E F4($4)155 396 Q F0("ag)172 396 Q(ain" if it')-.05 E 2.5(st)-.55 G -(he second prompt for that passphrase, otherwise blank)-2.5 E .181 -(If the helper doesn')143 414 R 2.681(te)-.18 G 1.847(xist \()-2.831 F -.181(the shell e)1.666 F .181(xits with)-.15 F F1(127)2.681 E F0 -3.151 -1.666(\), a d)1.666 H .181(iagnostic is issued and the normal prompt) --1.666 F(is used as f)143 426 Q 2.5(all-back. If)-.1 F(it f)2.5 E +-2.5 E F4($4)155 408 Q F0("ag)172 408 Q(ain" if it')-.05 E 2.5(st)-.55 G +(he second prompt for that passphrase, otherwise blank)-2.5 E 1.109 +(If the helper doesn')143 426 R 3.609(te)-.18 G 2.775(xist \()-3.759 F +1.109(the shell e)1.666 F 1.109(xits with)-.15 F F1(127)3.609 E F0 +-2.223 1.666(\), a d)1.666 H 1.108(iagnostic is issued and the normal) +-1.666 F(prompt is used as f)143 438 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(TPM2 back-end con\214guration)72 450 R(En)84 462 Q(vir) --.4 E .625(onment v)-.18 F(ariables)-.1 E F4(TSS2_LOG)102 474 Q F0(An) -155 474 Q 2.5(yo)-.15 G(f:)-2.5 E F1(NONE)2.5 E F0(,)A F1(ERR)2.5 E(OR) +-2.5 E F1 1.666(TPM2 back-end con\214guration)72 462 R(En)84 474 Q(vir) +-.4 E .625(onment v)-.18 F(ariables)-.1 E F4(TSS2_LOG)102 486 Q F0(An) +155 486 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) -84 498 R F0 .516(The library)102 510 R F2(libtss2-tcti-default.so)3.016 -E F0 .516(can be link)3.016 F .516(ed to an)-.1 F 3.017(yo)-.15 G 3.017 -(ft)-3.017 G(he)-3.017 E F4(libtss2-tcti-)3.017 E/F5 10/Symbol SF(*)A F4 -(.so)A F0(libraries)3.017 E .576(to select the def)102 522 R .576 -(ault, otherwise)-.1 F F4(/dev/tpmrm0)3.076 E F0 3.076(,t)C(hen)-3.076 E -F4(/dev/tpm0)3.076 E F0 3.076(,t)C(hen)-3.076 E F4(localhost:2321)3.076 -E F0 .575(will be tried,)3.076 F(in order)102 534 Q 1.666(\(s)4.166 G -(ee)-1.666 E F4(ESYS_CONTEXT)2.5 E F0 -.834(\(3\) \) .)B F1 .625 -(See also)84 558 R F0 3.487(The tpm2-tss git repository at)102 570 R F1 -(https://github)5.988 E(.com/tpm2-softwar)-.4 E(e/tpm2-tss)-.18 E F0 -3.488(and the documentation at)5.988 F F1(https://tpm2-tss.r)102 582 Q -(eadthedocs.io)-.18 E F0(.)A 6.305 -(The TPM 2.0 speci\214cations, mainly at)102 600 R F1 -(https://trustedcomputinggr)8.805 E(oup.or)-.18 E(g/r)-.1 E(esour)-.18 E -(ce/tpm-library-)-.18 E(speci\214cation/)102 612 Q F0(,)A F1 -(https://trustedcomputinggr)116.04 E(oup.or)-.18 E -(g/wp-content/uploads/TPM-)-.1 E(Re)102 624 Q(v-2.0-P)-.15 E(art-1-Ar) +84 510 R F0 1.166(The library)102 522 R F2(libtss2-tcti-default.so)3.666 +E F0 1.167(can be link)3.667 F 1.167(ed to an)-.1 F 3.667(yo)-.15 G +3.667(ft)-3.667 G(he)-3.667 E F4(libtss2-tcti-)3.667 E/F5 10/Symbol SF +(*)A F4(.so)A F0(li-)3.667 E 1.381(braries to select the def)102 534 R +1.381(ault, otherwise)-.1 F F4(/dev/tpmrm0)3.88 E F0 3.88(,t)C(hen)-3.88 +E F4(/dev/tpm0)3.88 E F0 3.88(,t)C(hen)-3.88 E F4(localhost:2321)3.88 E +F0(will be tried, in order)102 546 Q 1.666(\(s)4.166 G(ee)-1.666 E F4 +(ESYS_CONTEXT)2.5 E F0 -.834(\(3\) \) .)B F1 .625(See also)84 570 R F0 +1.629(The tpm2-tss git repository at)102 582 R F1(https://github)4.129 E +(.com/tpm2-softwar)-.4 E(e/tpm2-tss)-.18 E F0 1.63 +(and the documentation at)4.13 F F1(https://tpm2-tss.r)102 594 Q +(eadthedocs.io)-.18 E F0(.)A 3.518 +(The TPM 2.0 speci\214cations, mainly at)102 612 R F1 +(https://trustedcomputinggr)6.017 E(oup.or)-.18 E(g/r)-.1 E(esour)-.18 E +(ce/tpm-library-)-.18 E(speci\214cation/)102 624 Q F0(,)A F1 +(https://trustedcomputinggr)99.315 E(oup.or)-.18 E +(g/wp-content/uploads/TPM-)-.1 E(Re)102 636 Q(v-2.0-P)-.15 E(art-1-Ar) -.1 E(chitectur)-.18 E(e-01.38.pdf)-.18 E F0 2.5(,a)C(nd related pages.) --2.5 E F1 1.666(SPECIAL THANKS)72 648 R F0 1.6 -.8(To a)102 660 T +-2.5 E F1 1.666(SPECIAL THANKS)72 660 R F0 1.6 -.8(To a)102 672 T (ll who support further de).8 E -.15(ve)-.25 G(lopment, in particular:) -.15 E F1<83>122 672 Q F0(ThePhD)2.5 E(tzpfms 0.3.0)72 750 Q -(December 20, 2021)144.985 E(11)184.705 E 0 Cg EP +.15 E F1<83>122 684 Q F0(ThePhD)2.5 E F1<83>122 696 Q F0(Embark Studios) +2.5 E F1<83>122 708 Q F0(Jasper Bekk)2.5 E(ers)-.1 E(tzpfms 0.3.0-1-g)72 +799.889 Q 105.605(a4cfe40 June)-.05 F(17, 2022)2.5 E(11)196.085 E 0 Cg +EP %%Page: 12 12 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.834(ZFS-TPM2-CLEAR-KEY \(8\))72 48 R (System Manager')62.209 E 2.5(sM)-.55 G 57.209(anual ZFS-TPM2-CLEAR-KEY) --2.5 F(\(8\))1.666 E/F1 10/Times-Bold@0 SF<83>122 96 Q F0 -(Embark Studios)2.5 E F1<83>122 108 Q F0(Jasper Bekk)2.5 E(ers)-.1 E F1 -(REPOR)72 132 Q 1.666(TING B)-.4 F(UGS)-.1 E(https://todo.sr)102 144 Q -(.ht/~nabijaczleweli/tzpfms)-1 E/F2 10/Courier@0 SF -(~nabijaczleweli/tzpfms@lists.sr.ht)102 162 Q F0 2.5(,a)C(rchi)-2.5 E --.15(ve)-.25 G 2.5(da).15 G(t)-2.5 E F1(https://lists.sr)2.5 E -(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A(tzpfms 0.3.0)72 750 Q -(December 20, 2021)144.985 E(12)184.705 E 0 Cg EP +-2.5 F(\(8\))1.666 E/F1 10/Times-Bold@0 SF(REPOR)72 96 Q 1.666(TING B) +-.4 F(UGS)-.1 E(https://todo.sr)102 108 Q(.ht/~nabijaczleweli/tzpfms)-1 +E/F2 10/Courier@0 SF(~nabijaczleweli/tzpfms@lists.sr.ht)102 126 Q F0 +86.763(,a)C(rchi)-86.763 E -.15(ve)-.25 G 86.762(da).15 G(t)-86.762 E F1 +(https://lists.sr)102 138 Q(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A +(tzpfms 0.3.0-1-g)72 799.889 Q 105.605(a4cfe40 June)-.05 F(17, 2022)2.5 +E(12)196.085 E 0 Cg EP %%Page: 13 13 %%BeginPageSetup BP @@ -937,28 +947,28 @@ BP (oad TPM2-encrypted ZFS dataset k)-2.5 E -.15(ey)-.1 G F1(SYNOPSIS)72 132 Q F2(zfs-tpm2-load-key)102 144 Q F0([)3.333 E F22.499 E F0(]) .833 E/F3 10/Courier-Oblique@0 SF(dataset)2.5 E F1(DESCRIPTION)72 168 Q -F0 1.118(After v)102 180 R(erifying)-.15 E F3(dataset)3.618 E F0 -.1(wa) -3.618 G 3.618(se).1 G 1.118(ncrypted with)-3.618 F F2(tzpfms)3.618 E F0 -(back)3.618 E(end)-.1 E F1(TPM2)3.618 E F0 3.618(,u)C 1.118 -(nseals the k)-3.618 F 1.418 -.15(ey a)-.1 H 1.118(nd loads it into).15 -F F3(dataset)102 192 Q F0(.)A(The user is prompted for the additional p\ -assphrase, set when creating the k)102 210 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)102 228 Q/F4 10/Courier@0 SF +F0 .003(After v)102 180 R(erifying)-.15 E F3(dataset)2.503 E F0 -.1(wa) +2.503 G 2.503(se).1 G .003(ncrypted with)-2.503 F F2(tzpfms)2.503 E F0 +(back)2.503 E(end)-.1 E F1(TPM2)2.503 E F0 2.503(,u)C .003(nseals the k) +-2.503 F .303 -.15(ey a)-.1 H .003(nd loads it into).15 F F3(dataset)102 +192 Q F0(.)A(The user is prompted for the additional passphrase, set wh\ +en creating the k)102 210 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)102 228 Q/F4 10/Courier@0 SF (zfs-tpm2-change-key)2.5 E F0(\(8\) for a detailed description.)A F1 -(OPTIONS)72 252 Q F2103.666 264 Q F0 .178 -(Do a no-op/dry run, can be used e)119 276 R -.15(ve)-.25 G 2.678(ni).15 -G 2.679(ft)-2.678 G .179(he k)-2.679 F .479 -.15(ey i)-.1 H 2.679(sa).15 -G .179(lready loaded.)-2.679 F(Equi)5.179 E -.25(va)-.25 G .179(lent to) -.25 F F2 .179(zfs load-key)2.679 F F0 -.55('s)C F24.895 E F0 -(option.)119 288 Q F1(ENVIR)72 312 Q 1.666(ONMENT V)-.3 F(ARIABLES)-1.35 -E F4(TZPFMS_PASSPHRASE_HELPER)102 324 Q F0 .466(By def)143 336 R .466(a\ -ult, passphrases are prompted for and read in on the standard output an\ -d input streams.)-.1 F(If)5.465 E F4(TZPFMS_PASSPHRASE_HELPER)143 348 Q -F0 .516(is set and nonempty)3.016 F 3.016(,i)-.65 G 3.016(tw)-3.016 G -.517(ill be run via)-3.016 F F4(/bin/)3.017 E F2 2.183(sh \255c)B F0 -.517(to pro-)3.017 F(vide each passphrase, instead.)143 360 Q .189 +(OPTIONS)72 252 Q F2103.666 264 Q F0 .156 +(Do a no-op/dry run, can be used e)119 276 R -.15(ve)-.25 G 2.656(ni).15 +G 2.656(ft)-2.656 G .156(he k)-2.656 F .456 -.15(ey i)-.1 H 2.656(sa).15 +G .156(lready loaded.)-2.656 F(Equi)5.156 E -.25(va)-.25 G .156(lent to) +.25 F F2 .156(zfs load-key)2.656 F F0 -.55('s)C F2120.666 288 Q F0 +(option.)2.5 E F1(ENVIR)72 312 Q 1.666(ONMENT V)-.3 F(ARIABLES)-1.35 E +F4(TZPFMS_PASSPHRASE_HELPER)102 324 Q F0 .159(By def)143 336 R .159(aul\ +t, passphrases are prompted for and read in on the standard output and \ +input streams.)-.1 F(If)143 348 Q F4(TZPFMS_PASSPHRASE_HELPER)3.356 E F0 +.856(is set and nonempty)3.356 F 3.356(,i)-.65 G 3.356(tw)-3.356 G .856 +(ill be run via)-3.356 F F4(/bin/)3.355 E F2 2.521(sh \255c)B F0(to pro) +143 360 Q(vide each passphrase, instead.)-.15 E .087 (The standard output stream of the helper is tied to an anon)143 378 R -.188(ymous \214le and used in its entirety as the)-.15 F(passphrase, e) +.088(ymous \214le and used in its entirety as)-.15 F(the passphrase, e) 143 390 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)155 402 Q F0 (Pre-formatted noun phrase with all the information belo)172 402 Q 1.3 @@ -967,48 +977,49 @@ F0 .516(is set and nonempty)3.016 F 3.016(,i)-.65 G 3.016(tw)-3.016 G 2.5(yb)-.05 G(eing prompted for)-2.5 E F4($3)155 426 Q F0("ne)172 426 Q (w" if this is for a ne)-.25 E 2.5(wp)-.25 G(assphrase, otherwise blank) -2.5 E F4($4)155 438 Q F0("ag)172 438 Q(ain" if it')-.05 E 2.5(st)-.55 G -(he second prompt for that passphrase, otherwise blank)-2.5 E .181 -(If the helper doesn')143 456 R 2.681(te)-.18 G 1.847(xist \()-2.831 F -.181(the shell e)1.666 F .181(xits with)-.15 F F1(127)2.681 E F0 -3.151 -1.666(\), a d)1.666 H .181(iagnostic is issued and the normal prompt) --1.666 F(is used as f)143 468 Q 2.5(all-back. If)-.1 F(it f)2.5 E +(he second prompt for that passphrase, otherwise blank)-2.5 E 1.109 +(If the helper doesn')143 456 R 3.609(te)-.18 G 2.775(xist \()-3.759 F +1.109(the shell e)1.666 F 1.109(xits with)-.15 F F1(127)3.609 E F0 +-2.223 1.666(\), a d)1.666 H 1.108(iagnostic is issued and the normal) +-1.666 F(prompt is used as f)143 468 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(TPM1.X back-end con\214guration)72 492 R .625 -(TPM selection)84 504 R F0(The)102 516 Q F2(tzpfms)2.768 E F0 .267 -(suite connects to a local)2.767 F F4(tcsd)2.767 E F0 .267 -(\(8\) process)B 1.666(\(a)4.433 G(t)-1.666 E F4(localhost:30003)2.767 E -F0 4.433(\)b)1.666 G 2.767(yd)-4.433 G(ef)-2.767 E 2.767(ault. Use)-.1 F -.267(the en-)2.767 F(vironment v)102 528 Q(ariable)-.25 E F4 -(TZPFMS_TPM1X)2.5 E F0(to specify a remote TCS hostname.)2.5 E .391 -(The T)102 546 R(rouSerS)-.35 E F4(tcsd)2.891 E F0 .391 -(\(8\) daemon will try)B F4(/dev/tpm0)2.892 E F0 2.892(,t)C(hen)-2.892 E -F4(/udev/tpm0)2.892 E F0 2.892(,t)C(hen)-2.892 E F4(/dev/tpm)2.892 E F0 -2.892(;b)C 2.892(yo)-2.892 G(ccup)-2.892 E(ying)-.1 E -(one of the earlier ones with, for e)102 558 Q +(TPM selection)84 504 R F0(The)102 516 Q F2(tzpfms)2.682 E F0 .182 +(suite connects to a local)2.682 F F4(tcsd)2.682 E F0 .182 +(\(8\) process)B 1.666(\(a)4.348 G(t)-1.666 E F4(localhost:30003)2.682 E +F0 4.348(\)b)1.666 G 2.683(yd)-4.348 G(ef)-2.683 E 2.683(ault. Use)-.1 F +(the)2.683 E(en)102 528 Q(vironment v)-.4 E(ariable)-.25 E F4 +(TZPFMS_TPM1X)2.5 E F0(to specify a remote TCS hostname.)2.5 E .611 +(The T)102 546 R(rouSerS)-.35 E F4(tcsd)3.111 E F0 .611 +(\(8\) daemon will try)B F4(/dev/tpm0)3.11 E F0 3.11(,t)C(hen)-3.11 E F4 +(/udev/tpm0)3.11 E F0 3.11(,t)C(hen)-3.11 E F4(/dev/tpm)3.11 E F0 3.11 +(;b)C 3.11(yo)-3.11 G(ccu-)-3.11 E -.1(py)102 558 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)84 582 R F0(The T)102 594 Q(rouSerS project page at)-.35 E F1 (https://sour)2.5 E(cef)-.18 E(or)-.25 E(ge.net/pr)-.1 E(ojects/tr)-.18 -E(ousers)-.18 E F0(.)A 5.109(The TPM 1.2 main speci\214cation inde)102 -612 R 7.608(xa)-.15 G(t)-7.608 E F1(https://trustedcomputinggr)7.608 E +E(ousers)-.18 E F0(.)A 2.719(The TPM 1.2 main speci\214cation inde)102 +612 R 5.22(xa)-.15 G(t)-5.22 E F1(https://trustedcomputinggr)5.22 E (oup.or)-.18 E(g/r)-.1 E(esour)-.18 E(ce/tpm-main-)-.18 E (speci\214cation)102 624 Q F0(.)A F1 1.666(SPECIAL THANKS)72 648 R F0 1.6 -.8(To a)102 660 T(ll who support further de).8 E -.15(ve)-.25 G -(lopment, in particular:).15 E F1<83>122 672 Q F0(ThePhD)2.5 E -(tzpfms 0.3.0)72 750 Q(December 20, 2021)144.985 E(13)184.705 E 0 Cg EP +(lopment, in particular:).15 E F1<83>122 672 Q F0(ThePhD)2.5 E F1<83>122 +684 Q F0(Embark Studios)2.5 E F1<83>122 696 Q F0(Jasper Bekk)2.5 E(ers) +-.1 E F1(REPOR)72 720 Q 1.666(TING B)-.4 F(UGS)-.1 E(https://todo.sr)102 +732 Q(.ht/~nabijaczleweli/tzpfms)-1 E F0(tzpfms 0.3.0-1-g)72 799.889 Q +105.605(a4cfe40 June)-.05 F(17, 2022)2.5 E(13)196.085 E 0 Cg EP %%Page: 14 14 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(ZFS-TPM2-LO)72 48 Q -.834(AD-KEY \(8\))-.35 F (System Manager')67.569 E 2.5(sM)-.55 G 62.569(anual ZFS-TPM2-LO)-2.5 F --.834(AD-KEY \(8\))-.35 F/F1 10/Times-Bold@0 SF<83>122 96 Q F0 -(Embark Studios)2.5 E F1<83>122 108 Q F0(Jasper Bekk)2.5 E(ers)-.1 E F1 -(REPOR)72 132 Q 1.666(TING B)-.4 F(UGS)-.1 E(https://todo.sr)102 144 Q -(.ht/~nabijaczleweli/tzpfms)-1 E/F2 10/Courier@0 SF -(~nabijaczleweli/tzpfms@lists.sr.ht)102 162 Q F0 2.5(,a)C(rchi)-2.5 E --.15(ve)-.25 G 2.5(da).15 G(t)-2.5 E F1(https://lists.sr)2.5 E -(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A(tzpfms 0.3.0)72 750 Q -(December 20, 2021)144.985 E(14)184.705 E 0 Cg EP +-.834(AD-KEY \(8\))-.35 F/F1 10/Courier@0 SF +(~nabijaczleweli/tzpfms@lists.sr.ht)102 96 Q F0 86.763(,a)C(rchi)-86.763 +E -.15(ve)-.25 G 86.762(da).15 G(t)-86.762 E/F2 10/Times-Bold@0 SF +(https://lists.sr)102 108 Q(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A +(tzpfms 0.3.0-1-g)72 799.889 Q 105.605(a4cfe40 June)-.05 F(17, 2022)2.5 +E(14)196.085 E 0 Cg EP %%Trailer end %%EOF diff --git a/zfs-tpm-list.8 b/zfs-tpm-list.8 index 36fdfe3..81b4b8e 100644 --- a/zfs-tpm-list.8 +++ b/zfs-tpm-list.8 @@ -1,9 +1,9 @@ .\" SPDX-License-Identifier: MIT . -.Dd December 20, 2021 +.Dd June 17, 2022 .ds doc-volume-operating-system .Dt ZFS-TPM-LIST 8 -.Os tzpfms 0.3.0 +.Os tzpfms 0.3.0-1-ga4cfe40 . .Sh NAME .Nm zfs-tpm-list diff --git a/zfs-tpm-list.8.html b/zfs-tpm-list.8.html index 21e9e64..63414f7 100644 --- a/zfs-tpm-list.8.html +++ b/zfs-tpm-list.8.html @@ -164,8 +164,8 @@ tarta-zoot/vm - available yes - - + +
December 20, 2021tzpfms 0.3.0June 17, 2022tzpfms 0.3.0-1-ga4cfe40
diff --git a/zfs-tpm1x-change-key.8 b/zfs-tpm1x-change-key.8 index 973e3bc..7d53823 100644 --- a/zfs-tpm1x-change-key.8 +++ b/zfs-tpm1x-change-key.8 @@ -1,9 +1,9 @@ .\" SPDX-License-Identifier: MIT . -.Dd December 20, 2021 +.Dd June 17, 2022 .ds doc-volume-operating-system .Dt ZFS-TPM1X-CHANGE-KEY 8 -.Os tzpfms 0.3.0 +.Os tzpfms 0.3.0-1-ga4cfe40 . .Sh NAME .Nm zfs-tpm1x-change-key diff --git a/zfs-tpm1x-change-key.8.html b/zfs-tpm1x-change-key.8.html index bd0afd9..b3194ea 100644 --- a/zfs-tpm1x-change-key.8.html +++ b/zfs-tpm1x-change-key.8.html @@ -216,8 +216,8 @@ - - + +
December 20, 2021tzpfms 0.3.0June 17, 2022tzpfms 0.3.0-1-ga4cfe40
diff --git a/zfs-tpm1x-clear-key.8 b/zfs-tpm1x-clear-key.8 index e5c3c56..b841c81 100644 --- a/zfs-tpm1x-clear-key.8 +++ b/zfs-tpm1x-clear-key.8 @@ -1,9 +1,9 @@ .\" SPDX-License-Identifier: MIT . -.Dd December 20, 2021 +.Dd June 17, 2022 .ds doc-volume-operating-system .Dt ZFS-TPM1X-CLEAR-KEY 8 -.Os tzpfms 0.3.0 +.Os tzpfms 0.3.0-1-ga4cfe40 . .Sh NAME .Nm zfs-tpm1x-clear-key diff --git a/zfs-tpm1x-clear-key.8.html b/zfs-tpm1x-clear-key.8.html index 072e778..0819155 100644 --- a/zfs-tpm1x-clear-key.8.html +++ b/zfs-tpm1x-clear-key.8.html @@ -101,8 +101,8 @@ - - + +
December 20, 2021tzpfms 0.3.0June 17, 2022tzpfms 0.3.0-1-ga4cfe40
diff --git a/zfs-tpm1x-load-key.8 b/zfs-tpm1x-load-key.8 index 3113e38..72535e8 100644 --- a/zfs-tpm1x-load-key.8 +++ b/zfs-tpm1x-load-key.8 @@ -1,9 +1,9 @@ .\" SPDX-License-Identifier: MIT . -.Dd December 20, 2021 +.Dd June 17, 2022 .ds doc-volume-operating-system .Dt ZFS-TPM1X-LOAD-KEY 8 -.Os tzpfms 0.3.0 +.Os tzpfms 0.3.0-1-ga4cfe40 . .Sh NAME .Nm zfs-tpm1x-load-key diff --git a/zfs-tpm1x-load-key.8.html b/zfs-tpm1x-load-key.8.html index 80275b6..334729a 100644 --- a/zfs-tpm1x-load-key.8.html +++ b/zfs-tpm1x-load-key.8.html @@ -137,8 +137,8 @@ - - + +
December 20, 2021tzpfms 0.3.0June 17, 2022tzpfms 0.3.0-1-ga4cfe40
diff --git a/zfs-tpm2-change-key.8 b/zfs-tpm2-change-key.8 index d205848..3e9ce54 100644 --- a/zfs-tpm2-change-key.8 +++ b/zfs-tpm2-change-key.8 @@ -1,9 +1,9 @@ .\" SPDX-License-Identifier: MIT . -.Dd December 20, 2021 +.Dd June 17, 2022 .ds doc-volume-operating-system .Dt ZFS-TPM2-CHANGE-KEY 8 -.Os tzpfms 0.3.0 +.Os tzpfms 0.3.0-1-ga4cfe40 . .Sh NAME .Nm zfs-tpm2-change-key diff --git a/zfs-tpm2-change-key.8.html b/zfs-tpm2-change-key.8.html index 6d6fef3..372890a 100644 --- a/zfs-tpm2-change-key.8.html +++ b/zfs-tpm2-change-key.8.html @@ -263,8 +263,8 @@ - - + +
December 20, 2021tzpfms 0.3.0June 17, 2022tzpfms 0.3.0-1-ga4cfe40
diff --git a/zfs-tpm2-clear-key.8 b/zfs-tpm2-clear-key.8 index 752d83e..c687526 100644 --- a/zfs-tpm2-clear-key.8 +++ b/zfs-tpm2-clear-key.8 @@ -1,9 +1,9 @@ .\" SPDX-License-Identifier: MIT . -.Dd December 20, 2021 +.Dd June 17, 2022 .ds doc-volume-operating-system .Dt ZFS-TPM2-CLEAR-KEY 8 -.Os tzpfms 0.3.0 +.Os tzpfms 0.3.0-1-ga4cfe40 . .Sh NAME .Nm zfs-tpm2-clear-key diff --git a/zfs-tpm2-clear-key.8.html b/zfs-tpm2-clear-key.8.html index 9c2376d..a9ae190 100644 --- a/zfs-tpm2-clear-key.8.html +++ b/zfs-tpm2-clear-key.8.html @@ -152,8 +152,8 @@ - - + +
December 20, 2021tzpfms 0.3.0June 17, 2022tzpfms 0.3.0-1-ga4cfe40
diff --git a/zfs-tpm2-load-key.8 b/zfs-tpm2-load-key.8 index 0a0a9ae..3a5427d 100644 --- a/zfs-tpm2-load-key.8 +++ b/zfs-tpm2-load-key.8 @@ -1,9 +1,9 @@ .\" SPDX-License-Identifier: MIT . -.Dd December 20, 2021 +.Dd June 17, 2022 .ds doc-volume-operating-system .Dt ZFS-TPM2-LOAD-KEY 8 -.Os tzpfms 0.3.0 +.Os tzpfms 0.3.0-1-ga4cfe40 . .Sh NAME .Nm zfs-tpm2-load-key diff --git a/zfs-tpm2-load-key.8.html b/zfs-tpm2-load-key.8.html index bf48745..22392d6 100644 --- a/zfs-tpm2-load-key.8.html +++ b/zfs-tpm2-load-key.8.html @@ -136,8 +136,8 @@ - - + +
December 20, 2021tzpfms 0.3.0June 17, 2022tzpfms 0.3.0-1-ga4cfe40