From f5ccb9e7ab38bc68ef01fbf73dd9dd6d2817ef45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1=20autouploader?= Date: Thu, 18 Nov 2021 23:39:07 +0000 Subject: [PATCH] Manpage update by job 630493 --- tzpfms.pdf | Bin 68860 -> 68204 bytes tzpfms.ps | 559 ++++++++++++++++++------------------ zfs-tpm-list.8 | 4 +- zfs-tpm-list.8.html | 4 +- zfs-tpm1x-change-key.8 | 37 ++- zfs-tpm1x-change-key.8.html | 39 ++- zfs-tpm1x-clear-key.8 | 4 +- zfs-tpm1x-clear-key.8.html | 4 +- zfs-tpm1x-load-key.8 | 37 ++- zfs-tpm1x-load-key.8.html | 39 ++- zfs-tpm2-change-key.8 | 37 ++- zfs-tpm2-change-key.8.html | 39 ++- zfs-tpm2-clear-key.8 | 37 ++- zfs-tpm2-clear-key.8.html | 39 ++- zfs-tpm2-load-key.8 | 37 ++- zfs-tpm2-load-key.8.html | 39 ++- 16 files changed, 485 insertions(+), 470 deletions(-) diff --git a/tzpfms.pdf b/tzpfms.pdf index 2c56785963971eb45bfe641eece90021bedf1569..7c9cd999de0e8554a74e9eb877475ade93416719 100644 GIT binary patch delta 30575 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 diff --git a/tzpfms.ps b/tzpfms.ps index c3d09bf..7eaf181 100644 --- a/tzpfms.ps +++ b/tzpfms.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.22.4 -%%CreationDate: Mon Nov 15 18:13:33 2021 +%%CreationDate: Thu Nov 18 23:39:06 2021 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Courier-Bold @@ -305,8 +305,8 @@ R 12(awa -)102 606 R 6(available yes)54 F($)102 630 Q F2 1.666 (KEYSTATUS COHERENT)12 F 6(owo/venc TPM2)102 654 R 6(unavailable yes)36 F($)102 678 Q F2 1.666(zfs-tpm-list \255ra)6 F F3(owo)6 E F4 30 (NAME BACK-END)102 690 R 18(KEYSTATUS COHERENT)12 F 6(owo/venc TPM2)102 -702 R 6(unavailable yes)36 F F0(tzpfms 0.1-15)72 750 Q(No)138.745 E -.15 -(ve)-.15 G(mber 15, 2021).15 E(1)189.295 E 0 Cg EP +702 R 6(unavailable yes)36 F F0(tzpfms 0.1-16)72 750 Q(No)138.745 E -.15 +(ve)-.15 G(mber 18, 2021).15 E(1)189.295 E 0 Cg EP %%Page: 2 2 %%BeginPageSetup BP @@ -330,7 +330,7 @@ G 6(vailable yes)-54 F 12(owo/enc TPM1.X)102 204 R 6(available yes)24 F -.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 354 R (https://git.sr)102 366 Q(.ht/~nabijaczleweli/tzpfms)-1 E F0 -(tzpfms 0.1-15)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 15, 2021).15 E +(tzpfms 0.1-16)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 18, 2021).15 E (2)189.295 E 0 Cg EP %%Page: 3 3 %%BeginPageSetup @@ -419,8 +419,8 @@ F0(Sa)191 618 Q .806 -.15(ve a b)-.2 H .506(ack-up of the k).15 F .805 (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 642 Q F2 (zfs load-key)221 654 Q F3(dataset)6 E F5(<)6 E F3(backup-file)6 E F1 -(ENVIR)72 678 Q 1.666(ONMENT V)-.3 F(ARIABLES)-1.35 E F0(tzpfms 0.1-15) -72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 15, 2021).15 E(3)189.295 E 0 +(ENVIR)72 678 Q 1.666(ONMENT V)-.3 F(ARIABLES)-1.35 E F0(tzpfms 0.1-16) +72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 18, 2021).15 E(3)189.295 E 0 Cg EP %%Page: 4 4 %%BeginPageSetup @@ -429,62 +429,59 @@ BP /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@0 SF -(TZPFMS_PASSPHRASE_HELPER)102 96 Q F0(If set and nonempty)143 108 Q 2.5 -(,w)-.65 G(ill be run as)-2.5 E F1(/bin/)173 120 Q/F2 10/Courier-Bold@0 -SF 70.333(sh \255c)B F1("$TZPFMS_PASSPHRASE_HELPER")74.667 E -("$TZPFMS_PASSPHRASE_HELPER")173 132 Q F0(")10.715 E/F3 10 -/Courier-Oblique@0 SF 4.715(prepared prompt)B F0 7.215("")C F3(target) --7.215 E F0 7.215("")C([)-7.215 E F1(new)A F0(]")A("[)173 144 Q F1 -(again)A F0(]")A(to pro)143 156 Q -(vide a passphrase, instead of reading from the standard input.)-.15 E -.189(The standard output stream of the helper is tied to an anon)143 174 -R .188(ymous \214le and used in its entirety as the)-.15 F .446 -(passphrase, e)143 186 R .446(xcept for a trailing ne)-.15 F .446 -(w-line, if an)-.25 F 4.246 -.65(y. T)-.15 H .447(he second ar).65 F -.447(gument contains either the dataset)-.18 F 2.14 -(name or the element of the TPM hierarch)143 198 R 5.94 -.65(y. T)-.05 H -2.14(he third ar).65 F 2.14(gument is)-.18 F F1(new)4.64 E F0 2.14 -(if this is for a ne)4.64 F(w)-.25 E .573(passphrase, and the fourth is) -143 210 R F1(again)3.074 E F0 .574(if it')3.074 F 3.074(st)-.55 G .574 -(he second prompt for that passphrase.)-3.074 F .574(The \214rst ar) -5.574 F(gu-)-.18 E(ment already contains all of this information, as a \ -pre-formatted noun phrase.)143 222 Q .181(If the helper doesn')143 240 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 10/Times-Bold@0 SF(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 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(An e) -143 270 Q(xample v)-.15 E(alue w)-.25 E(ould be: ')-.1 E F2 1.666 -(systemd-ask-password \255-id)B F1(=)A F0(")A F1(tzpfms:)A F3($2)A F0 -2.5("")C F3($1)-2.5 E F1(:)A F0("'.)6 E F4 1.666 -(TPM1.X back-end con\214guration)72 294 R .625(TPM selection)84 306 R F0 -(The)102 318 Q F2(tzpfms)2.767 E F0 .267(suite connects to a local)2.767 -F F1(tcsd)2.767 E F0 .267(\(8\) process)B 1.666(\(a)4.433 G(t)-1.666 E -F1(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 330 -Q(ariable)-.25 E F1(TZPFMS_TPM1X)2.5 E F0 -(to specify a remote TCS hostname.)2.5 E .392(The T)102 348 R(rouSerS) --.35 E F1(tcsd)2.892 E F0 .392(\(8\) daemon will try)B F1(/dev/tpm0) -2.892 E F0 2.892(,t)C(hen)-2.892 E F1(/udev/tpm0)2.892 E F0 2.891(,t)C -(hen)-2.891 E F1(/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 360 Q -(xample, shell redirection, a later one can be selected.)-.15 E F4 .625 -(See also)84 384 R F0(The T)102 396 Q(rouSerS project page at)-.35 E F4 +(TZPFMS_PASSPHRASE_HELPER)102 96 Q F0 1.134(If set and nonempty)143 108 +R 3.634(,w)-.65 G 1.134(ill be run via)-3.634 F F1(/bin/)3.633 E/F2 10 +/Courier-Bold@0 SF 2.799(sh \255c)B F0 1.133(to pro)3.633 F 1.133 +(vide a passphrase, instead of reading)-.15 F +(from the standard input stream.)143 120 Q .188 +(The standard output stream of the helper is tied to an anon)143 138 R +.189(ymous \214le and used in its entirety as the)-.15 F(passphrase, e) +143 150 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 +(1. Pre-formatted noun phrase with all the information belo)155 162 Q(w) +-.25 E(2. Either the dataset name or the element of the TPM hierarch)155 +174 Q -.65(y.)-.05 G(3. "ne)155 186 Q(w" if this is for a ne)-.25 E 2.5 +(wp)-.25 G(assphrase)-2.5 E(4. "ag)155 198 Q(ain" if it')-.05 E 2.5(st) +-.55 G(he second prompt for that passphrase)-2.5 E .181 +(If the helper doesn')143 216 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 10/Times-Bold@0 SF +(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 228 +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 13.14(An e)143 246 R +13.14(xample v)-.15 F 13.14(alue f)-.25 F(acilitating)-.1 E F1(systemd) +15.64 E F0 13.14(\(1\) inte)B 13.14(gration w)-.15 F 13.14(ould be: ') +-.1 F F2(exec)A 1.666(systemd-ask-password \255-id)143 258 R F1(=)A F0 +(")A F1(tzpfms:)A/F4 10/Courier-Oblique@0 SF($2)A F0 2.5("")C F4($1)-2.5 +E F1(:)A F0("'.)6 E F3 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.768 E F0 .267 +(suite connects to a local)2.767 F F1(tcsd)2.767 E F0 .267 +(\(8\) process)B 1.666(\(a)4.433 G(t)-1.666 E F1(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 318 Q(ariable)-.25 E F1 +(TZPFMS_TPM1X)2.5 E F0(to specify a remote TCS hostname.)2.5 E .391 +(The T)102 336 R(rouSerS)-.35 E F1(tcsd)2.891 E F0 .391 +(\(8\) daemon will try)B F1(/dev/tpm0)2.892 E F0 2.892(,t)C(hen)-2.892 E +F1(/udev/tpm0)2.892 E F0 2.892(,t)C(hen)-2.892 E F1(/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 348 Q +(xample, shell redirection, a later one can be selected.)-.15 E F3 .625 +(See also)84 372 R F0(The T)102 384 Q(rouSerS project page at)-.35 E F3 (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 -414 R 7.609(xa)-.15 G(t)-7.609 E F4(https://trustedcomputinggr)7.609 E +E(ousers)-.18 E F0(.)A 5.109(The TPM 1.2 main speci\214cation inde)102 +402 R 7.608(xa)-.15 G(t)-7.608 E F3(https://trustedcomputinggr)7.608 E (oup.or)-.18 E(g/r)-.1 E(esour)-.18 E(ce/tpm-main-)-.18 E -(speci\214cation)102 426 Q F0(.)A F4 1.666(SPECIAL THANKS)72 450 R F0 -1.6 -.8(To a)102 462 T(ll who support further de).8 E -.15(ve)-.25 G -(lopment, in particular:).15 E F4<83>122 474 Q F0(ThePhD)2.5 E F4<83>122 -486 Q F0(Embark Studios)2.5 E F4<83>122 498 Q F0(Jasper Bekk)2.5 E(ers) --.1 E F4(REPOR)72 522 Q 1.666(TING B)-.4 F(UGS)-.1 E(https://todo.sr)102 -534 Q(.ht/~nabijaczleweli/tzpfms)-1 E F1 -(~nabijaczleweli/tzpfms@lists.sr.ht)102 552 Q F0 2.5(,a)C(rchi)-2.5 E --.15(ve)-.25 G 2.5(da).15 G(t)-2.5 E F4(https://lists.sr)2.5 E -(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A F4 1.666(SEE ALSO)72 576 R -(https://git.sr)102 588 Q(.ht/~nabijaczleweli/tzpfms)-1 E F0 -(tzpfms 0.1-15)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 15, 2021).15 E +(speci\214cation)102 414 Q F0(.)A F3 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 F3<83>122 462 Q F0(ThePhD)2.5 E F3<83>122 +474 Q F0(Embark Studios)2.5 E F3<83>122 486 Q F0(Jasper Bekk)2.5 E(ers) +-.1 E F3(REPOR)72 510 Q 1.666(TING B)-.4 F(UGS)-.1 E(https://todo.sr)102 +522 Q(.ht/~nabijaczleweli/tzpfms)-1 E F1 +(~nabijaczleweli/tzpfms@lists.sr.ht)102 540 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 564 R +(https://git.sr)102 576 Q(.ht/~nabijaczleweli/tzpfms)-1 E F0 +(tzpfms 0.1-16)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 18, 2021).15 E (4)189.295 E 0 Cg EP %%Page: 5 5 %%BeginPageSetup @@ -500,31 +497,31 @@ BP (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 +F0(back)2.5 E(end)-.1 E F1(TPM1.X)2.5 E F0(:)A 6.984 (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 +(keylocation=prompt)12.985 E F214.651 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 +(The)102 282 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 .268(the en-)2.767 F(vironment v)102 294 +-2.767 E 2.767(ault. Use)-.1 F .267(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 +(to specify a remote TCS hostname.)2.5 E .391(The T)102 312 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 324 Q (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 (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 5.109(The TPM 1.2 main speci\214cation inde)102 +378 R 7.608(xa)-.15 G(t)-7.608 E F1(https://trustedcomputinggr)7.608 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 @@ -536,7 +533,7 @@ E(ousers)-.18 E F0(.)A 5.108(The TPM 1.2 main speci\214cation inde)102 -.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 540 R (https://git.sr)102 552 Q(.ht/~nabijaczleweli/tzpfms)-1 E F0 -(tzpfms 0.1-15)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 15, 2021).15 E +(tzpfms 0.1-16)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 18, 2021).15 E (5)189.295 E 0 Cg EP %%Page: 6 6 %%BeginPageSetup @@ -549,85 +546,82 @@ 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 1.155(After v)102 180 R(erifying)-.15 E F3(dataset)3.655 E F0 -.1(wa) +3.655 G 3.655(se).1 G 1.155(ncrypted with)-3.655 F F2(tzpfms)3.655 E F0 +(back)3.655 E(end)-.1 E F1(TPM1.X)3.655 E F0 1.156(will unseal the k) +3.655 F 1.456 -.15(ey a)-.1 H 1.156(nd load it).15 F(into)102 192 Q F3 +(dataset)2.5 E F0(.)A .694 (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 +102 210 R .693(wnership, if not "well-kno)-.25 F .693(wn" \(all ze-)-.25 F(roes\); 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 -(If set and nonempty)143 348 Q 2.5(,w)-.65 G(ill be run as)-2.5 E F4 -(/bin/)173 360 Q F2 70.333(sh \255c)B F4("$TZPFMS_PASSPHRASE_HELPER") -74.667 E("$TZPFMS_PASSPHRASE_HELPER")173 372 Q F0(")10.715 E F3 4.715 -(prepared prompt)B F0 7.215("")C F3(target)-7.215 E F0 7.215("")C([) --7.215 E F4(new)A F0(]")A("[)173 384 Q F4(again)A F0(]")A(to pro)143 396 -Q(vide a passphrase, instead of reading from the standard input.)-.15 E -.188(The standard output stream of the helper is tied to an anon)143 414 -R .189(ymous \214le and used in its entirety as the)-.15 F .447 -(passphrase, e)143 426 R .447(xcept for a trailing ne)-.15 F .447 -(w-line, if an)-.25 F 4.246 -.65(y. T)-.15 H .446(he second ar).65 F -.446(gument contains either the dataset)-.18 F 2.14 -(name or the element of the TPM hierarch)143 438 R 5.94 -.65(y. T)-.05 H -2.14(he third ar).65 F 2.14(gument is)-.18 F F4(new)4.64 E F0 2.14 -(if this is for a ne)4.64 F(w)-.25 E .574(passphrase, and the fourth is) -143 450 R F4(again)3.074 E F0 .574(if it')3.074 F 3.074(st)-.55 G .574 -(he second prompt for that passphrase.)-3.074 F .573(The \214rst ar) -5.573 F(gu-)-.18 E(ment already contains all of this information, as a \ -pre-formatted noun phrase.)143 462 Q .181(If the helper doesn')143 480 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 492 -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(An e)143 510 Q(xample v) --.15 E(alue w)-.25 E(ould be: ')-.1 E F2 1.666 -(systemd-ask-password \255-id)B F4(=)A F0(")A F4(tzpfms:)A F3($2)A F0 -2.5("")C F3($1)-2.5 E F4(:)A F0("'.)6 E F1 1.666 -(TPM1.X back-end con\214guration)72 534 R .625(TPM selection)84 546 R F0 -(The)102 558 Q F2(tzpfms)2.768 E F0 .267(suite connects to a local)2.767 +276 Q F0 .178(Do a no-op/dry run, can be used e)119 288 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 F2 +4.895 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 1.134 +(If set and nonempty)143 348 R 3.634(,w)-.65 G 1.134(ill be run via) +-3.634 F F4(/bin/)3.633 E F2 2.799(sh \255c)B F0 1.133(to pro)3.633 F +1.133(vide a passphrase, instead of reading)-.15 F +(from the standard input stream.)143 360 Q .188 +(The standard output stream of the helper is tied to an anon)143 378 R +.189(ymous \214le and used in its entirety as the)-.15 F(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 +(1. Pre-formatted noun phrase with all the information belo)155 402 Q(w) +-.25 E(2. Either the dataset name or the element of the TPM hierarch)155 +414 Q -.65(y.)-.05 G(3. "ne)155 426 Q(w" if this is for a ne)-.25 E 2.5 +(wp)-.25 G(assphrase)-2.5 E(4. "ag)155 438 Q(ain" if it')-.05 E 2.5(st) +-.55 G(he second prompt for that passphrase)-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 +(ails for an)-.1 E 2.5(yo)-.15 G(ther reason, the prompting is aborted.) +-2.5 E 13.14(An e)143 486 R 13.14(xample v)-.15 F 13.14(alue f)-.25 F +(acilitating)-.1 E F4(systemd)15.64 E F0 13.14(\(1\) inte)B 13.14 +(gration w)-.15 F 13.14(ould be: ')-.1 F F2(exec)A 1.666 +(systemd-ask-password \255-id)143 498 R F4(=)A F0(")A F4(tzpfms:)A F3 +($2)A F0 2.5("")C F3($1)-2.5 E F4(:)A F0("'.)6 E F1 1.666 +(TPM1.X back-end con\214guration)72 522 R .625(TPM selection)84 534 R F0 +(The)102 546 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 570 +-2.767 E 2.767(ault. Use)-.1 F .267(the en-)2.767 F(vironment v)102 558 Q(ariable)-.25 E F4(TZPFMS_TPM1X)2.5 E F0 -(to specify a remote TCS hostname.)2.5 E .391(The T)102 588 R(rouSerS) +(to specify a remote TCS hostname.)2.5 E .391(The T)102 576 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 600 Q +-2.892 E(ying)-.1 E(one of the earlier ones with, for e)102 588 Q (xample, shell redirection, a later one can be selected.)-.15 E F1 .625 -(See also)84 624 R F0(The T)102 636 Q(rouSerS project page at)-.35 E F1 +(See also)84 612 R F0(The T)102 624 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 -654 R 7.608(xa)-.15 G(t)-7.608 E F1(https://trustedcomputinggr)7.608 E +642 R 7.608(xa)-.15 G(t)-7.608 E F1(https://trustedcomputinggr)7.608 E (oup.or)-.18 E(g/r)-.1 E(esour)-.18 E(ce/tpm-main-)-.18 E -(speci\214cation)102 666 Q F0(.)A(tzpfms 0.1-15)72 750 Q(No)138.745 E --.15(ve)-.15 G(mber 15, 2021).15 E(6)189.295 E 0 Cg EP +(speci\214cation)102 654 Q F0(.)A F1 1.666(SPECIAL THANKS)72 678 R F0 +1.6 -.8(To a)102 690 T(ll who support further de).8 E -.15(ve)-.25 G +(lopment, in particular:).15 E(tzpfms 0.1-16)72 750 Q(No)138.745 E -.15 +(ve)-.15 G(mber 18, 2021).15 E(6)189.295 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 1.666(SPECIAL THANKS)72 -96 R F0 1.6 -.8(To a)102 108 T(ll who support further de).8 E -.15(ve) --.25 G(lopment, in particular:).15 E F1<83>122 120 Q F0(ThePhD)2.5 E F1 -<83>122 132 Q F0(Embark Studios)2.5 E F1<83>122 144 Q F0(Jasper Bekk)2.5 -E(ers)-.1 E F1(REPOR)72 168 Q 1.666(TING B)-.4 F(UGS)-.1 E -(https://todo.sr)102 180 Q(.ht/~nabijaczleweli/tzpfms)-1 E/F2 10 -/Courier@0 SF(~nabijaczleweli/tzpfms@lists.sr.ht)102 198 Q F0 2.5(,a)C +-.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 F1 1.666(SEE ALSO)72 222 R -(https://git.sr)102 234 Q(.ht/~nabijaczleweli/tzpfms)-1 E F0 -(tzpfms 0.1-15)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 15, 2021).15 E +2.5 E(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A F1 1.666(SEE ALSO)72 198 R +(https://git.sr)102 210 Q(.ht/~nabijaczleweli/tzpfms)-1 E F0 +(tzpfms 0.1-16)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 18, 2021).15 E (7)189.295 E 0 Cg EP %%Page: 8 8 %%BeginPageSetup @@ -719,7 +713,7 @@ F(This)5.505 E(back-up)191 630 Q F4(must)3.181 E F0 .681 .682(nt, the k).15 F .982 -.15(ey c)-.1 H(an).15 E(be loaded by running) 191 642 Q F2(zfs load-key)221 654 Q F3(dataset)6 E F5(<)6 E F3 (backup-file)6 E F1(ENVIR)72 678 Q 1.666(ONMENT V)-.3 F(ARIABLES)-1.35 E -F0(tzpfms 0.1-15)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 15, 2021).15 +F0(tzpfms 0.1-16)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 18, 2021).15 E(8)189.295 E 0 Cg EP %%Page: 9 9 %%BeginPageSetup @@ -728,67 +722,64 @@ 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@0 SF -(TZPFMS_PASSPHRASE_HELPER)102 96 Q F0(If set and nonempty)143 108 Q 2.5 -(,w)-.65 G(ill be run as)-2.5 E F1(/bin/)173 120 Q/F2 10/Courier-Bold@0 -SF 70.333(sh \255c)B F1("$TZPFMS_PASSPHRASE_HELPER")74.667 E -("$TZPFMS_PASSPHRASE_HELPER")173 132 Q F0(")10.715 E/F3 10 -/Courier-Oblique@0 SF 4.715(prepared prompt)B F0 7.215("")C F3(target) --7.215 E F0 7.215("")C([)-7.215 E F1(new)A F0(]")A("[)173 144 Q F1 -(again)A F0(]")A(to pro)143 156 Q -(vide a passphrase, instead of reading from the standard input.)-.15 E -.189(The standard output stream of the helper is tied to an anon)143 174 -R .188(ymous \214le and used in its entirety as the)-.15 F .446 -(passphrase, e)143 186 R .446(xcept for a trailing ne)-.15 F .446 -(w-line, if an)-.25 F 4.246 -.65(y. T)-.15 H .447(he second ar).65 F -.447(gument contains either the dataset)-.18 F 2.14 -(name or the element of the TPM hierarch)143 198 R 5.94 -.65(y. T)-.05 H -2.14(he third ar).65 F 2.14(gument is)-.18 F F1(new)4.64 E F0 2.14 -(if this is for a ne)4.64 F(w)-.25 E .573(passphrase, and the fourth is) -143 210 R F1(again)3.074 E F0 .574(if it')3.074 F 3.074(st)-.55 G .574 -(he second prompt for that passphrase.)-3.074 F .574(The \214rst ar) -5.574 F(gu-)-.18 E(ment already contains all of this information, as a \ -pre-formatted noun phrase.)143 222 Q .181(If the helper doesn')143 240 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 10/Times-Bold@0 SF(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 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(An e) -143 270 Q(xample v)-.15 E(alue w)-.25 E(ould be: ')-.1 E F2 1.666 -(systemd-ask-password \255-id)B F1(=)A F0(")A F1(tzpfms:)A F3($2)A F0 -2.5("")C F3($1)-2.5 E F1(:)A F0("'.)6 E F4 1.666 -(TPM2 back-end con\214guration)72 294 R(En)84 306 Q(vir)-.4 E .625 -(onment v)-.18 F(ariables)-.1 E F1(TSS2_LOG)102 318 Q F0(An)155 318 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 342 R F0 .516 -(The library)102 354 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 F1(libtss2-tcti-)3.017 E/F5 10/Symbol SF(*)A F1(.so)A F0 -(libraries)3.017 E .576(to select the def)102 366 R .576 -(ault, otherwise)-.1 F F1(/dev/tpmrm0)3.076 E F0 3.076(,t)C(hen)-3.076 E -F1(/dev/tpm0)3.076 E F0 3.076(,t)C(hen)-3.076 E F1(localhost:2321)3.076 -E F0 .575(will be tried,)3.076 F(in order)102 378 Q 1.666(\(s)4.166 G -(ee)-1.666 E F1(ESYS_CONTEXT)2.5 E F0 -.834(\(3\) \) .)B F4 .625 -(See also)84 402 R F0 3.487(The tpm2-tss git repository at)102 414 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 426 Q +(TZPFMS_PASSPHRASE_HELPER)102 96 Q F0 1.134(If set and nonempty)143 108 +R 3.634(,w)-.65 G 1.134(ill be run via)-3.634 F F1(/bin/)3.633 E/F2 10 +/Courier-Bold@0 SF 2.799(sh \255c)B F0 1.133(to pro)3.633 F 1.133 +(vide a passphrase, instead of reading)-.15 F +(from the standard input stream.)143 120 Q .188 +(The standard output stream of the helper is tied to an anon)143 138 R +.189(ymous \214le and used in its entirety as the)-.15 F(passphrase, e) +143 150 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 +(1. Pre-formatted noun phrase with all the information belo)155 162 Q(w) +-.25 E(2. Either the dataset name or the element of the TPM hierarch)155 +174 Q -.65(y.)-.05 G(3. "ne)155 186 Q(w" if this is for a ne)-.25 E 2.5 +(wp)-.25 G(assphrase)-2.5 E(4. "ag)155 198 Q(ain" if it')-.05 E 2.5(st) +-.55 G(he second prompt for that passphrase)-2.5 E .181 +(If the helper doesn')143 216 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 10/Times-Bold@0 SF +(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 228 +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 13.14(An e)143 246 R +13.14(xample v)-.15 F 13.14(alue f)-.25 F(acilitating)-.1 E F1(systemd) +15.64 E F0 13.14(\(1\) inte)B 13.14(gration w)-.15 F 13.14(ould be: ') +-.1 F F2(exec)A 1.666(systemd-ask-password \255-id)143 258 R F1(=)A F0 +(")A F1(tzpfms:)A/F4 10/Courier-Oblique@0 SF($2)A F0 2.5("")C F4($1)-2.5 +E F1(:)A F0("'.)6 E F3 1.666(TPM2 back-end con\214guration)72 282 R(En) +84 294 Q(vir)-.4 E .625(onment v)-.18 F(ariables)-.1 E F1(TSS2_LOG)102 +306 Q F0(An)155 306 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 330 R F0 .517(The library)102 342 R F2 +(libtss2-tcti-default.so)3.017 E F0 .517(can be link)3.017 F .516 +(ed to an)-.1 F 3.016(yo)-.15 G 3.016(ft)-3.016 G(he)-3.016 E F1 +(libtss2-tcti-)3.016 E/F5 10/Symbol SF(*)A F1(.so)A F0(libraries)3.016 E +.575(to select the def)102 354 R .576(ault, otherwise)-.1 F F1 +(/dev/tpmrm0)3.076 E F0 3.076(,t)C(hen)-3.076 E F1(/dev/tpm0)3.076 E F0 +3.076(,t)C(hen)-3.076 E F1(localhost:2321)3.076 E F0 .576 +(will be tried,)3.076 F(in order)102 366 Q 1.666(\(s)4.166 G(ee)-1.666 E +F1(ESYS_CONTEXT)2.5 E F0 -.834(\(3\) \) .)B F3 .625(See also)84 390 R F0 +3.488(The tpm2-tss git repository at)102 402 R F3(https://github)5.988 E +(.com/tpm2-softwar)-.4 E(e/tpm2-tss)-.18 E F0 3.487 +(and the documentation at)5.988 F F3(https://tpm2-tss.r)102 414 Q (eadthedocs.io)-.18 E F0(.)A 3.092 -(The TPM 2.0 speci\214cations, mainly at)102 444 R F4 -(https://trustedcomputinggr)5.591 E(oup.or)-.18 E -(g/wp-content/uploads/TPM-)-.1 E(Re)102 456 Q(v-2.0-P)-.15 E(art-1-Ar) --.1 E(chitectur)-.18 E(e-01.38.pdf)-.18 E F0(and related pages.)2.5 E F4 -1.666(SPECIAL THANKS)72 480 R F0 1.6 -.8(To a)102 492 T +(The TPM 2.0 speci\214cations, mainly at)102 432 R F3 +(https://trustedcomputinggr)5.592 E(oup.or)-.18 E +(g/wp-content/uploads/TPM-)-.1 E(Re)102 444 Q(v-2.0-P)-.15 E(art-1-Ar) +-.1 E(chitectur)-.18 E(e-01.38.pdf)-.18 E F0(and related pages.)2.5 E F3 +1.666(SPECIAL THANKS)72 468 R F0 1.6 -.8(To a)102 480 T (ll who support further de).8 E -.15(ve)-.25 G(lopment, in particular:) -.15 E F4<83>122 504 Q F0(ThePhD)2.5 E F4<83>122 516 Q F0(Embark Studios) -2.5 E F4<83>122 528 Q F0(Jasper Bekk)2.5 E(ers)-.1 E F4(REPOR)72 552 Q -1.666(TING B)-.4 F(UGS)-.1 E(https://todo.sr)102 564 Q +.15 E F3<83>122 492 Q F0(ThePhD)2.5 E F3<83>122 504 Q F0(Embark Studios) +2.5 E F3<83>122 516 Q F0(Jasper Bekk)2.5 E(ers)-.1 E F3(REPOR)72 540 Q +1.666(TING B)-.4 F(UGS)-.1 E(https://todo.sr)102 552 Q (.ht/~nabijaczleweli/tzpfms)-1 E F1(~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 -F4(https://lists.sr)2.5 E(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A F4 -1.666(SEE ALSO)72 606 R F1(tpm2_unseal)102 618 Q F0(\(1\))A F4 -(https://git.sr)102 636 Q(.ht/~nabijaczleweli/tzpfms)-1 E F0 -(tzpfms 0.1-15)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 15, 2021).15 E +102 570 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 594 R F1(tpm2_unseal)102 606 Q F0(\(1\))A F3 +(https://git.sr)102 624 Q(.ht/~nabijaczleweli/tzpfms)-1 E F0 +(tzpfms 0.1-16)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 18, 2021).15 E (9)189.295 E 0 Cg EP %%Page: 10 10 %%BeginPageSetup @@ -803,85 +794,82 @@ 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.984 +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.985 E F214.651 E F4(keyformat=passphrase) -127 204 Q F3(dataset)6 E F0(,)A(2. frees the sealed k)122 216 Q .3 -.15 +(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 (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(If set and nonempty)143 294 Q 2.5 -(,w)-.65 G(ill be run as)-2.5 E F4(/bin/)173 306 Q F2 70.333(sh \255c)B -F4("$TZPFMS_PASSPHRASE_HELPER")74.667 E("$TZPFMS_PASSPHRASE_HELPER")173 -318 Q F0(")10.715 E F3 4.715(prepared prompt)B F0 7.215("")C F3(target) --7.215 E F0 7.215("")C([)-7.215 E F4(new)A F0(]")A("[)173 330 Q F4 -(again)A F0(]")A(to pro)143 342 Q -(vide a passphrase, instead of reading from the standard input.)-.15 E -.189(The standard output stream of the helper is tied to an anon)143 360 -R .188(ymous \214le and used in its entirety as the)-.15 F .446 -(passphrase, e)143 372 R .446(xcept for a trailing ne)-.15 F .446 -(w-line, if an)-.25 F 4.246 -.65(y. T)-.15 H .447(he second ar).65 F -.447(gument contains either the dataset)-.18 F 2.14 -(name or the element of the TPM hierarch)143 384 R 5.94 -.65(y. T)-.05 H -2.14(he third ar).65 F 2.14(gument is)-.18 F F4(new)4.64 E F0 2.14 -(if this is for a ne)4.64 F(w)-.25 E .573(passphrase, and the fourth is) -143 396 R F4(again)3.074 E F0 .574(if it')3.074 F 3.074(st)-.55 G .574 -(he second prompt for that passphrase.)-3.074 F .574(The \214rst ar) -5.574 F(gu-)-.18 E(ment already contains all of this information, as a \ -pre-formatted noun phrase.)143 408 Q .181(If the helper doesn')143 426 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 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(An e)143 456 Q(xample v) --.15 E(alue w)-.25 E(ould be: ')-.1 E F2 1.666 -(systemd-ask-password \255-id)B F4(=)A F0(")A F4(tzpfms:)A F3($2)A F0 -2.5("")C F3($1)-2.5 E F4(:)A F0("'.)6 E F1 1.666 -(TPM2 back-end con\214guration)72 480 R(En)84 492 Q(vir)-.4 E .625 -(onment v)-.18 F(ariables)-.1 E F4(TSS2_LOG)102 504 Q F0(An)155 504 Q +(TZPFMS_PASSPHRASE_HELPER)102 282 Q F0 1.133(If set and nonempty)143 294 +R 3.633(,w)-.65 G 1.133(ill be run via)-3.633 F F4(/bin/)3.633 E F2 +2.799(sh \255c)B F0 1.134(to pro)3.633 F 1.134 +(vide a passphrase, instead of reading)-.15 F +(from the standard input stream.)143 306 Q .189 +(The standard output stream of the helper is tied to an anon)143 324 R +.188(ymous \214le and used in its entirety as the)-.15 F(passphrase, e) +143 336 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 +(1. Pre-formatted noun phrase with all the information belo)155 348 Q(w) +-.25 E(2. Either the dataset name or the element of the TPM hierarch)155 +360 Q -.65(y.)-.05 G(3. "ne)155 372 Q(w" if this is for a ne)-.25 E 2.5 +(wp)-.25 G(assphrase)-2.5 E(4. "ag)155 384 Q(ain" if it')-.05 E 2.5(st) +-.55 G(he second prompt for that passphrase)-2.5 E .181 +(If the helper doesn')143 402 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 414 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 13.14(An e)143 432 R 13.14(xample v)-.15 F 13.14(alue f)-.25 F +(acilitating)-.1 E F4(systemd)15.64 E F0 13.14(\(1\) inte)B 13.14 +(gration w)-.15 F 13.14(ould be: ')-.1 F F2(exec)A 1.666 +(systemd-ask-password \255-id)143 444 R F4(=)A F0(")A F4(tzpfms:)A F3 +($2)A F0 2.5("")C F3($1)-2.5 E F4(:)A F0("'.)6 E F1 1.666 +(TPM2 back-end con\214guration)72 468 R(En)84 480 Q(vir)-.4 E .625 +(onment v)-.18 F(ariables)-.1 E F4(TSS2_LOG)102 492 Q F0(An)155 492 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 528 R F0 .516 -(The library)102 540 R F2(libtss2-tcti-default.so)3.016 E F0 .516 +-1.2(WA)2.5 G(RNING)1.2 E F0(.)A F1 .625(TPM selection)84 516 R F0 .516 +(The library)102 528 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 552 R .576 +(libraries)3.017 E .576(to select the def)102 540 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 564 Q 1.666(\(s)4.166 G +E F0 .575(will be tried,)3.076 F(in order)102 552 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 588 R F0 3.487(The tpm2-tss git repository at)102 600 R F1 +(See also)84 576 R F0 3.487(The tpm2-tss git repository at)102 588 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 612 Q +3.488(and the documentation at)5.988 F F1(https://tpm2-tss.r)102 600 Q (eadthedocs.io)-.18 E F0(.)A 3.092 -(The TPM 2.0 speci\214cations, mainly at)102 630 R F1 +(The TPM 2.0 speci\214cations, mainly at)102 618 R F1 (https://trustedcomputinggr)5.591 E(oup.or)-.18 E -(g/wp-content/uploads/TPM-)-.1 E(Re)102 642 Q(v-2.0-P)-.15 E(art-1-Ar) +(g/wp-content/uploads/TPM-)-.1 E(Re)102 630 Q(v-2.0-P)-.15 E(art-1-Ar) -.1 E(chitectur)-.18 E(e-01.38.pdf)-.18 E F0(and related pages.)2.5 E F1 -1.666(SPECIAL THANKS)72 666 R F0 1.6 -.8(To a)102 678 T +1.666(SPECIAL THANKS)72 654 R F0 1.6 -.8(To a)102 666 T (ll who support further de).8 E -.15(ve)-.25 G(lopment, in particular:) -.15 E(tzpfms 0.1-15)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 15, 2021) -.15 E(10)184.295 E 0 Cg EP +.15 E F1<83>122 678 Q F0(ThePhD)2.5 E(tzpfms 0.1-16)72 750 Q(No)138.745 +E -.15(ve)-.15 G(mber 18, 2021).15 E(10)184.295 E 0 Cg EP %%Page: 11 11 %%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(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 F1 1.666(SEE ALSO)72 198 R -(https://git.sr)102 210 Q(.ht/~nabijaczleweli/tzpfms)-1 E F0 -(tzpfms 0.1-15)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 15, 2021).15 E +-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 +(https://git.sr)102 198 Q(.ht/~nabijaczleweli/tzpfms)-1 E F0 +(tzpfms 0.1-16)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 18, 2021).15 E (11)184.295 E 0 Cg EP %%Page: 12 12 %%BeginPageSetup @@ -908,54 +896,51 @@ 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 F24.894 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(If set and nonempty)143 336 Q -2.5(,w)-.65 G(ill be run as)-2.5 E F4(/bin/)173 348 Q F2 70.333 -(sh \255c)B F4("$TZPFMS_PASSPHRASE_HELPER")74.667 E -("$TZPFMS_PASSPHRASE_HELPER")173 360 Q F0(")10.715 E F3 4.715 -(prepared prompt)B F0 7.215("")C F3(target)-7.215 E F0 7.215("")C([) --7.215 E F4(new)A F0(]")A("[)173 372 Q F4(again)A F0(]")A(to pro)143 384 -Q(vide a passphrase, instead of reading from the standard input.)-.15 E -.188(The standard output stream of the helper is tied to an anon)143 402 -R .189(ymous \214le and used in its entirety as the)-.15 F .447 -(passphrase, e)143 414 R .447(xcept for a trailing ne)-.15 F .447 -(w-line, if an)-.25 F 4.246 -.65(y. T)-.15 H .446(he second ar).65 F -.446(gument contains either the dataset)-.18 F 2.14 -(name or the element of the TPM hierarch)143 426 R 5.94 -.65(y. T)-.05 H -2.14(he third ar).65 F 2.14(gument is)-.18 F F4(new)4.64 E F0 2.14 -(if this is for a ne)4.64 F(w)-.25 E .574(passphrase, and the fourth is) -143 438 R F4(again)3.074 E F0 .574(if it')3.074 F 3.074(st)-.55 G .574 -(he second prompt for that passphrase.)-3.074 F .573(The \214rst ar) -5.573 F(gu-)-.18 E(ment already contains all of this information, as a \ -pre-formatted noun phrase.)143 450 Q .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(ails for an)-.1 E 2.5(yo)-.15 G -(ther reason, the prompting is aborted.)-2.5 E(An e)143 498 Q(xample v) --.15 E(alue w)-.25 E(ould be: ')-.1 E F2 1.666 -(systemd-ask-password \255-id)B F4(=)A F0(")A F4(tzpfms:)A F3($2)A F0 -2.5("")C F3($1)-2.5 E F4(:)A F0("'.)6 E F1 1.666 -(TPM1.X back-end con\214guration)72 522 R .625(TPM selection)84 534 R F0 -(The)102 546 Q F2(tzpfms)2.768 E F0 .267(suite connects to a local)2.767 +E F4(TZPFMS_PASSPHRASE_HELPER)102 324 Q F0 1.133(If set and nonempty)143 +336 R 3.633(,w)-.65 G 1.133(ill be run via)-3.633 F F4(/bin/)3.633 E F2 +2.799(sh \255c)B F0 1.134(to pro)3.633 F 1.134 +(vide a passphrase, instead of reading)-.15 F +(from the standard input stream.)143 348 Q .189 +(The standard output stream of the helper is tied to an anon)143 366 R +.188(ymous \214le and used in its entirety as the)-.15 F(passphrase, e) +143 378 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 +(1. Pre-formatted noun phrase with all the information belo)155 390 Q(w) +-.25 E(2. Either the dataset name or the element of the TPM hierarch)155 +402 Q -.65(y.)-.05 G(3. "ne)155 414 Q(w" if this is for a ne)-.25 E 2.5 +(wp)-.25 G(assphrase)-2.5 E(4. "ag)155 426 Q(ain" if it')-.05 E 2.5(st) +-.55 G(he second prompt for that passphrase)-2.5 E .181 +(If the helper doesn')143 444 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 456 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 13.14(An e)143 474 R 13.14(xample v)-.15 F 13.14(alue f)-.25 F +(acilitating)-.1 E F4(systemd)15.64 E F0 13.14(\(1\) inte)B 13.14 +(gration w)-.15 F 13.14(ould be: ')-.1 F F2(exec)A 1.666 +(systemd-ask-password \255-id)143 486 R F4(=)A F0(")A F4(tzpfms:)A F3 +($2)A F0 2.5("")C F3($1)-2.5 E F4(:)A F0("'.)6 E F1 1.666 +(TPM1.X back-end con\214guration)72 510 R .625(TPM selection)84 522 R F0 +(The)102 534 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 .267(the en-)2.767 F(vironment v)102 558 +-2.767 E 2.767(ault. Use)-.1 F .268(the en-)2.767 F(vironment v)102 546 Q(ariable)-.25 E F4(TZPFMS_TPM1X)2.5 E F0 -(to specify a remote TCS hostname.)2.5 E .391(The T)102 576 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 588 Q +(to specify a remote TCS hostname.)2.5 E .392(The T)102 564 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 576 Q (xample, shell redirection, a later one can be selected.)-.15 E F1 .625 -(See also)84 612 R F0(The T)102 624 Q(rouSerS project page at)-.35 E F1 +(See also)84 600 R F0(The T)102 612 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 -642 R 7.608(xa)-.15 G(t)-7.608 E F1(https://trustedcomputinggr)7.608 E +E(ousers)-.18 E F0(.)A 5.108(The TPM 1.2 main speci\214cation inde)102 +630 R 7.609(xa)-.15 G(t)-7.609 E F1(https://trustedcomputinggr)7.609 E (oup.or)-.18 E(g/r)-.1 E(esour)-.18 E(ce/tpm-main-)-.18 E -(speci\214cation)102 654 Q F0(.)A F1 1.666(SPECIAL THANKS)72 678 R F0 -1.6 -.8(To a)102 690 T(ll who support further de).8 E -.15(ve)-.25 G -(lopment, in particular:).15 E(tzpfms 0.1-15)72 750 Q(No)138.745 E -.15 -(ve)-.15 G(mber 15, 2021).15 E(12)184.295 E 0 Cg EP +(speci\214cation)102 642 Q F0(.)A F1 1.666(SPECIAL THANKS)72 666 R F0 +1.6 -.8(To a)102 678 T(ll who support further de).8 E -.15(ve)-.25 G +(lopment, in particular:).15 E(tzpfms 0.1-16)72 750 Q(No)138.745 E -.15 +(ve)-.15 G(mber 18, 2021).15 E(12)184.295 E 0 Cg EP %%Page: 13 13 %%BeginPageSetup BP @@ -970,7 +955,7 @@ BP (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 198 R (https://git.sr)102 210 Q(.ht/~nabijaczleweli/tzpfms)-1 E F0 -(tzpfms 0.1-15)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 15, 2021).15 E +(tzpfms 0.1-16)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 18, 2021).15 E (13)184.295 E 0 Cg EP %%Trailer end diff --git a/zfs-tpm-list.8 b/zfs-tpm-list.8 index 19ebf86..7a71c85 100644 --- a/zfs-tpm-list.8 +++ b/zfs-tpm-list.8 @@ -1,9 +1,9 @@ .\" SPDX-License-Identifier: MIT . -.Dd November 15, 2021 +.Dd November 18, 2021 .ds doc-volume-operating-system .Dt ZFS-TPM-LIST 8 -.Os tzpfms 0.1-15 +.Os tzpfms 0.1-16 . .Sh NAME .Nm zfs-tpm-list diff --git a/zfs-tpm-list.8.html b/zfs-tpm-list.8.html index 0e166ae..95a8c28 100644 --- a/zfs-tpm-list.8.html +++ b/zfs-tpm-list.8.html @@ -169,8 +169,8 @@ owo/enc TPM1.X available yes - - + +
November 15, 2021tzpfms 0.1-15November 18, 2021tzpfms 0.1-16
diff --git a/zfs-tpm1x-change-key.8 b/zfs-tpm1x-change-key.8 index 575eb89..e63dd67 100644 --- a/zfs-tpm1x-change-key.8 +++ b/zfs-tpm1x-change-key.8 @@ -1,9 +1,9 @@ .\" SPDX-License-Identifier: MIT . -.Dd November 15, 2021 +.Dd November 18, 2021 .ds doc-volume-operating-system .Dt ZFS-TPM1X-CHANGE-KEY 8 -.Os tzpfms 0.1-15 +.Os tzpfms 0.1-16 . .Sh NAME .Nm zfs-tpm1x-change-key @@ -107,26 +107,35 @@ In case of a catastrophic event, the key can be loaded by running .Sh ENVIRONMENT VARIABLES .Bl -tag -compact -width "TZPFMS" .It Ev TZPFMS_PASSPHRASE_HELPER -If set and nonempty, will be run as -.Dl Pa /bin/ Ns Nm sh Fl c Li \&"$TZPFMS_PASSPHRASE_HELPER" \&"$TZPFMS_PASSPHRASE_HELPER" Qo Ar prepared prompt Qc Qo Ar target Qc Qo Oo Li new Oc Qc Qo Oo Li again Oc Qc -to provide a passphrase, instead of reading from the standard input. +If set and nonempty, will be run via +.Pa /bin/ Ns Nm sh Fl c +.\"Li \&"$TZPFMS_PASSPHRASE_HELPER" \&"$TZPFMS_PASSPHRASE_HELPER" Qo Ar prepared prompt Qc Qo Ar target Qc Qo Oo Li new Oc Qc Qo Oo Li again Oc Qc +to provide a passphrase, instead of reading from the standard input stream. .Pp The standard output stream of the helper is tied to an anonymous file and used in its entirety as the passphrase, except for a trailing new-line, if any. -The second argument contains either the dataset name or the element of the TPM hierarchy. -The third argument is -.Li new -if this is for a new passphrase, and the fourth is -.Li again -if it's the second prompt for that passphrase. -The first argument already contains all of this information, as a pre-formatted noun phrase. +The arguments are: +.Bl -enum -compact -offset "@@" -width "@" +.It +Pre-formatted noun phrase with all the information below +.It +Either the dataset name or the element of the TPM hierarchy. +.It +.Qq new +if this is for a new passphrase +.It +.Qq again +if it's the second prompt for that passphrase +.El .Pp If the helper doesn't exist .Pq the shell exits with Sy 127 , a diagnostic is issued and the normal prompt is used as fall-back. If it fails for any other reason, the prompting is aborted. .Pp -An example value would be: -.No ' Ns Nm systemd-ask-password Fl -id Ns Li = Ns Qo Li tzpfms:\& Ns Ar $2 Qc Qo Ar $1 Ns Li ": " Qc Ns ' . +An example value facilitating +.Xr systemd 1 +integration would be: +.No ' Ns Ic exec Nm systemd-ask-password Fl -id Ns Li = Ns Qo Li tzpfms:\& Ns Ar $2 Qc Qo Ar $1 Ns Li ": " Qc Ns ' . .El . .\" SPDX-License-Identifier: MIT diff --git a/zfs-tpm1x-change-key.8.html b/zfs-tpm1x-change-key.8.html index fc032ff..969d88c 100644 --- a/zfs-tpm1x-change-key.8.html +++ b/zfs-tpm1x-change-key.8.html @@ -118,31 +118,28 @@ VARIABLES
-
If set and nonempty, will be run as -
/bin/sh - -c - "$TZPFMS_PASSPHRASE_HELPER" - "$TZPFMS_PASSPHRASE_HELPER" - "prepared prompt" - "target" - "[new]" - "[again]"
- to provide a passphrase, instead of reading from the standard input. +
If set and nonempty, will be run via + /bin/sh + -c to provide a passphrase, instead of reading + from the standard input stream.

The standard output stream of the helper is tied to an anonymous file and used in its entirety as the passphrase, except for a - trailing new-line, if any. The second argument contains either the - dataset name or the element of the TPM hierarchy. The third argument is - new if this is for a new passphrase, and the - fourth is again if it's the second prompt for - that passphrase. The first argument already contains all of this - information, as a pre-formatted noun phrase.

+ trailing new-line, if any. The arguments are:

+
    +
  1. Pre-formatted noun phrase with all the information below
  2. +
  3. Either the dataset name or the element of the TPM hierarchy.
  4. +
  5. "new" if this is for a new passphrase
  6. +
  7. "again" if it's the second prompt for that passphrase
  8. +

If the helper doesn't exist (the shell exits with ), a diagnostic is issued and the normal prompt is used as fall-back. If it fails for any other reason, the prompting is aborted.

-

An example value would be: - 'systemd-ask-password +

An example value facilitating + systemd(1) + integration would be: + 'exec + systemd-ask-password --id="tzpfms:$2" "$1: "'.

@@ -201,8 +198,8 @@ - - + +
November 15, 2021tzpfms 0.1-15November 18, 2021tzpfms 0.1-16
diff --git a/zfs-tpm1x-clear-key.8 b/zfs-tpm1x-clear-key.8 index 0ec0c6e..217d552 100644 --- a/zfs-tpm1x-clear-key.8 +++ b/zfs-tpm1x-clear-key.8 @@ -1,9 +1,9 @@ .\" SPDX-License-Identifier: MIT . -.Dd November 15, 2021 +.Dd November 18, 2021 .ds doc-volume-operating-system .Dt ZFS-TPM1X-CLEAR-KEY 8 -.Os tzpfms 0.1-15 +.Os tzpfms 0.1-16 . .Sh NAME .Nm zfs-tpm1x-clear-key diff --git a/zfs-tpm1x-clear-key.8.html b/zfs-tpm1x-clear-key.8.html index 6ef7ef3..911d327 100644 --- a/zfs-tpm1x-clear-key.8.html +++ b/zfs-tpm1x-clear-key.8.html @@ -106,8 +106,8 @@ - - + +
November 15, 2021tzpfms 0.1-15November 18, 2021tzpfms 0.1-16
diff --git a/zfs-tpm1x-load-key.8 b/zfs-tpm1x-load-key.8 index 7c368e4..eb0e6aa 100644 --- a/zfs-tpm1x-load-key.8 +++ b/zfs-tpm1x-load-key.8 @@ -1,9 +1,9 @@ .\" SPDX-License-Identifier: MIT . -.Dd November 15, 2021 +.Dd November 18, 2021 .ds doc-volume-operating-system .Dt ZFS-TPM1X-LOAD-KEY 8 -.Os tzpfms 0.1-15 +.Os tzpfms 0.1-16 . .Sh NAME .Nm zfs-tpm1x-load-key @@ -45,26 +45,35 @@ option. .Sh ENVIRONMENT VARIABLES .Bl -tag -compact -width "TZPFMS" .It Ev TZPFMS_PASSPHRASE_HELPER -If set and nonempty, will be run as -.Dl Pa /bin/ Ns Nm sh Fl c Li \&"$TZPFMS_PASSPHRASE_HELPER" \&"$TZPFMS_PASSPHRASE_HELPER" Qo Ar prepared prompt Qc Qo Ar target Qc Qo Oo Li new Oc Qc Qo Oo Li again Oc Qc -to provide a passphrase, instead of reading from the standard input. +If set and nonempty, will be run via +.Pa /bin/ Ns Nm sh Fl c +.\"Li \&"$TZPFMS_PASSPHRASE_HELPER" \&"$TZPFMS_PASSPHRASE_HELPER" Qo Ar prepared prompt Qc Qo Ar target Qc Qo Oo Li new Oc Qc Qo Oo Li again Oc Qc +to provide a passphrase, instead of reading from the standard input stream. .Pp The standard output stream of the helper is tied to an anonymous file and used in its entirety as the passphrase, except for a trailing new-line, if any. -The second argument contains either the dataset name or the element of the TPM hierarchy. -The third argument is -.Li new -if this is for a new passphrase, and the fourth is -.Li again -if it's the second prompt for that passphrase. -The first argument already contains all of this information, as a pre-formatted noun phrase. +The arguments are: +.Bl -enum -compact -offset "@@" -width "@" +.It +Pre-formatted noun phrase with all the information below +.It +Either the dataset name or the element of the TPM hierarchy. +.It +.Qq new +if this is for a new passphrase +.It +.Qq again +if it's the second prompt for that passphrase +.El .Pp If the helper doesn't exist .Pq the shell exits with Sy 127 , a diagnostic is issued and the normal prompt is used as fall-back. If it fails for any other reason, the prompting is aborted. .Pp -An example value would be: -.No ' Ns Nm systemd-ask-password Fl -id Ns Li = Ns Qo Li tzpfms:\& Ns Ar $2 Qc Qo Ar $1 Ns Li ": " Qc Ns ' . +An example value facilitating +.Xr systemd 1 +integration would be: +.No ' Ns Ic exec Nm systemd-ask-password Fl -id Ns Li = Ns Qo Li tzpfms:\& Ns Ar $2 Qc Qo Ar $1 Ns Li ": " Qc Ns ' . .El . .\" SPDX-License-Identifier: MIT diff --git a/zfs-tpm1x-load-key.8.html b/zfs-tpm1x-load-key.8.html index b11026c..8986dba 100644 --- a/zfs-tpm1x-load-key.8.html +++ b/zfs-tpm1x-load-key.8.html @@ -59,31 +59,28 @@ VARIABLES
-
If set and nonempty, will be run as -
/bin/sh - -c - "$TZPFMS_PASSPHRASE_HELPER" - "$TZPFMS_PASSPHRASE_HELPER" - "prepared prompt" - "target" - "[new]" - "[again]"
- to provide a passphrase, instead of reading from the standard input. +
If set and nonempty, will be run via + /bin/sh + -c to provide a passphrase, instead of reading + from the standard input stream.

The standard output stream of the helper is tied to an anonymous file and used in its entirety as the passphrase, except for a - trailing new-line, if any. The second argument contains either the - dataset name or the element of the TPM hierarchy. The third argument is - new if this is for a new passphrase, and the - fourth is again if it's the second prompt for - that passphrase. The first argument already contains all of this - information, as a pre-formatted noun phrase.

+ trailing new-line, if any. The arguments are:

+
    +
  1. Pre-formatted noun phrase with all the information below
  2. +
  3. Either the dataset name or the element of the TPM hierarchy.
  4. +
  5. "new" if this is for a new passphrase
  6. +
  7. "again" if it's the second prompt for that passphrase
  8. +

If the helper doesn't exist (the shell exits with ), a diagnostic is issued and the normal prompt is used as fall-back. If it fails for any other reason, the prompting is aborted.

-

An example value would be: - 'systemd-ask-password +

An example value facilitating + systemd(1) + integration would be: + 'exec + systemd-ask-password --id="tzpfms:$2" "$1: "'.

@@ -142,8 +139,8 @@ - - + +
November 15, 2021tzpfms 0.1-15November 18, 2021tzpfms 0.1-16
diff --git a/zfs-tpm2-change-key.8 b/zfs-tpm2-change-key.8 index d8e36fc..71db517 100644 --- a/zfs-tpm2-change-key.8 +++ b/zfs-tpm2-change-key.8 @@ -1,9 +1,9 @@ .\" SPDX-License-Identifier: MIT . -.Dd November 15, 2021 +.Dd November 18, 2021 .ds doc-volume-operating-system .Dt ZFS-TPM2-CHANGE-KEY 8 -.Os tzpfms 0.1-15 +.Os tzpfms 0.1-16 . .Sh NAME .Nm zfs-tpm2-change-key @@ -104,26 +104,35 @@ In case of a catastrophic event, the key can be loaded by running .Sh ENVIRONMENT VARIABLES .Bl -tag -compact -width "TZPFMS" .It Ev TZPFMS_PASSPHRASE_HELPER -If set and nonempty, will be run as -.Dl Pa /bin/ Ns Nm sh Fl c Li \&"$TZPFMS_PASSPHRASE_HELPER" \&"$TZPFMS_PASSPHRASE_HELPER" Qo Ar prepared prompt Qc Qo Ar target Qc Qo Oo Li new Oc Qc Qo Oo Li again Oc Qc -to provide a passphrase, instead of reading from the standard input. +If set and nonempty, will be run via +.Pa /bin/ Ns Nm sh Fl c +.\"Li \&"$TZPFMS_PASSPHRASE_HELPER" \&"$TZPFMS_PASSPHRASE_HELPER" Qo Ar prepared prompt Qc Qo Ar target Qc Qo Oo Li new Oc Qc Qo Oo Li again Oc Qc +to provide a passphrase, instead of reading from the standard input stream. .Pp The standard output stream of the helper is tied to an anonymous file and used in its entirety as the passphrase, except for a trailing new-line, if any. -The second argument contains either the dataset name or the element of the TPM hierarchy. -The third argument is -.Li new -if this is for a new passphrase, and the fourth is -.Li again -if it's the second prompt for that passphrase. -The first argument already contains all of this information, as a pre-formatted noun phrase. +The arguments are: +.Bl -enum -compact -offset "@@" -width "@" +.It +Pre-formatted noun phrase with all the information below +.It +Either the dataset name or the element of the TPM hierarchy. +.It +.Qq new +if this is for a new passphrase +.It +.Qq again +if it's the second prompt for that passphrase +.El .Pp If the helper doesn't exist .Pq the shell exits with Sy 127 , a diagnostic is issued and the normal prompt is used as fall-back. If it fails for any other reason, the prompting is aborted. .Pp -An example value would be: -.No ' Ns Nm systemd-ask-password Fl -id Ns Li = Ns Qo Li tzpfms:\& Ns Ar $2 Qc Qo Ar $1 Ns Li ": " Qc Ns ' . +An example value facilitating +.Xr systemd 1 +integration would be: +.No ' Ns Ic exec Nm systemd-ask-password Fl -id Ns Li = Ns Qo Li tzpfms:\& Ns Ar $2 Qc Qo Ar $1 Ns Li ": " Qc Ns ' . .El . .\" SPDX-License-Identifier: MIT diff --git a/zfs-tpm2-change-key.8.html b/zfs-tpm2-change-key.8.html index 978a728..610cfd6 100644 --- a/zfs-tpm2-change-key.8.html +++ b/zfs-tpm2-change-key.8.html @@ -117,31 +117,28 @@ VARIABLES
-
If set and nonempty, will be run as -
/bin/sh - -c - "$TZPFMS_PASSPHRASE_HELPER" - "$TZPFMS_PASSPHRASE_HELPER" - "prepared prompt" - "target" - "[new]" - "[again]"
- to provide a passphrase, instead of reading from the standard input. +
If set and nonempty, will be run via + /bin/sh + -c to provide a passphrase, instead of reading + from the standard input stream.

The standard output stream of the helper is tied to an anonymous file and used in its entirety as the passphrase, except for a - trailing new-line, if any. The second argument contains either the - dataset name or the element of the TPM hierarchy. The third argument is - new if this is for a new passphrase, and the - fourth is again if it's the second prompt for - that passphrase. The first argument already contains all of this - information, as a pre-formatted noun phrase.

+ trailing new-line, if any. The arguments are:

+
    +
  1. Pre-formatted noun phrase with all the information below
  2. +
  3. Either the dataset name or the element of the TPM hierarchy.
  4. +
  5. "new" if this is for a new passphrase
  6. +
  7. "again" if it's the second prompt for that passphrase
  8. +

If the helper doesn't exist (the shell exits with ), a diagnostic is issued and the normal prompt is used as fall-back. If it fails for any other reason, the prompting is aborted.

-

An example value would be: - 'systemd-ask-password +

An example value facilitating + systemd(1) + integration would be: + 'exec + systemd-ask-password --id="tzpfms:$2" "$1: "'.

@@ -214,8 +211,8 @@ - - + +
November 15, 2021tzpfms 0.1-15November 18, 2021tzpfms 0.1-16
diff --git a/zfs-tpm2-clear-key.8 b/zfs-tpm2-clear-key.8 index ad0945f..f5d53e6 100644 --- a/zfs-tpm2-clear-key.8 +++ b/zfs-tpm2-clear-key.8 @@ -1,9 +1,9 @@ .\" SPDX-License-Identifier: MIT . -.Dd November 15, 2021 +.Dd November 18, 2021 .ds doc-volume-operating-system .Dt ZFS-TPM2-CLEAR-KEY 8 -.Os tzpfms 0.1-15 +.Os tzpfms 0.1-16 . .Sh NAME .Nm zfs-tpm2-clear-key @@ -42,26 +42,35 @@ for a detailed description. .Sh ENVIRONMENT VARIABLES .Bl -tag -compact -width "TZPFMS" .It Ev TZPFMS_PASSPHRASE_HELPER -If set and nonempty, will be run as -.Dl Pa /bin/ Ns Nm sh Fl c Li \&"$TZPFMS_PASSPHRASE_HELPER" \&"$TZPFMS_PASSPHRASE_HELPER" Qo Ar prepared prompt Qc Qo Ar target Qc Qo Oo Li new Oc Qc Qo Oo Li again Oc Qc -to provide a passphrase, instead of reading from the standard input. +If set and nonempty, will be run via +.Pa /bin/ Ns Nm sh Fl c +.\"Li \&"$TZPFMS_PASSPHRASE_HELPER" \&"$TZPFMS_PASSPHRASE_HELPER" Qo Ar prepared prompt Qc Qo Ar target Qc Qo Oo Li new Oc Qc Qo Oo Li again Oc Qc +to provide a passphrase, instead of reading from the standard input stream. .Pp The standard output stream of the helper is tied to an anonymous file and used in its entirety as the passphrase, except for a trailing new-line, if any. -The second argument contains either the dataset name or the element of the TPM hierarchy. -The third argument is -.Li new -if this is for a new passphrase, and the fourth is -.Li again -if it's the second prompt for that passphrase. -The first argument already contains all of this information, as a pre-formatted noun phrase. +The arguments are: +.Bl -enum -compact -offset "@@" -width "@" +.It +Pre-formatted noun phrase with all the information below +.It +Either the dataset name or the element of the TPM hierarchy. +.It +.Qq new +if this is for a new passphrase +.It +.Qq again +if it's the second prompt for that passphrase +.El .Pp If the helper doesn't exist .Pq the shell exits with Sy 127 , a diagnostic is issued and the normal prompt is used as fall-back. If it fails for any other reason, the prompting is aborted. .Pp -An example value would be: -.No ' Ns Nm systemd-ask-password Fl -id Ns Li = Ns Qo Li tzpfms:\& Ns Ar $2 Qc Qo Ar $1 Ns Li ": " Qc Ns ' . +An example value facilitating +.Xr systemd 1 +integration would be: +.No ' Ns Ic exec Nm systemd-ask-password Fl -id Ns Li = Ns Qo Li tzpfms:\& Ns Ar $2 Qc Qo Ar $1 Ns Li ": " Qc Ns ' . .El . .\" SPDX-License-Identifier: MIT diff --git a/zfs-tpm2-clear-key.8.html b/zfs-tpm2-clear-key.8.html index db10327..6406a08 100644 --- a/zfs-tpm2-clear-key.8.html +++ b/zfs-tpm2-clear-key.8.html @@ -60,31 +60,28 @@ VARIABLES
-
If set and nonempty, will be run as -
/bin/sh - -c - "$TZPFMS_PASSPHRASE_HELPER" - "$TZPFMS_PASSPHRASE_HELPER" - "prepared prompt" - "target" - "[new]" - "[again]"
- to provide a passphrase, instead of reading from the standard input. +
If set and nonempty, will be run via + /bin/sh + -c to provide a passphrase, instead of reading + from the standard input stream.

The standard output stream of the helper is tied to an anonymous file and used in its entirety as the passphrase, except for a - trailing new-line, if any. The second argument contains either the - dataset name or the element of the TPM hierarchy. The third argument is - new if this is for a new passphrase, and the - fourth is again if it's the second prompt for - that passphrase. The first argument already contains all of this - information, as a pre-formatted noun phrase.

+ trailing new-line, if any. The arguments are:

+
    +
  1. Pre-formatted noun phrase with all the information below
  2. +
  3. Either the dataset name or the element of the TPM hierarchy.
  4. +
  5. "new" if this is for a new passphrase
  6. +
  7. "again" if it's the second prompt for that passphrase
  8. +

If the helper doesn't exist (the shell exits with ), a diagnostic is issued and the normal prompt is used as fall-back. If it fails for any other reason, the prompting is aborted.

-

An example value would be: - 'systemd-ask-password +

An example value facilitating + systemd(1) + integration would be: + 'exec + systemd-ask-password --id="tzpfms:$2" "$1: "'.

@@ -156,8 +153,8 @@ - - + +
November 15, 2021tzpfms 0.1-15November 18, 2021tzpfms 0.1-16
diff --git a/zfs-tpm2-load-key.8 b/zfs-tpm2-load-key.8 index a62e681..a0f4fb7 100644 --- a/zfs-tpm2-load-key.8 +++ b/zfs-tpm2-load-key.8 @@ -1,9 +1,9 @@ .\" SPDX-License-Identifier: MIT . -.Dd November 15, 2021 +.Dd November 18, 2021 .ds doc-volume-operating-system .Dt ZFS-TPM2-LOAD-KEY 8 -.Os tzpfms 0.1-15 +.Os tzpfms 0.1-16 . .Sh NAME .Nm zfs-tpm2-load-key @@ -44,26 +44,35 @@ option. .Sh ENVIRONMENT VARIABLES .Bl -tag -compact -width "TZPFMS" .It Ev TZPFMS_PASSPHRASE_HELPER -If set and nonempty, will be run as -.Dl Pa /bin/ Ns Nm sh Fl c Li \&"$TZPFMS_PASSPHRASE_HELPER" \&"$TZPFMS_PASSPHRASE_HELPER" Qo Ar prepared prompt Qc Qo Ar target Qc Qo Oo Li new Oc Qc Qo Oo Li again Oc Qc -to provide a passphrase, instead of reading from the standard input. +If set and nonempty, will be run via +.Pa /bin/ Ns Nm sh Fl c +.\"Li \&"$TZPFMS_PASSPHRASE_HELPER" \&"$TZPFMS_PASSPHRASE_HELPER" Qo Ar prepared prompt Qc Qo Ar target Qc Qo Oo Li new Oc Qc Qo Oo Li again Oc Qc +to provide a passphrase, instead of reading from the standard input stream. .Pp The standard output stream of the helper is tied to an anonymous file and used in its entirety as the passphrase, except for a trailing new-line, if any. -The second argument contains either the dataset name or the element of the TPM hierarchy. -The third argument is -.Li new -if this is for a new passphrase, and the fourth is -.Li again -if it's the second prompt for that passphrase. -The first argument already contains all of this information, as a pre-formatted noun phrase. +The arguments are: +.Bl -enum -compact -offset "@@" -width "@" +.It +Pre-formatted noun phrase with all the information below +.It +Either the dataset name or the element of the TPM hierarchy. +.It +.Qq new +if this is for a new passphrase +.It +.Qq again +if it's the second prompt for that passphrase +.El .Pp If the helper doesn't exist .Pq the shell exits with Sy 127 , a diagnostic is issued and the normal prompt is used as fall-back. If it fails for any other reason, the prompting is aborted. .Pp -An example value would be: -.No ' Ns Nm systemd-ask-password Fl -id Ns Li = Ns Qo Li tzpfms:\& Ns Ar $2 Qc Qo Ar $1 Ns Li ": " Qc Ns ' . +An example value facilitating +.Xr systemd 1 +integration would be: +.No ' Ns Ic exec Nm systemd-ask-password Fl -id Ns Li = Ns Qo Li tzpfms:\& Ns Ar $2 Qc Qo Ar $1 Ns Li ": " Qc Ns ' . .El . .\" SPDX-License-Identifier: MIT diff --git a/zfs-tpm2-load-key.8.html b/zfs-tpm2-load-key.8.html index a686cc6..8c13e71 100644 --- a/zfs-tpm2-load-key.8.html +++ b/zfs-tpm2-load-key.8.html @@ -58,31 +58,28 @@ VARIABLES
-
If set and nonempty, will be run as -
/bin/sh - -c - "$TZPFMS_PASSPHRASE_HELPER" - "$TZPFMS_PASSPHRASE_HELPER" - "prepared prompt" - "target" - "[new]" - "[again]"
- to provide a passphrase, instead of reading from the standard input. +
If set and nonempty, will be run via + /bin/sh + -c to provide a passphrase, instead of reading + from the standard input stream.

The standard output stream of the helper is tied to an anonymous file and used in its entirety as the passphrase, except for a - trailing new-line, if any. The second argument contains either the - dataset name or the element of the TPM hierarchy. The third argument is - new if this is for a new passphrase, and the - fourth is again if it's the second prompt for - that passphrase. The first argument already contains all of this - information, as a pre-formatted noun phrase.

+ trailing new-line, if any. The arguments are:

+
    +
  1. Pre-formatted noun phrase with all the information below
  2. +
  3. Either the dataset name or the element of the TPM hierarchy.
  4. +
  5. "new" if this is for a new passphrase
  6. +
  7. "again" if it's the second prompt for that passphrase
  8. +

If the helper doesn't exist (the shell exits with ), a diagnostic is issued and the normal prompt is used as fall-back. If it fails for any other reason, the prompting is aborted.

-

An example value would be: - 'systemd-ask-password +

An example value facilitating + systemd(1) + integration would be: + 'exec + systemd-ask-password --id="tzpfms:$2" "$1: "'.

@@ -141,8 +138,8 @@ - - + +
November 15, 2021tzpfms 0.1-15November 18, 2021tzpfms 0.1-16