Marco Ricci commited on 2024-10-21 15:11:06
Zeige 18 geänderte Dateien mit 292 Einfügungen und 93 Löschungen.
... | ... |
@@ -104,7 +104,7 @@ |
104 | 104 |
|
105 | 105 |
|
106 | 106 |
<li class="md-tabs__item"> |
107 |
- <a href="/derivepassphrase/0.x/tutorials/basic-setup-password/" class="md-tabs__link"> |
|
107 |
+ <a href="/derivepassphrase/0.x/tutorials/basic-setup-passphrase/" class="md-tabs__link"> |
|
108 | 108 |
|
109 | 109 |
|
110 | 110 |
|
... | ... |
@@ -270,7 +270,7 @@ |
270 | 270 |
|
271 | 271 |
|
272 | 272 |
<li class="md-nav__item"> |
273 |
- <a href="/derivepassphrase/0.x/tutorials/basic-setup-password/" class="md-nav__link"> |
|
273 |
+ <a href="/derivepassphrase/0.x/tutorials/basic-setup-passphrase/" class="md-nav__link"> |
|
274 | 274 |
|
275 | 275 |
|
276 | 276 |
<span class="md-ellipsis"> |
... | ... |
@@ -22,7 +22,7 @@ |
22 | 22 |
|
23 | 23 |
|
24 | 24 |
|
25 |
- <title>Some ideas for documentation that might be missing, or nice to have - derivepassphrase</title> |
|
25 |
+ <title>Some ideas for future work - derivepassphrase</title> |
|
26 | 26 |
|
27 | 27 |
|
28 | 28 |
|
... | ... |
@@ -61,7 +61,7 @@ |
61 | 61 |
<div data-md-component="skip"> |
62 | 62 |
|
63 | 63 |
|
64 |
- <a href="#some-ideas-for-documentation-that-might-be-missing-or-nice-to-have" class="md-skip"> |
|
64 |
+ <a href="#some-ideas-for-future-work" class="md-skip"> |
|
65 | 65 |
Skip to content |
66 | 66 |
</a> |
67 | 67 |
|
... | ... |
@@ -111,7 +111,7 @@ |
111 | 111 |
|
112 | 112 |
|
113 | 113 |
<li class="md-tabs__item"> |
114 |
- <a href="../tutorials/basic-setup-password/" class="md-tabs__link"> |
|
114 |
+ <a href="../tutorials/basic-setup-passphrase/" class="md-tabs__link"> |
|
115 | 115 |
|
116 | 116 |
|
117 | 117 |
|
... | ... |
@@ -277,7 +277,7 @@ |
277 | 277 |
|
278 | 278 |
|
279 | 279 |
<li class="md-nav__item"> |
280 |
- <a href="../tutorials/basic-setup-password/" class="md-nav__link"> |
|
280 |
+ <a href="../tutorials/basic-setup-passphrase/" class="md-nav__link"> |
|
281 | 281 |
|
282 | 282 |
|
283 | 283 |
<span class="md-ellipsis"> |
... | ... |
@@ -689,6 +689,49 @@ |
689 | 689 |
</label> |
690 | 690 |
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> |
691 | 691 |
|
692 |
+ <li class="md-nav__item"> |
|
693 |
+ <a href="#subcommands" class="md-nav__link"> |
|
694 |
+ <span class="md-ellipsis"> |
|
695 |
+ Subcommands |
|
696 |
+ </span> |
|
697 |
+ </a> |
|
698 |
+ |
|
699 |
+ <nav class="md-nav" aria-label="Subcommands"> |
|
700 |
+ <ul class="md-nav__list"> |
|
701 |
+ |
|
702 |
+ <li class="md-nav__item"> |
|
703 |
+ <a href="#derivation-schemes" class="md-nav__link"> |
|
704 |
+ <span class="md-ellipsis"> |
|
705 |
+ Derivation schemes |
|
706 |
+ </span> |
|
707 |
+ </a> |
|
708 |
+ |
|
709 |
+</li> |
|
710 |
+ |
|
711 |
+ <li class="md-nav__item"> |
|
712 |
+ <a href="#other-functionality" class="md-nav__link"> |
|
713 |
+ <span class="md-ellipsis"> |
|
714 |
+ Other functionality |
|
715 |
+ </span> |
|
716 |
+ </a> |
|
717 |
+ |
|
718 |
+</li> |
|
719 |
+ |
|
720 |
+ </ul> |
|
721 |
+ </nav> |
|
722 |
+ |
|
723 |
+</li> |
|
724 |
+ |
|
725 |
+ <li class="md-nav__item"> |
|
726 |
+ <a href="#documentation" class="md-nav__link"> |
|
727 |
+ <span class="md-ellipsis"> |
|
728 |
+ Documentation |
|
729 |
+ </span> |
|
730 |
+ </a> |
|
731 |
+ |
|
732 |
+ <nav class="md-nav" aria-label="Documentation"> |
|
733 |
+ <ul class="md-nav__list"> |
|
734 |
+ |
|
692 | 735 |
<li class="md-nav__item"> |
693 | 736 |
<a href="#tutorials" class="md-nav__link"> |
694 | 737 |
<span class="md-ellipsis"> |
... | ... |
@@ -723,6 +766,11 @@ |
723 | 766 |
</span> |
724 | 767 |
</a> |
725 | 768 |
|
769 |
+</li> |
|
770 |
+ |
|
771 |
+ </ul> |
|
772 |
+ </nav> |
|
773 |
+ |
|
726 | 774 |
</li> |
727 | 775 |
|
728 | 776 |
</ul> |
... | ... |
@@ -751,27 +799,71 @@ |
751 | 799 |
|
752 | 800 |
|
753 | 801 |
|
754 |
-<h1 id="some-ideas-for-documentation-that-might-be-missing-or-nice-to-have">Some ideas for documentation that might be missing, or nice to have<a class="headerlink" href="#some-ideas-for-documentation-that-might-be-missing-or-nice-to-have" title="Permanent link">¶</a></h1> |
|
802 |
+<h1 id="some-ideas-for-future-work">Some ideas for future work<a class="headerlink" href="#some-ideas-for-future-work" title="Permanent link">¶</a></h1> |
|
803 |
+<h2 id="subcommands">Subcommands<a class="headerlink" href="#subcommands" title="Permanent link">¶</a></h2> |
|
804 |
+<p>(In no particular order.)</p> |
|
805 |
+<h3 id="derivation-schemes">Derivation schemes<a class="headerlink" href="#derivation-schemes" title="Permanent link">¶</a></h3> |
|
806 |
+<ul> |
|
807 |
+<li><code>spectre</code> (<code>master-password</code>): derive passphrases according to the “Master Password” scheme as used by the Spectre app. (<a href="https://github.com/the-13th-letter/derivepassphrase/issues/2">#2</a>)</li> |
|
808 |
+</ul> |
|
809 |
+<h3 id="other-functionality">Other functionality<a class="headerlink" href="#other-functionality" title="Permanent link">¶</a></h3> |
|
810 |
+<ul> |
|
811 |
+<li><code>explore-permitted-special-characters</code>: generate new configurations starting from a base configuration until one of them passes the “special characters” constraints.</li> |
|
812 |
+<li><code>rotate</code>: generate a new configuration suitable for passphrase rotation, compatible with the base configuration’s constraints.</li> |
|
813 |
+<li> |
|
814 |
+<p><code>service-plugins</code>: manage plugins that automate certain tasks, as outlined in the notes of the queried service.</p> |
|
815 |
+<ul> |
|
816 |
+<li> |
|
817 |
+<p><code>load-ssh-key</code>: if the service uses an SSH key, autoload the key from a well-known location into the SSH agent if it isn’t already loaded.</p> |
|
818 |
+<p><code>vault</code>-specific.</p> |
|
819 |
+</li> |
|
820 |
+<li> |
|
821 |
+<p><code>decrypt-notes</code>: decrypt OpenPGP-encrypted notes with GnuPG or Sequoia <code>sq</code>.</p> |
|
822 |
+<p>Open questions:</p> |
|
823 |
+<ul> |
|
824 |
+<li>Use an automatic, symmetric encryption key, or rely on the standard OpenPGP key store? (Do <em>not</em> use the derived service passphrase for this: the quality may be arbitrarily bad due to the passphrase constaints, and the service itself could compromise that passphrase.)</li> |
|
825 |
+</ul> |
|
826 |
+</li> |
|
827 |
+<li> |
|
828 |
+<p><code>generate-otp</code>: if the service uses two-factor authentication and the configuration contains one-time password settings, call <code>oathtool</code> to obtain one or more OTPs.</p> |
|
829 |
+<p>May require the <code>decrypt-notes</code> plugin first.</p> |
|
830 |
+</li> |
|
831 |
+<li> |
|
832 |
+<p><code>manage-runit-services</code>: if the service contains <code>runit</code> service configuration, ensure the specified <code>runit</code> services are running concurrently, and stopped after signalling.</p> |
|
833 |
+<p>Typical use case is a service only accessible via VPN or SSH proxy, where the VPN/proxy would run as a <code>runit</code> service.</p> |
|
834 |
+<p>Open questions:</p> |
|
835 |
+<ul> |
|
836 |
+<li>Interface with <code>inotifywait</code> to wait for SSH control socket?</li> |
|
837 |
+</ul> |
|
838 |
+</li> |
|
839 |
+</ul> |
|
840 |
+</li> |
|
841 |
+</ul> |
|
842 |
+<h2 id="documentation">Documentation<a class="headerlink" href="#documentation" title="Permanent link">¶</a></h2> |
|
755 | 843 |
<p>(Categorized as per <a href="https://diataxis.fr">the diataxis framework</a>, but otherwise in no particular order.)</p> |
756 |
-<h2 id="tutorials">Tutorials<a class="headerlink" href="#tutorials" title="Permanent link">¶</a></h2> |
|
844 |
+<h3 id="tutorials">Tutorials<a class="headerlink" href="#tutorials" title="Permanent link">¶</a></h3> |
|
757 | 845 |
<ul> |
758 |
-<li><a href="../tutorials/basic-setup-password/">Setting up <code>derivepassphrase</code> from scratch for three existing accounts, with a master passphrase</a></li> |
|
846 |
+<li><a href="../tutorials/basic-setup-passphrase/">Setting up <code>derivepassphrase</code> from scratch for three existing accounts, with a master passphrase</a></li> |
|
759 | 847 |
<li>Setting up <code>derivepassphrase</code> from scratch for three existing accounts, with a new SSH key</li> |
760 | 848 |
</ul> |
761 |
-<h2 id="how-tos">How-tos<a class="headerlink" href="#how-tos" title="Permanent link">¶</a></h2> |
|
849 |
+<h3 id="how-tos">How-tos<a class="headerlink" href="#how-tos" title="Permanent link">¶</a></h3> |
|
762 | 850 |
<ul> |
763 | 851 |
<li>How to set up <code>derivepassphrase</code> with an SSH key</li> |
764 | 852 |
<li>How to choose a good service name</li> |
765 | 853 |
<li>How to edit a saved <code>derivepassphrase vault</code> configuration correctly</li> |
854 |
+<li>How to deal with “supported” and “unsupported” special characters</li> |
|
855 |
+<li>How to deal with regular passphrase rotation/rollover</li> |
|
766 | 856 |
</ul> |
767 |
-<h2 id="reference">Reference<a class="headerlink" href="#reference" title="Permanent link">¶</a></h2> |
|
857 |
+<h3 id="reference">Reference<a class="headerlink" href="#reference" title="Permanent link">¶</a></h3> |
|
768 | 858 |
<ul> |
769 |
-<li><code>derivepassphrase-vault.conf</code>(<b>5</b>)</li> |
|
859 |
+<li><code>derivepassphrase-vault.json</code>(<b>5</b>)</li> |
|
770 | 860 |
</ul> |
771 |
-<h2 id="explanation">Explanation<a class="headerlink" href="#explanation" title="Permanent link">¶</a></h2> |
|
861 |
+<h3 id="explanation">Explanation<a class="headerlink" href="#explanation" title="Permanent link">¶</a></h3> |
|
772 | 862 |
<ul> |
773 | 863 |
<li>Security aspects and other tradeoffs when using deterministic password generators</li> |
774 | 864 |
<li>Tradeoffs between a master passphrase and a master SSH key</li> |
865 |
+<li>Why is <code>vault</code>’s <code>--repeat</code> option named this way if it counts occurrences, not repetitions?</li> |
|
866 |
+<li>Why are master SSH keys not supported under Windows?</li> |
|
775 | 867 |
</ul> |
776 | 868 |
|
777 | 869 |
|
... | ... |
@@ -113,7 +113,7 @@ |
113 | 113 |
|
114 | 114 |
|
115 | 115 |
<li class="md-tabs__item"> |
116 |
- <a href="../tutorials/basic-setup-password/" class="md-tabs__link"> |
|
116 |
+ <a href="../tutorials/basic-setup-passphrase/" class="md-tabs__link"> |
|
117 | 117 |
|
118 | 118 |
|
119 | 119 |
|
... | ... |
@@ -281,7 +281,7 @@ |
281 | 281 |
|
282 | 282 |
|
283 | 283 |
<li class="md-nav__item"> |
284 |
- <a href="../tutorials/basic-setup-password/" class="md-nav__link"> |
|
284 |
+ <a href="../tutorials/basic-setup-passphrase/" class="md-nav__link"> |
|
285 | 285 |
|
286 | 286 |
|
287 | 287 |
<span class="md-ellipsis"> |
... | ... |
@@ -699,6 +699,30 @@ |
699 | 699 |
</label> |
700 | 700 |
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> |
701 | 701 |
|
702 |
+ <li class="md-nav__item"> |
|
703 |
+ <a href="#031-2024-10-21" class="md-nav__link"> |
|
704 |
+ <span class="md-ellipsis"> |
|
705 |
+ 0.3.1 (2024-10-21) |
|
706 |
+ </span> |
|
707 |
+ </a> |
|
708 |
+ |
|
709 |
+ <nav class="md-nav" aria-label="0.3.1 (2024-10-21)"> |
|
710 |
+ <ul class="md-nav__list"> |
|
711 |
+ |
|
712 |
+ <li class="md-nav__item"> |
|
713 |
+ <a href="#fixed" class="md-nav__link"> |
|
714 |
+ <span class="md-ellipsis"> |
|
715 |
+ Fixed |
|
716 |
+ </span> |
|
717 |
+ </a> |
|
718 |
+ |
|
719 |
+</li> |
|
720 |
+ |
|
721 |
+ </ul> |
|
722 |
+ </nav> |
|
723 |
+ |
|
724 |
+</li> |
|
725 |
+ |
|
702 | 726 |
<li class="md-nav__item"> |
703 | 727 |
<a href="#030-2024-10-15" class="md-nav__link"> |
704 | 728 |
<span class="md-ellipsis"> |
... | ... |
@@ -728,7 +752,7 @@ |
728 | 752 |
</li> |
729 | 753 |
|
730 | 754 |
<li class="md-nav__item"> |
731 |
- <a href="#fixed" class="md-nav__link"> |
|
755 |
+ <a href="#fixed_1" class="md-nav__link"> |
|
732 | 756 |
<span class="md-ellipsis"> |
733 | 757 |
Fixed |
734 | 758 |
</span> |
... | ... |
@@ -761,7 +785,7 @@ |
761 | 785 |
</li> |
762 | 786 |
|
763 | 787 |
<li class="md-nav__item"> |
764 |
- <a href="#fixed_1" class="md-nav__link"> |
|
788 |
+ <a href="#fixed_2" class="md-nav__link"> |
|
765 | 789 |
<span class="md-ellipsis"> |
766 | 790 |
Fixed |
767 | 791 |
</span> |
... | ... |
@@ -803,7 +827,7 @@ |
803 | 827 |
<ul class="md-nav__list"> |
804 | 828 |
|
805 | 829 |
<li class="md-nav__item"> |
806 |
- <a href="#fixed_2" class="md-nav__link"> |
|
830 |
+ <a href="#fixed_3" class="md-nav__link"> |
|
807 | 831 |
<span class="md-ellipsis"> |
808 | 832 |
Fixed |
809 | 833 |
</span> |
... | ... |
@@ -827,7 +851,7 @@ |
827 | 851 |
<ul class="md-nav__list"> |
828 | 852 |
|
829 | 853 |
<li class="md-nav__item"> |
830 |
- <a href="#fixed_3" class="md-nav__link"> |
|
854 |
+ <a href="#fixed_4" class="md-nav__link"> |
|
831 | 855 |
<span class="md-ellipsis"> |
832 | 856 |
Fixed |
833 | 857 |
</span> |
... | ... |
@@ -851,7 +875,7 @@ |
851 | 875 |
<ul class="md-nav__list"> |
852 | 876 |
|
853 | 877 |
<li class="md-nav__item"> |
854 |
- <a href="#fixed_4" class="md-nav__link"> |
|
878 |
+ <a href="#fixed_5" class="md-nav__link"> |
|
855 | 879 |
<span class="md-ellipsis"> |
856 | 880 |
Fixed |
857 | 881 |
</span> |
... | ... |
@@ -922,6 +946,30 @@ |
922 | 946 |
</label> |
923 | 947 |
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> |
924 | 948 |
|
949 |
+ <li class="md-nav__item"> |
|
950 |
+ <a href="#031-2024-10-21" class="md-nav__link"> |
|
951 |
+ <span class="md-ellipsis"> |
|
952 |
+ 0.3.1 (2024-10-21) |
|
953 |
+ </span> |
|
954 |
+ </a> |
|
955 |
+ |
|
956 |
+ <nav class="md-nav" aria-label="0.3.1 (2024-10-21)"> |
|
957 |
+ <ul class="md-nav__list"> |
|
958 |
+ |
|
959 |
+ <li class="md-nav__item"> |
|
960 |
+ <a href="#fixed" class="md-nav__link"> |
|
961 |
+ <span class="md-ellipsis"> |
|
962 |
+ Fixed |
|
963 |
+ </span> |
|
964 |
+ </a> |
|
965 |
+ |
|
966 |
+</li> |
|
967 |
+ |
|
968 |
+ </ul> |
|
969 |
+ </nav> |
|
970 |
+ |
|
971 |
+</li> |
|
972 |
+ |
|
925 | 973 |
<li class="md-nav__item"> |
926 | 974 |
<a href="#030-2024-10-15" class="md-nav__link"> |
927 | 975 |
<span class="md-ellipsis"> |
... | ... |
@@ -951,7 +999,7 @@ |
951 | 999 |
</li> |
952 | 1000 |
|
953 | 1001 |
<li class="md-nav__item"> |
954 |
- <a href="#fixed" class="md-nav__link"> |
|
1002 |
+ <a href="#fixed_1" class="md-nav__link"> |
|
955 | 1003 |
<span class="md-ellipsis"> |
956 | 1004 |
Fixed |
957 | 1005 |
</span> |
... | ... |
@@ -984,7 +1032,7 @@ |
984 | 1032 |
</li> |
985 | 1033 |
|
986 | 1034 |
<li class="md-nav__item"> |
987 |
- <a href="#fixed_1" class="md-nav__link"> |
|
1035 |
+ <a href="#fixed_2" class="md-nav__link"> |
|
988 | 1036 |
<span class="md-ellipsis"> |
989 | 1037 |
Fixed |
990 | 1038 |
</span> |
... | ... |
@@ -1026,7 +1074,7 @@ |
1026 | 1074 |
<ul class="md-nav__list"> |
1027 | 1075 |
|
1028 | 1076 |
<li class="md-nav__item"> |
1029 |
- <a href="#fixed_2" class="md-nav__link"> |
|
1077 |
+ <a href="#fixed_3" class="md-nav__link"> |
|
1030 | 1078 |
<span class="md-ellipsis"> |
1031 | 1079 |
Fixed |
1032 | 1080 |
</span> |
... | ... |
@@ -1050,7 +1098,7 @@ |
1050 | 1098 |
<ul class="md-nav__list"> |
1051 | 1099 |
|
1052 | 1100 |
<li class="md-nav__item"> |
1053 |
- <a href="#fixed_3" class="md-nav__link"> |
|
1101 |
+ <a href="#fixed_4" class="md-nav__link"> |
|
1054 | 1102 |
<span class="md-ellipsis"> |
1055 | 1103 |
Fixed |
1056 | 1104 |
</span> |
... | ... |
@@ -1074,7 +1122,7 @@ |
1074 | 1122 |
<ul class="md-nav__list"> |
1075 | 1123 |
|
1076 | 1124 |
<li class="md-nav__item"> |
1077 |
- <a href="#fixed_4" class="md-nav__link"> |
|
1125 |
+ <a href="#fixed_5" class="md-nav__link"> |
|
1078 | 1126 |
<span class="md-ellipsis"> |
1079 | 1127 |
Fixed |
1080 | 1128 |
</span> |
... | ... |
@@ -1161,6 +1209,15 @@ effectively constitute a new <q>major</q> release.) |
1161 | 1209 |
</aside> |
1162 | 1210 |
<!-- scriv changelog start --> |
1163 | 1211 |
|
1212 |
+<h2 id="031-2024-10-21">0.3.1 (2024-10-21)<a class="headerlink" href="#031-2024-10-21" title="Permanent link">¶</a></h2> |
|
1213 |
+<h3 id="fixed">Fixed<a class="headerlink" href="#fixed" title="Permanent link">¶</a></h3> |
|
1214 |
+<ul> |
|
1215 |
+<li>Improve the <a href="../tutorials/basic-setup-passphrase/">basic setup (passphrase)</a> |
|
1216 |
+ tutorial. Also incorporate feedback.</li> |
|
1217 |
+<li>Fix PyPI classification: Python 3.9 is supported.</li> |
|
1218 |
+<li><em>Actually</em> remove the <code>derivepassphrase_export</code> program, which was |
|
1219 |
+ turned into a subcommand in v0.2.0.</li> |
|
1220 |
+</ul> |
|
1164 | 1221 |
<h2 id="030-2024-10-15">0.3.0 (2024-10-15)<a class="headerlink" href="#030-2024-10-15" title="Permanent link">¶</a></h2> |
1165 | 1222 |
<h3 id="added">Added<a class="headerlink" href="#added" title="Permanent link">¶</a></h3> |
1166 | 1223 |
<ul> |
... | ... |
@@ -1252,7 +1309,7 @@ configuration with such falsy values will still generate errors when |
1252 | 1309 |
</ul> |
1253 | 1310 |
</li> |
1254 | 1311 |
</ul> |
1255 |
-<h3 id="fixed">Fixed<a class="headerlink" href="#fixed" title="Permanent link">¶</a></h3> |
|
1312 |
+<h3 id="fixed_1">Fixed<a class="headerlink" href="#fixed_1" title="Permanent link">¶</a></h3> |
|
1256 | 1313 |
<ul> |
1257 | 1314 |
<li>Fixed the textual description of the return value for |
1258 | 1315 |
<a class="autorefs autorefs-internal" href="../reference/derivepassphrase.ssh_agent/#derivepassphrase.ssh_agent.SSHAgentClient.request"><code>SSHAgentClient.request</code></a>, |
... | ... |
@@ -1268,7 +1325,7 @@ configuration with such falsy values will still generate errors when |
1268 | 1325 |
even if <code>vault</code> is not installed. (<a href="https://github.com/the-13th-letter/derivepassphrase/1">#1</a>)</p> |
1269 | 1326 |
</li> |
1270 | 1327 |
</ul> |
1271 |
-<h3 id="fixed_1">Fixed<a class="headerlink" href="#fixed_1" title="Permanent link">¶</a></h3> |
|
1328 |
+<h3 id="fixed_2">Fixed<a class="headerlink" href="#fixed_2" title="Permanent link">¶</a></h3> |
|
1272 | 1329 |
<ul> |
1273 | 1330 |
<li>Deploy versioned documentation with <a href="https://pypi.org/project/mike">mike</a>. Set up a “latest” tag and |
1274 | 1331 |
the “0.<var>x</var>” version of the documentation with the contents so |
... | ... |
@@ -1311,7 +1368,7 @@ global settings file if no subsystem-specific configuration was found. |
1311 | 1368 |
deprecated, and will be removed in v1.0.</li> |
1312 | 1369 |
</ul> |
1313 | 1370 |
<h2 id="013-2024-07-28">0.1.3 (2024-07-28)<a class="headerlink" href="#013-2024-07-28" title="Permanent link">¶</a></h2> |
1314 |
-<h3 id="fixed_2">Fixed<a class="headerlink" href="#fixed_2" title="Permanent link">¶</a></h3> |
|
1371 |
+<h3 id="fixed_3">Fixed<a class="headerlink" href="#fixed_3" title="Permanent link">¶</a></h3> |
|
1315 | 1372 |
<ul> |
1316 | 1373 |
<li>Do not crash upon selecting a key on the command-line if there already |
1317 | 1374 |
is a key stored in the configuration. (<a href="https://github.com/the-13th-letter/derivepassphrase/5">#5</a>)</li> |
... | ... |
@@ -1325,7 +1382,7 @@ global settings file if no subsystem-specific configuration was found. |
1325 | 1382 |
<li>Fix typing issues according to <code>mypy</code>’s strict mode.</li> |
1326 | 1383 |
</ul> |
1327 | 1384 |
<h2 id="012-2024-07-22">0.1.2 (2024-07-22)<a class="headerlink" href="#012-2024-07-22" title="Permanent link">¶</a></h2> |
1328 |
-<h3 id="fixed_3">Fixed<a class="headerlink" href="#fixed_3" title="Permanent link">¶</a></h3> |
|
1385 |
+<h3 id="fixed_4">Fixed<a class="headerlink" href="#fixed_4" title="Permanent link">¶</a></h3> |
|
1329 | 1386 |
<ul> |
1330 | 1387 |
<li>Include and exclude the correct files in the <code>sdist</code> and <code>wheel</code> |
1331 | 1388 |
distributions. (Previously, <code>sdist</code> contained VCS artifacts, and |
... | ... |
@@ -1340,7 +1397,7 @@ global settings file if no subsystem-specific configuration was found. |
1340 | 1397 |
<a href="https://pypi.org/package/towncrier">towncrier</a>.</li> |
1341 | 1398 |
</ul> |
1342 | 1399 |
<h2 id="011-2024-07-14">0.1.1 (2024-07-14)<a class="headerlink" href="#011-2024-07-14" title="Permanent link">¶</a></h2> |
1343 |
-<h3 id="fixed_4">Fixed<a class="headerlink" href="#fixed_4" title="Permanent link">¶</a></h3> |
|
1400 |
+<h3 id="fixed_5">Fixed<a class="headerlink" href="#fixed_5" title="Permanent link">¶</a></h3> |
|
1344 | 1401 |
<ul> |
1345 | 1402 |
<li>Restore the <code>__version__</code> attribute in all top-level packages.</li> |
1346 | 1403 |
<li>Declare compatibility with Python 3.10 in project metadata, and include |
... | ... |
@@ -16,7 +16,7 @@ |
16 | 16 |
|
17 | 17 |
|
18 | 18 |
|
19 |
- <link rel="next" href="tutorials/basic-setup-password/"> |
|
19 |
+ <link rel="next" href="tutorials/basic-setup-passphrase/"> |
|
20 | 20 |
|
21 | 21 |
|
22 | 22 |
<link rel="icon" href="assets/images/favicon.png"> |
... | ... |
@@ -115,7 +115,7 @@ |
115 | 115 |
|
116 | 116 |
|
117 | 117 |
<li class="md-tabs__item"> |
118 |
- <a href="tutorials/basic-setup-password/" class="md-tabs__link"> |
|
118 |
+ <a href="tutorials/basic-setup-passphrase/" class="md-tabs__link"> |
|
119 | 119 |
|
120 | 120 |
|
121 | 121 |
|
... | ... |
@@ -396,7 +396,7 @@ |
396 | 396 |
|
397 | 397 |
|
398 | 398 |
<li class="md-nav__item"> |
399 |
- <a href="tutorials/basic-setup-password/" class="md-nav__link"> |
|
399 |
+ <a href="tutorials/basic-setup-passphrase/" class="md-nav__link"> |
|
400 | 400 |
|
401 | 401 |
|
402 | 402 |
<span class="md-ellipsis"> |
... | ... |
@@ -1002,7 +1002,7 @@ This choice can be made either specifically for the service (in this case, <code |
1002 | 1002 |
|
1003 | 1003 |
|
1004 | 1004 |
|
1005 |
- <a href="tutorials/basic-setup-password/" class="md-footer__link md-footer__link--next" aria-label="Next: Tutorial: setting up derivepassphrase vault for three accounts, with a master passphrase"> |
|
1005 |
+ <a href="tutorials/basic-setup-passphrase/" class="md-footer__link md-footer__link--next" aria-label="Next: Tutorial: setting up derivepassphrase vault for three accounts, with a master passphrase"> |
|
1006 | 1006 |
<div class="md-footer__title"> |
1007 | 1007 |
<span class="md-footer__direction"> |
1008 | 1008 |
Next |
... | ... |
@@ -115,7 +115,7 @@ |
115 | 115 |
|
116 | 116 |
|
117 | 117 |
<li class="md-tabs__item"> |
118 |
- <a href="../../tutorials/basic-setup-password/" class="md-tabs__link"> |
|
118 |
+ <a href="../../tutorials/basic-setup-passphrase/" class="md-tabs__link"> |
|
119 | 119 |
|
120 | 120 |
|
121 | 121 |
|
... | ... |
@@ -283,7 +283,7 @@ |
283 | 283 |
|
284 | 284 |
|
285 | 285 |
<li class="md-nav__item"> |
286 |
- <a href="../../tutorials/basic-setup-password/" class="md-nav__link"> |
|
286 |
+ <a href="../../tutorials/basic-setup-passphrase/" class="md-nav__link"> |
|
287 | 287 |
|
288 | 288 |
|
289 | 289 |
<span class="md-ellipsis"> |
... | ... |
@@ -115,7 +115,7 @@ |
115 | 115 |
|
116 | 116 |
|
117 | 117 |
<li class="md-tabs__item"> |
118 |
- <a href="../../tutorials/basic-setup-password/" class="md-tabs__link"> |
|
118 |
+ <a href="../../tutorials/basic-setup-passphrase/" class="md-tabs__link"> |
|
119 | 119 |
|
120 | 120 |
|
121 | 121 |
|
... | ... |
@@ -283,7 +283,7 @@ |
283 | 283 |
|
284 | 284 |
|
285 | 285 |
<li class="md-nav__item"> |
286 |
- <a href="../../tutorials/basic-setup-password/" class="md-nav__link"> |
|
286 |
+ <a href="../../tutorials/basic-setup-passphrase/" class="md-nav__link"> |
|
287 | 287 |
|
288 | 288 |
|
289 | 289 |
<span class="md-ellipsis"> |
... | ... |
@@ -115,7 +115,7 @@ |
115 | 115 |
|
116 | 116 |
|
117 | 117 |
<li class="md-tabs__item"> |
118 |
- <a href="../../tutorials/basic-setup-password/" class="md-tabs__link"> |
|
118 |
+ <a href="../../tutorials/basic-setup-passphrase/" class="md-tabs__link"> |
|
119 | 119 |
|
120 | 120 |
|
121 | 121 |
|
... | ... |
@@ -283,7 +283,7 @@ |
283 | 283 |
|
284 | 284 |
|
285 | 285 |
<li class="md-nav__item"> |
286 |
- <a href="../../tutorials/basic-setup-password/" class="md-nav__link"> |
|
286 |
+ <a href="../../tutorials/basic-setup-passphrase/" class="md-nav__link"> |
|
287 | 287 |
|
288 | 288 |
|
289 | 289 |
<span class="md-ellipsis"> |
... | ... |
@@ -115,7 +115,7 @@ |
115 | 115 |
|
116 | 116 |
|
117 | 117 |
<li class="md-tabs__item"> |
118 |
- <a href="../../tutorials/basic-setup-password/" class="md-tabs__link"> |
|
118 |
+ <a href="../../tutorials/basic-setup-passphrase/" class="md-tabs__link"> |
|
119 | 119 |
|
120 | 120 |
|
121 | 121 |
|
... | ... |
@@ -283,7 +283,7 @@ |
283 | 283 |
|
284 | 284 |
|
285 | 285 |
<li class="md-nav__item"> |
286 |
- <a href="../../tutorials/basic-setup-password/" class="md-nav__link"> |
|
286 |
+ <a href="../../tutorials/basic-setup-passphrase/" class="md-nav__link"> |
|
287 | 287 |
|
288 | 288 |
|
289 | 289 |
<span class="md-ellipsis"> |
... | ... |
@@ -115,7 +115,7 @@ |
115 | 115 |
|
116 | 116 |
|
117 | 117 |
<li class="md-tabs__item"> |
118 |
- <a href="../../tutorials/basic-setup-password/" class="md-tabs__link"> |
|
118 |
+ <a href="../../tutorials/basic-setup-passphrase/" class="md-tabs__link"> |
|
119 | 119 |
|
120 | 120 |
|
121 | 121 |
|
... | ... |
@@ -283,7 +283,7 @@ |
283 | 283 |
|
284 | 284 |
|
285 | 285 |
<li class="md-nav__item"> |
286 |
- <a href="../../tutorials/basic-setup-password/" class="md-nav__link"> |
|
286 |
+ <a href="../../tutorials/basic-setup-passphrase/" class="md-nav__link"> |
|
287 | 287 |
|
288 | 288 |
|
289 | 289 |
<span class="md-ellipsis"> |
... | ... |
@@ -115,7 +115,7 @@ |
115 | 115 |
|
116 | 116 |
|
117 | 117 |
<li class="md-tabs__item"> |
118 |
- <a href="../../tutorials/basic-setup-password/" class="md-tabs__link"> |
|
118 |
+ <a href="../../tutorials/basic-setup-passphrase/" class="md-tabs__link"> |
|
119 | 119 |
|
120 | 120 |
|
121 | 121 |
|
... | ... |
@@ -283,7 +283,7 @@ |
283 | 283 |
|
284 | 284 |
|
285 | 285 |
<li class="md-nav__item"> |
286 |
- <a href="../../tutorials/basic-setup-password/" class="md-nav__link"> |
|
286 |
+ <a href="../../tutorials/basic-setup-passphrase/" class="md-nav__link"> |
|
287 | 287 |
|
288 | 288 |
|
289 | 289 |
<span class="md-ellipsis"> |
... | ... |
@@ -115,7 +115,7 @@ |
115 | 115 |
|
116 | 116 |
|
117 | 117 |
<li class="md-tabs__item"> |
118 |
- <a href="../../tutorials/basic-setup-password/" class="md-tabs__link"> |
|
118 |
+ <a href="../../tutorials/basic-setup-passphrase/" class="md-tabs__link"> |
|
119 | 119 |
|
120 | 120 |
|
121 | 121 |
|
... | ... |
@@ -283,7 +283,7 @@ |
283 | 283 |
|
284 | 284 |
|
285 | 285 |
<li class="md-nav__item"> |
286 |
- <a href="../../tutorials/basic-setup-password/" class="md-nav__link"> |
|
286 |
+ <a href="../../tutorials/basic-setup-passphrase/" class="md-nav__link"> |
|
287 | 287 |
|
288 | 288 |
|
289 | 289 |
<span class="md-ellipsis"> |
... | ... |
@@ -115,7 +115,7 @@ |
115 | 115 |
|
116 | 116 |
|
117 | 117 |
<li class="md-tabs__item"> |
118 |
- <a href="../../tutorials/basic-setup-password/" class="md-tabs__link"> |
|
118 |
+ <a href="../../tutorials/basic-setup-passphrase/" class="md-tabs__link"> |
|
119 | 119 |
|
120 | 120 |
|
121 | 121 |
|
... | ... |
@@ -283,7 +283,7 @@ |
283 | 283 |
|
284 | 284 |
|
285 | 285 |
<li class="md-nav__item"> |
286 |
- <a href="../../tutorials/basic-setup-password/" class="md-nav__link"> |
|
286 |
+ <a href="../../tutorials/basic-setup-passphrase/" class="md-nav__link"> |
|
287 | 287 |
|
288 | 288 |
|
289 | 289 |
<span class="md-ellipsis"> |
... | ... |
@@ -115,7 +115,7 @@ |
115 | 115 |
|
116 | 116 |
|
117 | 117 |
<li class="md-tabs__item"> |
118 |
- <a href="../../tutorials/basic-setup-password/" class="md-tabs__link"> |
|
118 |
+ <a href="../../tutorials/basic-setup-passphrase/" class="md-tabs__link"> |
|
119 | 119 |
|
120 | 120 |
|
121 | 121 |
|
... | ... |
@@ -283,7 +283,7 @@ |
283 | 283 |
|
284 | 284 |
|
285 | 285 |
<li class="md-nav__item"> |
286 |
- <a href="../../tutorials/basic-setup-password/" class="md-nav__link"> |
|
286 |
+ <a href="../../tutorials/basic-setup-passphrase/" class="md-nav__link"> |
|
287 | 287 |
|
288 | 288 |
|
289 | 289 |
<span class="md-ellipsis"> |
... | ... |
@@ -115,7 +115,7 @@ |
115 | 115 |
|
116 | 116 |
|
117 | 117 |
<li class="md-tabs__item"> |
118 |
- <a href="../../tutorials/basic-setup-password/" class="md-tabs__link"> |
|
118 |
+ <a href="../../tutorials/basic-setup-passphrase/" class="md-tabs__link"> |
|
119 | 119 |
|
120 | 120 |
|
121 | 121 |
|
... | ... |
@@ -283,7 +283,7 @@ |
283 | 283 |
|
284 | 284 |
|
285 | 285 |
<li class="md-nav__item"> |
286 |
- <a href="../../tutorials/basic-setup-password/" class="md-nav__link"> |
|
286 |
+ <a href="../../tutorials/basic-setup-passphrase/" class="md-nav__link"> |
|
287 | 287 |
|
288 | 288 |
|
289 | 289 |
<span class="md-ellipsis"> |
... | ... |
@@ -15,7 +15,7 @@ |
15 | 15 |
<link rel="canonical" href="https://the13thletter.info/derivepassphrase/0.x/reference/"> |
16 | 16 |
|
17 | 17 |
|
18 |
- <link rel="prev" href="../tutorials/basic-setup-password/"> |
|
18 |
+ <link rel="prev" href="../tutorials/basic-setup-passphrase/"> |
|
19 | 19 |
|
20 | 20 |
|
21 | 21 |
<link rel="next" href="derivepassphrase.1/"> |
... | ... |
@@ -115,7 +115,7 @@ |
115 | 115 |
|
116 | 116 |
|
117 | 117 |
<li class="md-tabs__item"> |
118 |
- <a href="../tutorials/basic-setup-password/" class="md-tabs__link"> |
|
118 |
+ <a href="../tutorials/basic-setup-passphrase/" class="md-tabs__link"> |
|
119 | 119 |
|
120 | 120 |
|
121 | 121 |
|
... | ... |
@@ -283,7 +283,7 @@ |
283 | 283 |
|
284 | 284 |
|
285 | 285 |
<li class="md-nav__item"> |
286 |
- <a href="../tutorials/basic-setup-password/" class="md-nav__link"> |
|
286 |
+ <a href="../tutorials/basic-setup-passphrase/" class="md-nav__link"> |
|
287 | 287 |
|
288 | 288 |
|
289 | 289 |
<span class="md-ellipsis"> |
... | ... |
@@ -805,7 +805,7 @@ |
805 | 805 |
<nav class="md-footer__inner md-grid" aria-label="Footer" > |
806 | 806 |
|
807 | 807 |
|
808 |
- <a href="../tutorials/basic-setup-password/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Tutorial: setting up derivepassphrase vault for three accounts, with a master passphrase"> |
|
808 |
+ <a href="../tutorials/basic-setup-passphrase/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Tutorial: setting up derivepassphrase vault for three accounts, with a master passphrase"> |
|
809 | 809 |
<div class="md-footer__button md-icon"> |
810 | 810 |
|
811 | 811 |
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> |
... | ... |
@@ -2,62 +2,62 @@ |
2 | 2 |
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> |
3 | 3 |
<url> |
4 | 4 |
<loc>https://the13thletter.info/derivepassphrase/0.x/</loc> |
5 |
- <lastmod>2024-10-15</lastmod> |
|
5 |
+ <lastmod>2024-10-21</lastmod> |
|
6 | 6 |
</url> |
7 | 7 |
<url> |
8 | 8 |
<loc>https://the13thletter.info/derivepassphrase/0.x/_future/</loc> |
9 |
- <lastmod>2024-10-15</lastmod> |
|
9 |
+ <lastmod>2024-10-21</lastmod> |
|
10 | 10 |
</url> |
11 | 11 |
<url> |
12 | 12 |
<loc>https://the13thletter.info/derivepassphrase/0.x/changelog/</loc> |
13 |
- <lastmod>2024-10-15</lastmod> |
|
13 |
+ <lastmod>2024-10-21</lastmod> |
|
14 | 14 |
</url> |
15 | 15 |
<url> |
16 | 16 |
<loc>https://the13thletter.info/derivepassphrase/0.x/reference/</loc> |
17 |
- <lastmod>2024-10-15</lastmod> |
|
17 |
+ <lastmod>2024-10-21</lastmod> |
|
18 | 18 |
</url> |
19 | 19 |
<url> |
20 | 20 |
<loc>https://the13thletter.info/derivepassphrase/0.x/reference/derivepassphrase-export-vault.1/</loc> |
21 |
- <lastmod>2024-10-15</lastmod> |
|
21 |
+ <lastmod>2024-10-21</lastmod> |
|
22 | 22 |
</url> |
23 | 23 |
<url> |
24 | 24 |
<loc>https://the13thletter.info/derivepassphrase/0.x/reference/derivepassphrase-export.1/</loc> |
25 |
- <lastmod>2024-10-15</lastmod> |
|
25 |
+ <lastmod>2024-10-21</lastmod> |
|
26 | 26 |
</url> |
27 | 27 |
<url> |
28 | 28 |
<loc>https://the13thletter.info/derivepassphrase/0.x/reference/derivepassphrase-vault.1/</loc> |
29 |
- <lastmod>2024-10-15</lastmod> |
|
29 |
+ <lastmod>2024-10-21</lastmod> |
|
30 | 30 |
</url> |
31 | 31 |
<url> |
32 | 32 |
<loc>https://the13thletter.info/derivepassphrase/0.x/reference/derivepassphrase.1/</loc> |
33 |
- <lastmod>2024-10-15</lastmod> |
|
33 |
+ <lastmod>2024-10-21</lastmod> |
|
34 | 34 |
</url> |
35 | 35 |
<url> |
36 | 36 |
<loc>https://the13thletter.info/derivepassphrase/0.x/reference/derivepassphrase._types/</loc> |
37 |
- <lastmod>2024-10-15</lastmod> |
|
37 |
+ <lastmod>2024-10-21</lastmod> |
|
38 | 38 |
</url> |
39 | 39 |
<url> |
40 | 40 |
<loc>https://the13thletter.info/derivepassphrase/0.x/reference/derivepassphrase.cli/</loc> |
41 |
- <lastmod>2024-10-15</lastmod> |
|
41 |
+ <lastmod>2024-10-21</lastmod> |
|
42 | 42 |
</url> |
43 | 43 |
<url> |
44 | 44 |
<loc>https://the13thletter.info/derivepassphrase/0.x/reference/derivepassphrase.exporter/</loc> |
45 |
- <lastmod>2024-10-15</lastmod> |
|
45 |
+ <lastmod>2024-10-21</lastmod> |
|
46 | 46 |
</url> |
47 | 47 |
<url> |
48 | 48 |
<loc>https://the13thletter.info/derivepassphrase/0.x/reference/derivepassphrase.sequin/</loc> |
49 |
- <lastmod>2024-10-15</lastmod> |
|
49 |
+ <lastmod>2024-10-21</lastmod> |
|
50 | 50 |
</url> |
51 | 51 |
<url> |
52 | 52 |
<loc>https://the13thletter.info/derivepassphrase/0.x/reference/derivepassphrase.ssh_agent/</loc> |
53 |
- <lastmod>2024-10-15</lastmod> |
|
53 |
+ <lastmod>2024-10-21</lastmod> |
|
54 | 54 |
</url> |
55 | 55 |
<url> |
56 | 56 |
<loc>https://the13thletter.info/derivepassphrase/0.x/reference/derivepassphrase.vault/</loc> |
57 |
- <lastmod>2024-10-15</lastmod> |
|
57 |
+ <lastmod>2024-10-21</lastmod> |
|
58 | 58 |
</url> |
59 | 59 |
<url> |
60 |
- <loc>https://the13thletter.info/derivepassphrase/0.x/tutorials/basic-setup-password/</loc> |
|
61 |
- <lastmod>2024-10-15</lastmod> |
|
60 |
+ <loc>https://the13thletter.info/derivepassphrase/0.x/tutorials/basic-setup-passphrase/</loc> |
|
61 |
+ <lastmod>2024-10-21</lastmod> |
|
62 | 62 |
</url> |
63 | 63 |
</urlset> |
64 | 64 |
\ No newline at end of file |
... | ... |
@@ -12,7 +12,7 @@ |
12 | 12 |
<meta name="author" content="Marco Ricci"> |
13 | 13 |
|
14 | 14 |
|
15 |
- <link rel="canonical" href="https://the13thletter.info/derivepassphrase/0.x/tutorials/basic-setup-password/"> |
|
15 |
+ <link rel="canonical" href="https://the13thletter.info/derivepassphrase/0.x/tutorials/basic-setup-passphrase/"> |
|
16 | 16 |
|
17 | 17 |
|
18 | 18 |
<link rel="prev" href="../.."> |
... | ... |
@@ -963,7 +963,7 @@ |
963 | 963 |
|
964 | 964 |
|
965 | 965 |
|
966 |
- <a href="https://github.com/the-13th-letter/derivepassphrase/raw/master/docs/tutorials/basic-setup-password.md" title="View source of this page" class="md-content__button md-icon"> |
|
966 |
+ <a href="https://github.com/the-13th-letter/derivepassphrase/raw/master/docs/tutorials/basic-setup-passphrase.md" title="View source of this page" class="md-content__button md-icon"> |
|
967 | 967 |
|
968 | 968 |
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> |
969 | 969 |
</a> |
... | ... |
@@ -983,7 +983,7 @@ We will assume the following three services with the following passphrase polici |
983 | 983 |
<li>between 12 and 20 characters</li> |
984 | 984 |
<li>no spaces</li> |
985 | 985 |
<li>1 upper case letter, 1 lower case letter, 1 digit</li> |
986 |
-<li>no character immediately repeated more than 3 times</li> |
|
986 |
+<li>no character may appear 3 times (or more) in a row</li> |
|
987 | 987 |
</ul> |
988 | 988 |
</li> |
989 | 989 |
<li> |
... | ... |
@@ -1009,22 +1009,39 @@ We will assume the following three services with the following passphrase polici |
1009 | 1009 |
</ul> |
1010 | 1010 |
</div> |
1011 | 1011 |
<h2 id="installing-derivepassphrase">Installing <code>derivepassphrase</code><a class="headerlink" href="#installing-derivepassphrase" title="Permanent link">¶</a></h2> |
1012 |
-<p>Install <code>pipx</code>:</p> |
|
1013 |
-<div class="highlight"><pre><span></span><code><span class="gp">$ </span><span class="nb">cd</span><span class="w"> </span>~ |
|
1014 |
-<span class="gp">$ </span>python3<span class="w"> </span>-m<span class="w"> </span>venv<span class="w"> </span>.venv |
|
1015 |
-<span class="gp">$ </span>.<span class="w"> </span>.venv/bin/activate |
|
1016 |
-<span class="gp">$ </span>pip<span class="w"> </span>install<span class="w"> </span>pipx |
|
1012 |
+<p>You will need Python 3, and a package installer such as <code>pip</code> (bundled with Python), <code>pipx</code> or similar.</p> |
|
1013 |
+<details class="info"> |
|
1014 |
+<summary>Info: Current supported Python versions</summary> |
|
1015 |
+<p><img alt="See PyPI." src="https://img.shields.io/pypi/pyversions/derivepassphrase.svg" /></p> |
|
1016 |
+</details> |
|
1017 |
+<hr /> |
|
1018 |
+<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">pip</label><label for="__tabbed_1_2">pipx</label></div> |
|
1019 |
+<div class="tabbed-content"> |
|
1020 |
+<div class="tabbed-block"> |
|
1021 |
+<p>With <code>pip</code>, using a “virtual enviroment” at <code>~/.venv</code> to avoid clobbering our system configuration:</p> |
|
1022 |
+<div class="highlight"><pre><span></span><code><span class="gp">$ </span>python3<span class="w"> </span>-m<span class="w"> </span>venv<span class="w"> </span>~/.venv |
|
1023 |
+<span class="gp">$ </span>.<span class="w"> </span>~/.venv/bin/activate |
|
1024 |
+<span class="gp">$ </span>pip<span class="w"> </span>install<span class="w"> </span>derivepassphrase |
|
1017 | 1025 |
</code></pre></div> |
1018 |
-<p>Install <code>derivepassphrase</code>:</p> |
|
1026 |
+</div> |
|
1027 |
+<div class="tabbed-block"> |
|
1019 | 1028 |
<div class="highlight"><pre><span></span><code><span class="gp">$ </span>pipx<span class="w"> </span>install<span class="w"> </span>derivepassphrase |
1020 | 1029 |
</code></pre></div> |
1030 |
+</div> |
|
1031 |
+</div> |
|
1032 |
+</div> |
|
1033 |
+<hr /> |
|
1021 | 1034 |
<p>Check that the installation was successful.</p> |
1022 | 1035 |
<div class="highlight"><pre><span></span><code><span class="gp">$ </span>devirepassphrase<span class="w"> </span>--version |
1023 |
-<span class="go">derivepassphrase, version 0.2.0</span> |
|
1036 |
+<span class="go">derivepassphrase, version 0.3.0</span> |
|
1024 | 1037 |
</code></pre></div> |
1025 | 1038 |
<p>(…or similar output.)</p> |
1039 |
+<details class="info"> |
|
1040 |
+<summary>Info: Current <code>derivepassphrase</code> version</summary> |
|
1041 |
+<p><img alt="See PyPI." src="https://img.shields.io/pypi/v/derivepassphrase.svg?label=derivepassphrase" /></p> |
|
1042 |
+</details> |
|
1026 | 1043 |
<h2 id="choosing-a-master-passphrase">Choosing a master passphrase<a class="headerlink" href="#choosing-a-master-passphrase" title="Permanent link">¶</a></h2> |
1027 |
-<p><code>derivepassphrase</code> uses a master passphrase <code>MP</code>, and derives all other passphrases <code>P</code> from <code>MP</code>. |
|
1044 |
+<p><code>derivepassphrase</code> uses a master passphrase <var>MP</var>, and derives all other passphrases <var>P</var> from <var>MP</var>. |
|
1028 | 1045 |
We shall choose the master passphrase: <code>I am an insecure master passphrase, but easy to type.</code></p> |
1029 | 1046 |
<h2 id="setting-up-the-email-account">Setting up the email account<a class="headerlink" href="#setting-up-the-email-account" title="Permanent link">¶</a></h2> |
1030 | 1047 |
<p>In <code>derivepassphrase</code>, each passphrase configuration contains a <em>service name</em>, which is how <code>derivepassphrase</code> distinguishes between configurations. |
... | ... |
@@ -1032,15 +1049,48 @@ This service name can be chosen freely, but the resulting passphrase depends on |
1032 | 1049 |
For our email account, we choose the straightforward service name <code>email</code>.</p> |
1033 | 1050 |
<p>We need to translate the passphrase policy into options for <code>derivepassphrase</code>:</p> |
1034 | 1051 |
<ul> |
1035 |
-<li>A policy “(at least) <code>n</code> upper case letters” translates to the option <code>--lower n</code>, for any <code>n</code> greater than 0. |
|
1036 |
- Lower case letters (<code>--upper</code>), digits (<code>--number</code>), symbols (<code>--symbol</code>), spaces (<code>--space</code>) and dashes (<code>--dash</code>) work similarly.</li> |
|
1037 |
-<li>A policy “spaces <em>forbidden</em>” translates to the option <code>--space 0</code>. |
|
1052 |
+<li>A policy “(at least) <var>n</var> lower case letters” translates to the option <code>-<span/>-lower <var>n</var></code>, for any <var>n</var> > 0. |
|
1053 |
+ Upper case letters (<code>--upper</code>), digits (<code>--number</code>), symbols (<code>--symbol</code>), spaces (<code>--space</code>) and dashes (<code>--dash</code>) work similarly.</li> |
|
1054 |
+<li>A policy “spaces <em>forbidden</em>” translates to the option <code>--space 0</code>. |
|
1038 | 1055 |
Again, other character classes behave similarly.</li> |
1039 |
-<li>A policy “no character immediately repeated more than <code>n</code> times” translates to the option <code>--repeat n</code>, for any <code>n</code> greater than 0. |
|
1040 |
- In particular, <code>--repeat 1</code> means no character may be immediately repeated.</li> |
|
1041 |
-<li>A policy “between <code>n</code> and <code>m</code> characters long” translates to <code>--length k</code>, for any <code>k</code> between <code>n</code> and <code>m</code> which you choose. |
|
1042 |
- (<code>derivepassphrase</code> does not explicitly choose a passphrase length for you.)</li> |
|
1056 |
+<li>A policy “no character may appear <var>n</var> times (or more) in a row” translates to the option <code>-<span/>-repeat (<var>n</var> − 1)</code>, for any <var>n</var> > 1. |
|
1057 |
+ In particular, <code>--repeat 1</code> means no character may be immediately repeated. |
|
1058 |
+ (See the mnemonic below.)</li> |
|
1059 |
+<li>A policy “between <var>n</var> and <var>m</var> characters long” translates to <code>-<span/>-length <var>k</var></code>, for any choice of <var>k</var> which satisfies <var>n</var> ≤ <var>k</var> ≤ <var>m</var>. |
|
1060 |
+ (<code>derivepassphrase</code> does not explicitly choose <var>k</var> for you.)</li> |
|
1043 | 1061 |
</ul> |
1062 |
+<details class="note"> |
|
1063 |
+<summary>Mnemonic: the <code>--repeat</code> option</summary> |
|
1064 |
+<p>The <code>--repeat</code> option denotes the <em>total</em> number of consecutive occurrences of the same character. |
|
1065 |
+Or alternatively: if you request <code>-<span/>-repeat <var>n</var></code>, then <code>derivepassphrase</code> will <em>avoid</em> deriving any passphrase that repeats a character <em>another <var>n</var> times</em>.</p> |
|
1066 |
+<p>Examples:</p> |
|
1067 |
+<table> |
|
1068 |
+<thead> |
|
1069 |
+<tr> |
|
1070 |
+<th style="text-align: left;">option</th> |
|
1071 |
+<th style="text-align: left;">valid examples</th> |
|
1072 |
+<th style="text-align: left;">invalid examples</th> |
|
1073 |
+</tr> |
|
1074 |
+</thead> |
|
1075 |
+<tbody> |
|
1076 |
+<tr> |
|
1077 |
+<td style="text-align: left;"><code>--repeat 1</code></td> |
|
1078 |
+<td style="text-align: left;"><code>abc</code>, <code>aba</code>, <code>abcabc</code></td> |
|
1079 |
+<td style="text-align: left;"><code>aa</code>, <code>abba</code>, <code>ababb</code></td> |
|
1080 |
+</tr> |
|
1081 |
+<tr> |
|
1082 |
+<td style="text-align: left;"><code>--repeat 4</code></td> |
|
1083 |
+<td style="text-align: left;"><code>122333111123</code>, <code>4444</code></td> |
|
1084 |
+<td style="text-align: left;"><code>55555</code>, <code>67788888999996</code></td> |
|
1085 |
+</tr> |
|
1086 |
+<tr> |
|
1087 |
+<td style="text-align: left;"><code>--repeat 11</code></td> |
|
1088 |
+<td style="text-align: left;"><code>01234567899999999999</code></td> |
|
1089 |
+<td style="text-align: left;"><code>$$$$$$$$$$$$$$$$$$$$$$$</code></td> |
|
1090 |
+</tr> |
|
1091 |
+</tbody> |
|
1092 |
+</table> |
|
1093 |
+</details> |
|
1044 | 1094 |
<p>For the <code>email</code> service, we choose passphrase length 12. |
1045 | 1095 |
This leads to the command-line options <code>--length 12 --space 0 --upper 1 --lower 1 --number 1 --repeat 3</code>. |
1046 | 1096 |
Because we are using a master passphrase, we also need the <code>-p</code> option.</p> |
... | ... |
@@ -1069,7 +1119,7 @@ Because we are using a master passphrase, we also need the <code>-p</code> optio |
1069 | 1119 |
<div class="admonition warning"> |
1070 | 1120 |
<p class="admonition-title">Warning: <code>-p</code> and <code>--config</code></p> |
1071 | 1121 |
<p>Do <strong>not</strong> use the <code>-p</code> and the <code>--config</code> options together to store the master passphrase! |
1072 |
-The configuration is assumed to <em>not contain sensitive contents</em> and is <em>not encrypted</em>, so your master passphrase is then visible to <em>anyone</em> with appropriate priviledges!</p> |
|
1122 |
+The configuration is assumed to <em>not contain sensitive contents</em> and is <em>not encrypted</em>, so your master passphrase is then visible to <em>anyone</em> with appropriate privileges!</p> |
|
1073 | 1123 |
</div> |
1074 | 1124 |
<p>Check that the settings are stored correctly:</p> |
1075 | 1125 |
<div class="highlight"><pre><span></span><code><span class="gp">$ </span>derivepassphrase<span class="w"> </span>vault<span class="w"> </span>--export<span class="w"> </span>- |
1076 | 1126 |